Links-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);