셋 및 리셋 입력이 있는 릴레이 기능
KEEP은 셋 및 리셋 포인트가 있는 플립플롭 기능을 합니다.
SetTrigger가 TRUE로 전환하면 지정된 플래그가 TRUE로 전환하고 그 조건을 유지합니다. ResetTrigger가 TRUE로 전환하면 플래그가 FALSE로 전환합니다. 플래그의 TRUE 상태는 SetTrigger의 TRUE 또는 FALSE 상태에 관계 없이 ResetTrigger가 TRUE로 전환할 때까지 유지됩니다. SetTrigger와 ResetTrigger가 동시에 TRUE로 전환하는 경우에는 ResetTrigger가 우선합니다.
입력
Address를 TRUE로 전환합니다.
Address를 FALSE로 전환합니다.
출력
이 플래그의 상태(TRUE 또는 FALSE)가 유지됩니다.
이 펑션 프로그램 시 사용한 모든 입력과 출력 변수는 POU 헤더에서 선언되었습니다. 모든 프로그래밍 언어에 같은 POU 헤더를 사용합니다.
VAR
SetTrigger1: BOOL:=FALSE;
(*if SetTrigger1 is ON, the output Address1 will turn ON*)
ResetTrigger1: BOOL:=FALSE;
(*if reset_trigger is ON, the
Address1 will turn OFF*)
Address1: BOOL:=FALSE;
END_VAR
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 5 ;
NETWORK_BODY
B(B_F,KEEP!,Instance,13,1,23,5,,?DSetTrigger?DResetTrigger?CAddress);
B(B_VAROUT,,Address1,23,2,25,4,);
B(B_CONTACT,,ResetTrigger1,5,3,7,5,);
B(B_CONTACT,,SetTrigger1,5,1,7,3,);
L(1,4,5,4);
L(1,2,5,2);
L(7,2,12,2);
L(12,2,12,3);
L(7,4,13,4);
L(12,3,13,3);
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
END_BODY
Address1:=KEEP(SetTrigger1, ResetTrigger1);
LD |
SetTrigger1 |
(* load the value for the SetTrigger-Input *) |
KEEP |
ResetTrigger1 |
(* load the value for the ResetTrigger-Input and execute KEEP *) |
ST |
Address1 |
(* store the Address-Output value *) |