LSRLinks-Schieberegister
Mit dem LSR-Befehl können Sie ein 16-Bit Schieberegister im Merkerbereich (d_WR) realisieren. Mit jeder steigenden Flanke am Takteingang ShiftLeftTrigger wird der Signalzustand am Dateneingang DataInput in das Bit 0 des Schieberegisters übernommen. Das vom LSR-Befehl dabei aus dem Schieberegister herausgeschobene Bit (aus Bit 15) geht verloren. Eine steigende Flanke am Eingang Reset setzt den Datenbereich auf 0 zurück.
Der für diesen Befehl verfügbare Bereich ist nur der interner Doppelwortmerker (WR)
Der Bereich für die Wortregister (WR) von internen Merkern hängt von dem unter definierten freien Bereich ab.

Eingang
Gibt den Signalzustand zum Hineinschieben an.
Neuer Signalzustand = TRUE = 1: wenn der Eingang TRUE ist
Neuer Signalzustand = FALSE = 0: wenn der Eingang FALSE ist
Verschiebt 1 Bit nach links, wenn die steigende Flanke des Triggers erkannt wird
Setzt alle Bits des Datenbereichs auf 0, wenn der Trigger TRUE ist.
Ausgang
Angegebener Datenbereich für die Datenverschiebung

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
		Output: INT:=0;
		DataInput: BOOL:=FALSE;
		ShiftTrigger: BOOL:=FALSE;
		ResetTrigger: 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,LSR!,Instance,10,0,20,5,,?DDataInput?DShiftLeftTrigger?DReset?Cd_WR);
B(B_VARIN,,DataInput,8,1,10,3,);
B(B_VARIN,,ShiftTrigger,8,2,10,4,);
B(B_VARIN,,ResetTrigger,8,3,10,5,);
B(B_VAROUT,,Output,20,1,22,3,);
L(1,0,1,5);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY
Output:=LSR(DataInput, ShiftTrigger, ResetTrigger);