FP_END_SCAN

Bedingtes Ende

Beendet den aktuellen SPS-Zyklus des Programmcodes an der aktuellen Programmposition.

Parameter

Eingang

EN (BOOL)

wenn TRUE, wird der Befehl ausgeführt

Ausgang

ENO (BOOL)

wird auf TRUE gesetzt, wenn der Befehl erfolgreich abgearbeitet wurde

Anmerkungen

  • 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

Beispiel

Task-Pool

POE-Kopf

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

KOP-Rumpf

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

Beispiel Program_2

ST-Rumpf

FP_INC(d := iCounterExecuted);
If (bEndCurrentScan) then
    FP_END_SCAN();
End_if;
FP_INC(d := iCounterNotExecuted);

Letzte Änderung am: 2023-03-22Feedback zu dieser SeitePanasonic Hotline