Bedingtes Ende
Beendet den aktuellen SPS-Zyklus des Programmcodes an der aktuellen Programmposition.
Eingang
wenn TRUE, wird der Befehl ausgeführt
Ausgang
wird auf TRUE gesetzt, wenn der Befehl erfolgreich abgearbeitet wurde
Wenn die Ausführungsbedingung auf TRUE gesetzt wird, beendet das Programm den aktuellen SPS-Zyklus und beginnt mit der E/A-Verarbeitung. Das Programm kehrt dann zur ersten Adresse zurück.
Dieser Befehl kann nicht in Teilprogrammen wie Unterprogrammen oder Interrupt-Programmmen ausgeführt werden. Verwenden Sie den Befehl FP_END_SCAN nur im Hauptprogramm.
Im Hauptprogramm können zwei oder mehr FP_END_SCAN Befehle verwendet werden.
Bei Verwendung eines der unten aufgeführten Befehle ist Vorsicht geboten. Diese Befehle werden bei Erkennung der steigenden Flanke einer Ausführungsbedingung (Trigger) ausgeführt.
DF (positive Flankenerkennung)
Zähleingang für CT (Zähler)
Zähleingang für F118_UDC (Vor-/Rückwärtszähler)
Schiebeeingang für SR (Schieberegister)
Schiebeeingang für F119_LRSR (Links-/Rechts-Schieberegister)
Ausführung von P-Befehlen (angegeben durch P und eine Nummer, z. B. P20_ADD) nur bei steigender Flanke
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
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);