キープ
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 *) |