Flip-flop
Mit dem KEEP-Befehl wird ein Flip-flop realisiert.
Wenn der Setzeingang SetTrigger auf TRUE gesetzt ist, wird der Status des angegebenen Merkers auf TRUE gesetzt. Der Merker wird auf FALSE gesetzt, wenn der Rücksetzeingang ResetTrigger auf TRUE gesetzt wird. Der Status des Merkers wird behalten, bis ResetTrigger auf TRUE gesetzt ist. Signalwechsel TRUE oder FALSE am Setzeingang SetTrigger wirken sich nicht mehr auf den Zustand des Flip-flops aus. Wenn beide Eingänge SetTrigger und ResetTrigger gleichzeitig auf TRUE gesetzt werden, hat der Rücksetzeingang ResetTrigger Vorrang und das Flip-flop wird zurückgesetzt.
Eingang
Setzt Address auf TRUE
Setzt Address auf FALSE
Ausgang
Der Status dieses Merkers (TRUE oder FALSE) wird behalten.
Im POE-Kopf werden alle Ein- und Ausgangsvariablen deklariert, die für die Programmierung dieser Funktion verwendet werden.Für alle Programmiersprachen wird der gleiche POE-Kopf verwendet.
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 *) |