이동 표준 편차(Moving Standard Deviation, MSTD)
이 정보는 CompactLogix 5370, ControlLogix 5570, CompactGuardLogix 5370, GuardLogix 5570, CompactGuardLogix 5380, CompactLogix 5380, ControlLogix 5580, GuardLogix 5580 및 ControlLogix 5590 컨트롤러에 적용됩니다.
이동 표준 편차(Moving Standard Deviation, MSTD) 명령어는 입력 신호에 대한 이동 표준 편차와 평균값을 계산합니다.
사용 가능한 언어
래더 다이어그램
이 명령어는 래더 다이어그램 로직에서는 사용할 수 없습니다.
펑션 블록

구조화된 텍스트
MSTD(MSTD_tag, StorageArray);
피연산자
펑션 블록
피연산자 | 유형 | 형식 | 설명 |
block tag | MOVING_STD_DEV | 구조 | MSTD 구조 |
StorageArray | REAL | 배열 | In 샘플을 유지합니다. 이 배열은 NumberOfSamples 이상이어야 합니다. |
MOVING_STD_DEV 구조
입력 매개 변수 | 데이터 유형 | 설명 |
EnableIn | BOOL | 활성화 입력. 선택하지 않으면 명령이 실행되지 않고 출력이 업데이트되지 않습니다. 기본값은 설정 상태입니다. |
입력 | REAL | 명령어의 아날로그 신호 입력. 유효값 = 모든 부동 소수점 수 기본값 = 0.0 |
InFault | BOOL | 입력에 불량 상태 표시기. In을 아날로그 입력에서 읽어오는 경우 InFault는 일반적으로 아날로그 입력에 대한 폴트 상태에 의해 제어됩니다. 설정된 경우, InFault는 입력 신호에 에러가 있음을 나타내며, 이 명령어가 Status에 해당 비트를 설정하고 현재 값에서 Out과 Average를 유지합니다. InFault가 설정 상태에서 해제 상태로 전환되면 명령어는 평균 알고리즘을 초기화하고 계속 실행합니다. 기본값은 해제 상태입니다. |
초기화 | BOOL | 이 명령어에 대한 입력을 초기화합니다. 설정된 경우, 이 명령어는 InFault가 설정된 경우(이 경우, 이 명령어는 Out과 Average 둘 다 현재 값에서 유지함)를 제외하고는 Out = 0.0과 Average = In을 설정합니다. Initialize가 설정 상태에서 해제 상태로 전환되는 경우 이 명령어는 표준 편차 알고리즘을 초기화하고 계속 실행합니다. 기본값은 해제 상태입니다. |
SampleEnable | BOOL | In 샘플 획득 활성화. 설정된 경우, 이 명령어는 In의 값을 저장 배열에 넣고 새 Out 및 Average 값을 계산합니다. SampleEnable이 해제되고 Initialize가 해제되면, 이 명령어는 Out 및 Average를 현재 값에서 유지합니다. 기본값은 해제 상태입니다. |
NumberOfSamples | DINT | 계산에 사용될 샘플 수. 이 값이 유효하지 않으면 이 명령어는 Status에 해당 비트를 설정하고 Out 및 Average를 현재 값에서 유지합니다. NumberOfSamples가 다시 유효해지면, 명령어는 표준 편차 알고리즘을 초기화하고 계속 실행합니다. Valid = 1~저장 배열의 크기 기본값 = 1 |
출력 매개 변수 | 데이터 유형 | 설명 |
EnableOut | BOOL | 명령어의 활성화 여부를 나타냅니다. Out가 오버플로되면 해제됨 |
Out | REAL | 알고리즘의 계산된 출력. |
평균 | REAL | 알고리즘의 계산된 평균값. |
상태 | DINT | 펑션 블록의 상태. |
InstructFault (Status.0) | BOOL | 명령어에서 다음 실행 에러 중 하나가 감지됩니다. 마이너 또는 메이저 컨트롤러 에러가 아닙니다. 나머지 상태 비트를 확인하여 발생한 에러를 판단합니다. |
InFaulted (Status.1) | BOOL | In의 상태가 좋지 않습니다. InFault가 설정됨. |
NumberOfSampInv (Status.2) | BOOL | NumberOfSamples가 유효하지 않거나 배열 크기와 호환되지 않습니다. |
구조화된 텍스트
피연산자 | 유형 | 형식 | 설명 |
block tag | MOVING_STD_DEV | 구조 | MSTD 구조 |
StorageArray | REAL | 배열 | In 샘플을 유지합니다. 이 배열은 NumberOfSamples 이상이어야 합니다. |
스트럭처드 텍스트 내 식의 구문에 대한 자세한 내용은 구조화된 텍스트 구문 항목을 참조하십시오.
설명
MSTD 명령어는 모든 입력 큐 길이를 지원합니다. SampleEnable이 설정되면 스캔할 때마다 명령어는 In의 값을 저장소 배열에 입력합니다. 저장소 배열이 가득 차면 In의 각 새 값으로 인해 가장 오래된 항목이 삭제됩니다.
MSTD 명령어는 출력에 대해 이러한 등식을 사용합니다.
조건 | Action |
|---|---|
평균 | ![]() |
Out | ![]() |
명령어는 유효하지 않은 In 값(NAN 또는
INF)을 저장 배열에 배치하지 않습니다. In이 유효하지 않으면 명령어는 Out = In을 설정하고 Average = In을 설정하며, 이 보고가 활성화된 경우 오버플로 마이너 폴트를 기록합니다. In이 유효해지면 이 명령어는 표준 편차 알고리즘을 초기화하고 계속 실행합니다.
INF)을 저장 배열에 배치하지 않습니다. In이 유효하지 않으면 명령어는 Out = In을 설정하고 Average = In을 설정하며, 이 보고가 활성화된 경우 오버플로 마이너 폴트를 기록합니다. In이 유효해지면 이 명령어는 표준 편차 알고리즘을 초기화하고 계속 실행합니다.NumberOfSamples 파라미터에 대한 런타임 변경을 수행할 수 있습니다. 값을 높이면 이 명령어는 현재 샘플 크기에서 새 샘플 크기까지 증분식으로 새 데이터를 처리합니다. 값을 낮추면 이 명령어는 샘플 배열의 시작부터 새 NumberOfSamples 값까지 표준 편차를 다시 계산합니다.
표준 편차 알고리즘 초기화
명령어 최초 스캔 및 명령어 최초 실행 등 특정 조건에서는 명령어를 통해 표준 편차 알고리즘을 초기화해야 합니다. 이러한 상황이 발생할 경우 이 명령어는 StorageArray가 비어 있다고 간주하고 1부터 NumberOfSamples 값까지 증분식으로 샘플을 처리합니다. 예:

연산 상태 플래그에 영향
아니요
주 폴트/부 폴트
이 명령어에만 해당되는 것은 없습니다. 피연산자 관련 폴트에 대해서는 공통 특성 항목을 참조하십시오.
실행
펑션 블록
조건/상태 | 수행한 작업 |
사전 스캔 | EnableIn 및 EnableOut 비트가 거짓으로 해제됩니다. |
Tag.EnableIn이 거짓임 | EnableIn 및 EnableOut 비트가 거짓으로 해제됩니다. |
Tag.EnableIn이 참임 | EnableIn 및 EnableOut 비트가 참으로 설정됩니다. 명령어가 실행됩니다. |
명령어 최초 실행 | 이전 Output과 Average를 초기화합니다. |
명령어 최초 스캔 | Out을 0으로 초기화합니다. Average를 Input으로 초기화합니다. 명령어 알고리즘을 초기화합니다. |
사후 스캔 | EnableIn 및 EnableOut 비트가 거짓으로 해제됩니다. |
구조화된 텍스트
구조화된 텍스트에서 정상 스캔 중에 EnableIn은 항상 참입니다. 명령어가 로직에서 활성화한 제어 경로에 있는 경우 해당 명령어가 실행됩니다.
조건/상태 | 수행한 작업 |
사전 스캔 | 펑션 블록 표의 사전 스캔을 참조하십시오. |
정상 실행 | 펑션 블록 표에서 Tag.EnableIn이 참임을 참조하십시오. |
사후 스캔 | 펑션 블록 표에서 사후 스캔을 참조하십시오. |
예
매 스캔마다 SampleEnable이 설정되면 이 명령어는 In 값을 저장 배열에 넣고, 저장 배열 내 값의 표준 편차를 계산하여 그 결과를 Out에 넣습니다. Out은 function_block_C의 입력 파라미터가 됩니다.
펑션 블록

구조화된 텍스트
MSTD_01.In := input_value;
MSTD_01.SampleEnable := enable_sample;
MSTD(MSTD_01,storage);
deviation := MSTD_01.Out;
의견을 작성 부탁드립니다.

