LGF_ShiftRegister (FB / V1.0.3)

Übersicht

Autor: Siemens Digital Industry Support

Kurzbeschreibung

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.


Hinweis
Da diese Funktion die Array Elemente verschiebt, kann es zu Auswirkungen auf die Zykluszeit kommen, abhängig von der Größe des verschaltenden Arrays am Eingang bufferRegister.
Bitte beachten Sie, dass ein FIFO oder LIFO Speicher, basierend auf Indizierung, für viele Applikation genauso ausreichend ist.

Baustein Schnittstelle

LGF_ShiftRegister (FB)
Bool  shiftLeft error  Bool
    
Bool  shiftRight status  Word
    
UInt  shiftRange subFunctionStatus  Word
    
Bool  clear   
    
Bool  fill   
    
Variant  initialItem   
    
Variant  bufferRegister  Variant
       
   

Input Parameter

BezeichnerDatentyp Default Wert Beschreibung
shiftLeftBool FALSE Positive Flanke: Elemente in `bufferRegister` werden nach links geschoben, von Index `N` nach `N - 1`.
Das Element im Index `N = 0` wird überschrieben.
shiftRightBool 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.
shiftRangeUInt 1 Anzahl der Plätze, um die die Elemente im Eingangs Array an `bufferRegister` verschoben werden.
clearBool FALSE Clear / Ablöschen der Elemente in Eingangsarray `bufferRegister` mit `initialItem`
fillBool FALSE Überschreiben der Pufferelemente nach der Schiebeoperation.
* `shiftLeft` - die links gelegenen Elemente
* `shiftRight` - die rechts gelegenen Elemente
werden mit `initalItem` überschrieben.
initialItemVariant --- Wert mit dem das Array am Eingang `bufferRegister` initialisiert wird (meistens der Default wert)

Output Parameter

BezeichnerDatentyp Beschreibung
errorBool FALSE: Kein Fehler
TRUE: Während der Ausführung des FB ist ein Fehler aufgetreten
statusWord 16#0000-16#7FFF: Status des FB
16#8000-16#FFFF: Fehleridentifikation (siehe folgende Tabelle)
subFunctionStatusWord Status oder Rückgabewert von aufgerufenen FB's / FC's und Systemfunktionen

In/Out Parameter

BezeichnerDatentyp Beschreibung
bufferRegisterVariant 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.

Status & Error Meldungen

Code / WertBezeichner / Beschreibung
16#0000STATUS_NO_ERROR
Status: Abarbeitung ohne Fehler beendet
16#7000STATUS_NO_CURRENT_JOBS
Status: Keine aktuelle Bearbeitung, initial State
16#8200ERR_NO_ARRAY
Fehler: Am Eingang `bufferREgister` liegt kein Array an.
16#8201ERR_CLEARING_WITHOUT_INITIAL_ITEM
Fehler: Ein Ablöschen des Arrays an `bufferRegister` ohne einen Datenpunkt an `initialItem` ist nicht möglich.
16#8202ERR_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#8203ERR_WRONG_TYPE_INITIAL_ITEM
Fehler: Der Datentyp des Eingangs `initialItem` entspricht nicht dem Datentyp des Arrays am InOut-Parameter `bufferRegister`.
16#8401ERR_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#8402ERR_IN_SHIFT_RANGE
Fehler: Der Wert an `shiftRange` darf nicht die maximale Größe des Arrays an `bufferRegister` annehmen oder übersteigen.
16#8610ERR_CLEAR_BUFFER
Fehler: Während des Ablöschens des Puffers in Funktion `MOVE_BLK_VARIANT`. Weitere Infos in `subFunctionStatus`
16#8611ERR_SHIFT_BUFFER_LEFT
Fehler: Schieben der Elemente nach links fehlgeschlagen, Fehler in Funktion `MOVE_BLK_VARIANT` - weitere Infos in `subFunctionStatus
16#8612ERR_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#8622ERR_SHIFT_BUFFER_RIGHT
Fehler: Schieben der Elemente nach rechts fehlgeschlagen, Fehler in Funktion `MOVE_BLK_VARIANT` - weitere Infos in `subFunctionStatus
16#8622ERR_SHIFT_BUFFER_RIGHT_FILL
Fehler: Überschreiben der Elemente nach Schieben / Rechts mit dem Initialwort in Funktion `MOVE_BLK_VARIANT` fehlerhaft - weitere Infos in `subFunctionStatus

Änderungshistorie

Version & DatumÄnderungsbeschreibung
01.00.00Siemens Industry Online Support
03.07.2018First released version
03.00.00Simatic Systems Support
09.04.2021Refactoring and alignment to Datatype Variant
Insert documentation