Die Funktion repräsentiert ein Schieberegister für alle möglichen Datentypen (durch Nutzung von Variant
).
Es ist möglich die Elemente im Array bufferRegister
nach Links (Index array[n]:=array[n+1]
) oder Rechts (Index array[n]:=array[n-1]
) zu schieben.
Sie kann zum Beispiel zur Materialverfolgung durch eine Maschine und den Prozess genutzt werden, zum Beispiel für Rundschalttische.
bufferRegister
.LGF_ShiftRegister (FB) | ||||||||
---|---|---|---|---|---|---|---|---|
Bool | shiftLeft | error | Bool | |||||
Bool | shiftRight | status | Word | |||||
UInt | shiftRange | subFunctionStatus | Word | |||||
Bool | clear | |||||||
Bool | fill | |||||||
Variant | initialItem | |||||||
Variant | bufferRegister | Variant | ||||||
Bezeichner | Datentyp | Default Wert | Beschreibung |
---|---|---|---|
shiftLeft | Bool | FALSE | Positive Flanke: Elemente in `bufferRegister` werden nach links geschoben, von Index `N` nach `N - 1`. Das Element im Index `N = 0` wird überschrieben. |
shiftRight | Bool | FALSE | Positive Flanke: Elemente in `bufferRegister` werden nach rechts geschoben, von Index `N` nach `N + 1`. Das Element im Index `N = letzter Index` wird überschrieben. |
shiftRange | UInt | 1 | Anzahl der Plätze, um die die Elemente im Eingangs Array an `bufferRegister` verschoben werden. |
clear | Bool | FALSE | Clear / Ablöschen der Elemente in Eingangsarray `bufferRegister` mit `initialItem` |
fill | Bool | FALSE | Überschreiben der Pufferelemente nach der Schiebeoperation. * `shiftLeft` - die links gelegenen Elemente * `shiftRight` - die rechts gelegenen Elemente werden mit `initalItem` überschrieben. |
initialItem | Variant | --- | Wert mit dem das Array am Eingang `bufferRegister` initialisiert wird (meistens der Default wert) |
Bezeichner | Datentyp | Beschreibung |
---|---|---|
error | Bool | FALSE: Kein Fehler TRUE: Während der Ausführung des FB ist ein Fehler aufgetreten |
status | Word | 16#0000-16#7FFF: Status des FB 16#8000-16#FFFF: Fehleridentifikation (siehe folgende Tabelle) |
subFunctionStatus | Word | Status oder Rückgabewert von aufgerufenen FB's / FC's und Systemfunktionen |
Bezeichner | Datentyp | Beschreibung |
---|---|---|
bufferRegister | Variant | Puffer / Register Speicher als Array in welchem die Daten gespeichert sind. Die Daten im Register werden nach Links oder Rechts verschoben, abhängig vom Kommando. |
Code / Wert | Bezeichner / Beschreibung |
---|---|
16#0000 | STATUS_NO_ERROR Status: Abarbeitung ohne Fehler beendet |
16#7000 | STATUS_NO_CURRENT_JOBS Status: Keine aktuelle Bearbeitung, initial State |
16#8200 | ERR_NO_ARRAY Fehler: Am Eingang `bufferREgister` liegt kein Array an. |
16#8201 | ERR_CLEARING_WITHOUT_INITIAL_ITEM Fehler: Ein Ablöschen des Arrays an `bufferRegister` ohne einen Datenpunkt an `initialItem` ist nicht möglich. |
16#8202 | ERR_FILL_WITHOUT_INITIAL_ITEM Fehler: Ein Überschreiben der Arrayelemente an `bufferRegister` mit der Option `fill` ohne einen Datenpunkt an `initialItem` ist nicht möglich. |
16#8203 | ERR_WRONG_TYPE_INITIAL_ITEM Fehler: Der Datentyp des Eingangs `initialItem` entspricht nicht dem Datentyp des Arrays am InOut-Parameter `bufferRegister`. |
16#8401 | ERR_MORE_THAN_ONE_COMMAND Fehler: Mehr als ein Kommando an den Eingängen präsent. Nur ein Kommando an den Eingängen `shiftLeft`, `shiftRight` oder `clear` ist zulässig. |
16#8402 | ERR_IN_SHIFT_RANGE Fehler: Der Wert an `shiftRange` darf nicht die maximale Größe des Arrays an `bufferRegister` annehmen oder übersteigen. |
16#8610 | ERR_CLEAR_BUFFER Fehler: Während des Ablöschens des Puffers in Funktion `MOVE_BLK_VARIANT`. Weitere Infos in `subFunctionStatus` |
16#8611 | ERR_SHIFT_BUFFER_LEFT Fehler: Schieben der Elemente nach links fehlgeschlagen, Fehler in Funktion `MOVE_BLK_VARIANT` - weitere Infos in `subFunctionStatus |
16#8612 | ERR_SHIFT_BUFFER_LEFT_FILL Fehler: Überschreiben der Elemente nach Schieben / Links mit dem Initialwort in Funktion `MOVE_BLK_VARIANT` fehlerhaft - weitere Infos in `subFunctionStatus |
16#8622 | ERR_SHIFT_BUFFER_RIGHT Fehler: Schieben der Elemente nach rechts fehlgeschlagen, Fehler in Funktion `MOVE_BLK_VARIANT` - weitere Infos in `subFunctionStatus |
16#8622 | ERR_SHIFT_BUFFER_RIGHT_FILL Fehler: Überschreiben der Elemente nach Schieben / Rechts mit dem Initialwort in Funktion `MOVE_BLK_VARIANT` fehlerhaft - weitere Infos in `subFunctionStatus |
Version & Datum | Änderungsbeschreibung | |
---|---|---|
01.00.00 | Siemens Industry Online Support | |
03.07.2018 | First released version | |
03.00.00 | Simatic Systems Support | |
09.04.2021 | Refactoring and alignment to Datatype Variant Insert documentation |