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 | |