이동 평균(Moving Average, MAVE)
이 정보는 CompactLogix 5370, ControlLogix 5570, CompactGuardLogix 5370, GuardLogix 5570, CompactGuardLogix 5380, CompactLogix 5380, ControlLogix 5580, GuardLogix 5580 및 ControlLogix 5590 컨트롤러에 적용됩니다.
이동 평균(Moving Average, MAVE) 명령어는 In 신호의 시간 평균 값을 계산합니다. 이 명령어는 선택적으로 사용자 지정 가중치를 지원합니다.
사용 가능한 언어
래더 다이어그램
이 명령어는 래더 다이어그램 로직에서는 사용할 수 없습니다.
펑션 블록

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

연산 상태 플래그에 영향
아니요
주 폴트/부 폴트
이 명령어에만 해당되는 것은 없습니다. 피연산자 관련 폴트에 대해서는 공통 특성 항목을 참조하십시오.
실행
펑션 블록
조건/상태 | 수행한 작업 |
사전 스캔 | EnableIn 및 EnableOut 비트가 거짓으로 해제됩니다. |
Tag.EnableIn이 거짓임 | EnableIn 및 EnableOut 비트가 거짓으로 해제됩니다. 다음에 이 명령어가 실행될 때 저장 배열의 재초기화를 요청합니다. |
Tag.EnableIn이 참임 | EnableIn 및 EnableOut 비트가 참으로 설정됩니다. 명령어가 실행됩니다. |
명령어 최초 실행 | N/A |
명령어 최초 스캔 | Out을 0으로 초기화합니다. |
사후 스캔 | EnableIn 및 EnableOut 비트가 거짓으로 해제됩니다. |
구조화된 텍스트
구조화된 텍스트에서 정상 스캔 중에 EnableIn은 항상 참입니다. 명령어가 로직에서 활성화한 제어 경로에 있는 경우 해당 명령어가 실행됩니다.
조건/상태 | 수행한 작업 |
사전 스캔 | 펑션 블록 표의 사전 스캔을 참조하십시오. |
정상 실행 | 펑션 블록 표에서 Tag.EnableIn이 참임을 참조하십시오. |
사후 스캔 | 펑션 블록 표에서 사후 스캔을 참조하십시오. |
예
각 스캔마다 이 명령어는 저장 배열에 입력 값을 넣습니다. 명령어는 배열 가중의 가중 값을 선택적으로 사용하여 배열 저장소의 값에 대한 평균값을 계산한 후 결과를 Out에 저장합니다.
펑션 블록

구조화된 텍스트
MAVE_01.In := input_value;
MAVE(MAVE_01,storage,weight);
output_value := MAVE_01.Out;
의견을 작성 부탁드립니다.

