Dieser Funktionsbaustein bietet das Lesen von Daten als binärer / serialisierter Datenstrom aus Dateien, die auf der Speicherkarte der SPS im Ordner UserFiles
abgelegt sind.
LGF_FileRead (FB) | ||||||||
---|---|---|---|---|---|---|---|---|
Bool | execute | done | Bool | |||||
Bool | dataLengthMustMatch | busy | Bool | |||||
String | fileName | error | Bool | |||||
status | Word | |||||||
dataLength | DInt | |||||||
diagnostics | LGF_typeDiagnostics | |||||||
Array[*] of Byte | bufferByteArray | Array[*] of Byte | ||||||
Variant | data | Variant | ||||||
Bezeichner | Datentyp | Default Wert | Beschreibung |
---|---|---|---|
execute | Bool | FALSE | Steigende Flanke startet einmaliges Lesen der Datei |
dataLengthMustMatch | Bool | FALSE | TRUE: Die Länge der Daten aus der Datei und der PLC muss übereinstimmen. |
fileName | String | '' | Name der Datei inklusive Pfad: `UserFiles/test.dat` |
Bezeichner | Datentyp | Beschreibung |
---|---|---|
done | Bool | TRUE: FB abarbeitung erfolgreich fertiggestellt |
busy | Bool | TRUE: FB ist aktive und neue Ausgabewerte können erwartet werden. |
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) |
dataLength | DInt | Datenlänge die aus der Datei gelesen wurde (Serialisierte länge von `data`) |
diagnostics | LGF_typeDiagnostics | Diagnosestruktur zur Speicherung und Übertragung von Diagnoseinformationen von Blöcken über die Schnittstelle. |
Bezeichner | Datentyp | Beschreibung |
---|---|---|
bufferByteArray | Array[*] of Byte | Byte-Array-Puffer für Lesen / Schreiben aus / in Datei |
data | Variant | Datensatz aus Datei gelesen |
Code / Wert | Bezeichner / Beschreibung |
---|---|
16#0000 | STATUS_EXECUTION_FINISHED Ausführung ohne Fehler beendet |
16#7000 | STATUS_NO_CALL Kein Job wird gerade verarbeitet |
16#7001 | STATUS_FIRST_CALL Erster Aufruf nach Eingang eines neuen Auftrags (steigende Flanke 'execute') |
16#7002 | STATUS_SUBSEQUENT_CALL Nachfolgender Aufruf bei aktiver Verarbeitung ohne weitere Angaben |
16#8201 | ERR_BUFFER_LOWERBOUND Fehler: Untere Grenze des Pufferarrays Untere Grenze muss 0 sein |
16#8202 | ERR_BUFFER_ARRAY_TO_SMALL_TO_COPY Fehler: Puffergröße kleiner als benötigte Größe für Daten |
16#8401 | ERR_FILE_PATH Error: Dateipfad Fehler: der Dateipfad muss mit 'UserFiles/' beginnen. |
16#8411 | ERR_FILE_SIZE_GRATER_THEN_DATA_SIZE Error: Dateilänge und Datenlänge stimmen nicht überein! |
16#8412 | ERR_FILE_SIZE_LESS_THEN_DATA_SIZE |
16#8600 | ERR_UNDEFINED_STATE Fehler aufgrund eines undefinierten Zustands im Zustandsautomaten |
16#8601 | ERR_MOVE_BLK_VARIANT Fehler: Blockvariante verschieben (Puffer nach Daten) - siehe `diagnostics.subFunctionStatus` |
16#8602 | ERR_DATA_SERIALIZE Fehler: Daten serialisieren - siehe `diagnostics.subFunctionStatus` |
16#8603 | ERR_DATA_DESERIALIZE Fehler: Daten deserialisieren - siehe `diagnostics.subFunctionStatus` |
16#8604 | ERR_FILE_READ_INIT Fehler: Datei von der SMC lesen - siehe `diagnostics.subFunctionStatus` |
16#8605 | ERR_FILE_READ Fehler: Datei von SMC lesen - siehe `diagnostics.subFunctionStatus` |
Diagnosestruktur zur Speicherung und Übertragung von Diagnoseinformationen von Blöcken über die Schnittstelle.
Bezeichner | Datentyp | Default Wert | Beschreibung |
---|---|---|---|
status | Word | 16#0000 | Status des Bausteins oder Fehleridentifikation beim Auftreten des Fehlers |
subfunctionStatus | Word | 16#0000 | Status oder Rückgabewert von aufgerufenen FB's, FC's und Systembausteinen |
stateNumber | DInt | 0 | Zustand in der Zustandsmaschine des Blocks, in dem der Fehler aufgetreten ist |
Mit der Funktion LGF_FileRead
kann eine Datei in den Datenhaushalt einer Variable an data
eingelesen werden. Zum Lesen der Daten ist es notwendig diese zu deserialisieren, was die Funktion dem Anwender bereits abnimmt.
Zum Deserialisieren muss dafür ein externer Puffer in Form eines Byte Arrays verschaltet werden, der die Datenmenge aufnehmen kann, ist der Puffer zu klein wird ein Fehler ausgegeben.
Der Dateiname muss immer vollumfänglich zusammen mit dem Ordner Namen und der Datei Erweiterung in folgendem Format angegeben werden: UserFiles/test.dat
Version & Datum | Änderungsbeschreibung | |
---|---|---|
01.00.00 | Simatic Systems Support | |
19.02.2023 | First released version |