조건부 종료
현재 프로그램 위치에서 프로그램 코드의 현재 스캔을 종료합니다.
입력
TRUE이면 명령 실행
출력
명령이 성공적으로 처리되면 TRUE로 설정
실행 조건이 TRUE로 전환되면 프로그램은 현재 스캔을 종료하고 I/O 처리를 시작합니다. 그런 다음 프로그램은 첫 번째 어드레스로 돌아갑니다.
서브루틴 프로그램 또는 인터럽트 프로그램과 같은 하위 프로그램에서는 이 명령을 수행할 수 없습니다. 주 프로그램 영역에서만 FP_END_SCAN 명령을 사용합니다.
주 프로그램 내에서 FP_END_SCAN 명령을 두 개 이상 사용할 수 있습니다.
아래 나열된 명령 중 하나를 사용하면 실행 조건(트리거)의 상승 엣지를 감지하여 실행되므로, 주의해야 합니다.
DF(상승 엣지 차등)
CT(카운터)의 카운트 입력
F118_UDC(업/다운 카운터)의 카운트 입력
SR(시프트 레지스터)의 시프트 입력
F119_LRSR(좌/우 시프트 레지스터)의 시프트 입력
P 명령의 차등 실행(P와 숫자로 지정(예: P20_ADD))
이 펑션 프로그램 시 사용한 모든 입력과 출력 변수는 POU 헤더에서 선언되었습니다. 모든 프로그래밍 언어에 같은 POU 헤더를 사용합니다.
VAR
bEndCurrentScan: BOOL:=FALSE;
iCounterExecuted: INT:=0;
iCounterNotExecuted: INT:=0;
END_VAR
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 4 ;
NETWORK_BODY
B(B_F,FP_INC!,,20,0,26,4,,?DEN?Dd?Ad?AENO);
B(B_VARIN,,iCounterExecuted,18,2,20,4,);
L(1,2,20,2);
L(1,0,1,4);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 3 ;
NETWORK_BODY
B(B_F,FP_END_SCAN!,,19,0,27,3,,?DEN?AENO);
B(B_CONTACT,,bEndCurrentScan,6,1,8,3,);
L(1,2,6,2);
L(8,2,19,2);
L(1,0,1,3);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 4 ;
NETWORK_BODY
B(B_F,FP_INC!,,20,0,26,4,,?DEN?Dd?Ad?AENO);
B(B_VARIN,,iCounterNotExecuted,18,2,20,4,);
L(1,2,20,2);
L(1,0,1,4);
END_NETWORK_BODY
END_NET_WORK
END_BODY
FP_INC(d := iCounterExecuted);
If (bEndCurrentScan) then
FP_END_SCAN();
End_if;
FP_INC(d := iCounterNotExecuted);