위치 비례(POSP)
이 정보는
CompactLogix
5370, ControlLogix
5570, Compact GuardLogix
5370, GuardLogix
5570, Compact GuardLogix
5380, CompactLogix
5380, ControlLogix
5580, GuardLogix
5580 및 ControlLogix 5590 컨트롤러에 적용됩니다.위치 비례(POSP) 명령어는 사용자 정의 주기 시간 동안 열기 또는 닫기 접점에 펄스를 인가하며, 펄스 폭은 원하는 위치와 실제 위치의 차이에 비례합니다. 이를 통해 장치를 열거나 닫습니다.
사용 가능한 언어
래더 다이어그램
이 명령어는 래더 다이어그램 로직에서는 사용할 수 없습니다.
펑션 블록

구조화된 텍스트
POSP(POSP_tag)
피연산자
펑션 블록
피연산자 | 유형 | 형식 | 설명 |
POSP 태그 | POSITION_PROP | 구조 | POSP 구조 |
구조화된 텍스트
피연산자 | 유형 | 형식 | 설명 |
block tag | POSITION_PROP | 구조 | POSP 구조 |
스트럭쳐드 텍스트 내 식의 구문에 대한 자세한 내용은
스트럭쳐드 텍스트 구문
을 참조하십시오.POSITION_PROP 구조
입력 매개 변수 | 데이터 유형 | 설명 |
|---|---|---|
EnableIn | BOOL | 활성화 입력. 거짓이면 명령어가 실행되지 않고 출력이 업데이트되지 않습니다. 기본값은 참입니다. |
SP | REAL | 설정값. 원하는 위치 값입니다. 이 값은 Position과 동일한 엔지니어링 단위를 사용해야 합니다. 유효값 = 모든 부동 소수점 수 기본값 = 0.0 |
Position | REAL | 위치 피드백. 이 아날로그 입력은 장치의 위치 피드백에서 얻습니다. 유효값 = 모든 부동 소수점 수 기본값 = 0.0 |
OpenedFB | BOOL | 열림 피드백. 이 입력은 장치가 완전히 열려 있을 때 보내는 신호입니다. 참이면 열기 출력이 켜지지 않습니다. 기본값은 거짓입니다. |
ClosedFB | BOOL | 닫힘 피드백. 이 입력은 장치가 완전히 닫혀 있을 때 보내는 신호입니다. 참이면 닫기 출력이 켜지지 않습니다. 기본값은 거짓입니다. |
PositionEUMax | REAL | Position 및 SP의 최대 스케일링 값. 유효값 = 모든 부동 소수점 수 기본값 = 100.0 |
PositionEUMin | REAL | Position 및 SP의 최소 스케일링 값. 유효값 = 모든 부동 소수점 수 기본값 = 0.0 |
CycleTime | REAL | 출력 펄스 기간(초). 값이 0이면 OpenOut 및 CloseOut이 모두 해제됩니다. 이 값이 유효하지 않다면 명령어는 0이라는 값을 가지며 Status에서 적절한 비트를 설정합니다. 유효값 = 임의의 양의 부동 소수점 수. 기본값 = 0.0 |
OpenRate | REAL | 장치의 열기 속도(%/초). 값이 0이면 OpenOut이 해제됩니다. 이 값이 유효하지 않다면 명령어는 0이라는 값을 가지며 Status에서 적절한 비트를 설정합니다. 유효값 = 임의의 양의 부동 소수점 수. 기본값 = 0.0 |
CloseRate | REAL | 장치의 닫기 속도(%/초). 값이 0이면 CloseOut이 해제됩니다. 이 값이 유효하지 않다면 명령어는 0이라는 값을 가지며 Status에서 적절한 비트를 설정합니다. 유효값 = 임의의 양의 부동 소수점 수. 기본값 = 0.0 |
MaxOnTime | REAL | 펄스가 열기 또는 닫기 상태에 있을 수 있는 최대 시간(초). OpenTime 또는 CloseTime이 이 값보다 큰 것으로 계산되는 경우 이 값으로 제한됩니다. 이 값이 유효하지 않은 경우 명령어는 CycleTime 값을 가정하고 Status에 적절한 비트를 설정합니다. 유효값 = 0.0~CycleTime 기본값 = CycleTime |
MinOnTime | REAL | 펄스가 열기 또는 닫기 상태에 있을 수 있는 최소 시간(초). OpenTime 또는 CloseTime이 이 값보다 작은 것으로 계산되는 경우 0으로 설정됩니다. 이 값이 유효하지 않다면 명령어는 0이라는 값을 가지며 Status에서 적절한 비트를 설정합니다. 유효값 = 0.0~MaxOnTime 기본값 = 0.0 |
Deadtime | REAL | 장치의 마찰을 극복하기 위한 추가 펄스 시간(초). 장치 방향이 바뀌거나 정지될 때 OpenTime 또는 CloseTime에 데드타임이 추가됩니다. 이 값이 유효하지 않으면 명령어는 Status에 적절한 비트를 설정하고 Deadtime = 0.0 값을 사용합니다. 유효값 = 0.0~MaxOnTime 기본값 = 0.0 |
출력 매개 변수 | 데이터 유형 | 설명 |
|---|---|---|
EnableOut | BOOL | 명령어의 활성화 여부를 나타냅니다. PositionPercent가 오버플로되는 경우 거짓으로 해제됩니다. |
OpenOut | BOOL | 이 출력 펄스를 생성하여 장치가 열립니다. |
CloseOut | BOOL | 이 출력 펄스를 생성하여 장치가 닫힙니다. |
PositionPercent | REAL | Position 범위 비율(%)로 표시되는 위치 피드백. |
SPPercent | REAL | Position 범위 비율(%)로 표시되는 설정값. |
OpenTime | REAL | 현재 주기에 대한 OpenOutput의 펄스 시간(초). |
CloseTime | REAL | 현재 주기에 대한 CloseOutput의 펄스 시간(초) |
Status | DINT | 펑션 블록의 상태. |
InstructFault (Status.0) | BOOL | 명령어에서 다음 실행 에러 중 하나가 감지됩니다. 마이너 또는 메이저 컨트롤러 에러가 아닙니다. 나머지 상태 비트를 확인하여 발생한 에러를 판단합니다. |
CycleTimeInv (Status.1) | BOOL | 유효하지 않은 CycleTime 값. 명령어에서 0을 사용합니다. |
OpenRateInv (Status.2) | BOOL | 유효하지 않은 OpenRate 값. 명령어에서 0을 사용합니다. |
CloseRateInv (Status.3) | BOOL | 유효하지 않은 CloseRate 값. 명령어에서 0을 사용합니다. |
MaxOnTimeInv (Status.4) | BOOL | 유효하지 않은 MaxOnTime 값. 명령어에서 CycleTime 값을 사용합니다. |
MinOnTimeInv (Status.5) | BOOL | 유효하지 않은 MinOnTime 값. 명령어에서 0을 사용합니다. |
DeadtimeInv (Status.6) | BOOL | 유효하지 않은 Deadtime 값. 명령어에서 0을 사용합니다. |
PositionPctInv (Status.7) | BOOL | 계산된 PositionPercent 값이 범위를 벗어났습니다. |
SPPercentInv (Status.8) | BOOL | 계산된 SPPercent 값이 범위를 벗어났습니다. |
PositionSpanInv (Status.9) | BOOL | PositionEUMax = PositionEUMin. |
설명
POSP 명령어에서는 보통 PID 명령어 출력으로부터 원하는 위치 설정값을 수신합니다.
위치 및 설정값 스케일링
PositionPercent 및 SPPercent 출력은 명령어가 실행될 때마다 업데이트됩니다. 이 값 중 하나라도 범위를 벗어나는 경우(0%보다 작거나 100%보다 큼) Status에 해당하는 비트가 설정되지만 값은 제한되지 않습니다. 명령어에서는 다음 공식을 사용하여 값이 범위 이내인지 계산합니다.

POSP 명령어에서 내부 주기 타이머를 사용하는 방법
명령어에서는 CycleTime을 사용하여 열기 및 닫기 출력 펄스의 지속 기간을 재계산하는 빈도를 결정합니다. 내부 타이머가 유지되고 DeltaT에 의해 업데이트됩니다. DeltaT는 명령어를 마지막으로 실행한 후 경과 시간입니다. 내부 타이머가 프로그래밍된 CycleTime과 같거나 이를 초과할 때마다(주기 시간이 만료됨) 열기 및 닫기 출력이 다시 계산됩니다.
언제든지 CycleTime을 변경할 수 있습니다.
CycleTime = 0인 경우 내부 타이머가 0으로 해제되고, OpenOut 및 CloseOut이 거짓으로 해제됩니다.
출력 펄스 생성
다음 다이어그램에서는 POSP 명령어의 세 가지 기본 상태를 보여줍니다.

열기 및 닫기 펄스 시간 계산
SP > 위치 피드백일 때마다 OpenOut이 펄스됩니다. 이 조건이 발생하는 경우 명령어에서는 CloseTime = 0으로 설정하고 OpenOut이 켜질 지속 기간이 다음과 같이 계산됩니다.

OpenTimen-1 < CycleTime이면 Deadtime을 OpenTime에 더합니다.
OpenTime > MaxOnTime이면 MaxOnTime으로 제한합니다.
OpenTime < MinOnTime이면 OpenTime = 0으로 설정합니다.
다음 조건 중 하나라도 존재하는 경우 OpenOut이 펄스되지 않고 OpenTime = 0입니다.
OpenFB가 참이거나 PositionPercent
100임
100임CycleTime = 0
OpenRate = 0
SPPercent가 유효하지 않음
SP < 위치 피드백일 때마다 CloseOut이 펄스됩니다. 이 조건이 발생하는 경우 명령어에서는 OpenTime = 0으로 설정하고 CloseOut이 켜질 지속 기간이 다음과 같이 계산됩니다.

CloseTimen-1 < CycleTime이면 Deadtime을 CloseTime에 더합니다.
CloseTime > MaxOnTime이면 MaxOnTime으로 제한합니다.
CloseTime < MinOnTime이면 CloseTime을 0으로 설정합니다.
다음 조건 중 하나라도 존재하는 경우 CloseOut이 펄스되지 않고 CloseTime이 0.0으로 해제됩니다.
ClosedFB가 참이거나 PositionPercent
0임
0임CycleTime = 0
CloseRate = 0
SPPercent가 유효하지 않음
SPPercent = PositionPercent인 경우 OpenOut 및 CloseOut이 펄스되지 않습니다. OpenTime 및 CloseTime이 모두 거짓으로 해제됩니다.
연산 상태 플래그에 영향
아니요
주 폴트/부 폴트
이 명령어에만 해당되는 것은 없습니다. 피연산자 관련 폴트에 대해서는 공통 속성 항목을 참조하십시오.
실행
펑션 블록
조건/상태 | 수행한 작업 |
|---|---|
사전 스캔 | EnableIn 및 EnableOut 비트가 거짓으로 해제됩니다. |
Tag.EnableIn이 거짓임 | EnableIn 및 EnableOut 비트가 거짓으로 해제됩니다. |
Tag.EnableIn이 참임 | EnableIn 및 EnableOut 비트가 참으로 설정됩니다. 명령어가 실행됩니다. |
명령어 최초 실행 | N/A |
명령어 최초 스캔 | OpenTime 및 CloseTime이 0.0으로 해제됩니다. |
사후 스캔 | EnableIn 및 EnableOut 비트가 거짓으로 해제됩니다. |
구조화된 텍스트
조건/상태 | 수행한 작업 |
|---|---|
사전 스캔 | 펑션 블록 표의 사전 스캔을 참조하십시오. |
정상 실행 | 펑션 블록 표에서 Tag.EnableIn이 참임을 참조하십시오. |
사후 스캔 | 펑션 블록 표에서 사후 스캔을 참조하십시오. |
예
예 1
이 예에서 POSP 명령어는 PIDE 명령어의 CVEU 출력을 기준으로 모터로 작동되는 밸브를 열거나 닫습니다. 실제 밸브 위치는 Position 입력으로 연결되고 밸브가 완전히 열렸거나 닫혔는지 나타내는 선택적 리미트 스위치는 OpenedFB 및 ClosedFB 입력으로 연결됩니다. OpenOut 및 CloseOut 출력은 모터로 작동하는 밸브의 열기 및 닫기 접점으로 연결됩니다.
펑션 블록

구조화된 텍스트
FlowController.PV := WaterFlowRate;
PIDE(FlowController);
FlowValve.SP := FlowController.CVEU;
FlowValve.Position := FlowValvePosition;
FlowValve.OpenedFB := FlowValveOpened;
FlowValve.ClosedFB := FlowValveClosed;
POSP(FlowValve);
OpenFlowValveContact := FlowValve.OpenOut;
CloseFlowValveContact := FlowValve.CloseOut;
의견을 작성 부탁드립니다.