Die CRC-Berechnung wird für die Fehlererkennung bei der Datenübertragung verwendet. Das Ergebnis einer Berechnung liefert einen CRC-Wert über die gesendeten Daten. Der Empfänger erkennt eine fehlerhafte Übertragung aufgrund des ungleichen CRC-Werts. Die Funktion LGF_CalcCRC16
verwendet als Generatorpolynom (Maske) 16 Bit.
LGF_CalcCRC16 (FC) | ||||||||
---|---|---|---|---|---|---|---|---|
Word | initValue | Ret_Val | Word | |||||
Word | mask | error | Bool | |||||
UInt | noOfElements | status | Word | |||||
Array[*] of Byte | array | Array[*] of Byte | ||||||
Bezeichner | Datentyp | Beschreibung |
---|---|---|
initValue | Word | Startwert, mit dem die Berechnung durchgeführt wird. Wenn keinen Startwert notwendig ist - 16#00 zuweisen. |
mask | Word | Generatorpolynom, mit dem die Berechnung durchgeführt wird. (Maske / CRC Polynom) |
noOfElements | UInt | Anzahl der Elemente, die in der CRC-Berechnung verwendet werden 0 = alle Elemente / das gesamte Array |
Bezeichner | Datentyp | Beschreibung |
---|---|---|
Ret_Val | Word | Berechneter CRC-Wert (Rückgabewert der Funktion). |
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) |
Bezeichner | Datentyp | Beschreibung |
---|---|---|
array | Array[*] of Byte | Datenstrom, für den der CRC-Wert berechnet werden soll. |
Code / Wert | Bezeichner / Beschreibung |
---|---|
16#0000 | STATUS_NO_ERROR Kein Fehler beim Aufruf der Funktion aufgetreten |
16#8400 | ERR_NO_OF_ELEMENTS Fehler aufgrund eines undefinierten Zustands in der Zustandsmaschine |
Die Funktion berechnet aus einem beliebig großen Datenstrom den CRC-Wert. Der Datenstrom setzt sich aus den einzelnen Elementen des Arrays am Ein- / Ausgangsparameter array
zusammen. Der Startwert initValue
und das Generatorpolynom mask
sind frei wählbar.
Mit dem Eingang noOfELements
kann die gewünschte Anzahl an Elementen zur Berechnung vorgegeben werden, es gilt:
AnzahlElemente <= (ArrayObergrenze - ArrayUntergrenze + 1)
mask
(Polynom) und initValue
(Initial Value) unterstützt:Version & Datum | Änderungsbeschreibung | |
---|---|---|
01.00.00 | Siemens Industry Online Support | |
03.07.2018 | First released version | |
01.00.01 | Siemens Industry Online Support | |
17.08.2018 | Upgrade: TIA V15 Update 2 | |
01.00.02 | Siemens Industry Online Support | |
23.11.2018 | Upgrade: TIA V15.1 | |
01.00.03 | Simatic Systems Support | |
09.10.2019 | Code refactoring, comments added | |
03.00.00 | Simatic Systems Support | |
23.04.2020 | Set version to V3.0.0, harmonize the version of the whole library | |
03.00.01 | Simatic Systems Support | |
12.11.2020 | Insert documentation Assign default start values to optional inputs - `initValue`, `mask` | |
03.01.00 | Simatic Systems Support | |
14.04.2023 | Add input `noOfElements` to assign length to be converted different from array size Add outputs `error` and `status` display a wrong assignment to `noOfElements` |