DFNNegative 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_VARJede 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;