Negative Flankenerkennung
Wenn der Signalzustand des vorgeschalteten Operanden i von TRUE auf FALSE wechselt, wird der Ausgang o des DFN-Befehls für die Dauer des Programmzyklus gesetzt.
Eingang
Ausgang
Vorsicht bei der Programmierung im Zusammenhang mit Anweisungen, welche die Rangfolge der Ausführung ändern. Das können z.B. Sprunganweisungen oder Schleifen innerhalb der Ablaufsprache oder eines Funktionsbausteins sein. Der Ablauf der Anweisungen könnte sich in Abhängigkeit vom Zeitpunkt der Anweisungsausführung und vom Eingangswert verändern. Systemspezifische JUMP und LOOP-Befehle sind:
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
Decrement: BOOL:=FALSE;
Counter: INT:=0;
END_VAR
Jede fallende Flanke am Eingang Decrement setzt den Zähler herab.
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,DFN!,Instance,7,0,12,3,,?Di?Co);
B(B_VARIN,,Decrement,5,1,7,3,);
B(B_F,E_SUB!,Instance,16,0,22,5,,?DEN?D?D?AENO?C);
B(B_VARIN,,Counter,14,2,16,4,);
B(B_VARIN,,1,14,3,16,5,);
B(B_VAROUT,,Counter,22,2,24,4,);
L(12,2,16,2);
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
END_BODY
IF DFN(Decrement) then
Counter:=Counter-1;
END_IF;