LGF_CalcCRC32 (FC / V3.1.0)

Übersicht

Autor: Siemens Industry Support

Kurzbeschreibung

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_CalcCRC32 verwendet als Generatorpolynom (Maske) 32 Bit.

Baustein Schnittstelle

LGF_CalcCRC32 (FC)
DWord  initValue Ret_Val  DWord
    
DWord  mask error  Bool
    
UInt  noOfElements status  Word
    
Array[*] of Byte  array  Array[*] of Byte
       
   

Input Parameter

BezeichnerDatentyp Beschreibung
initValueDWord Startwert, mit dem die Berechnung durchgeführt wird.
Wenn keinen Startwert notwendig ist - 16#00 zuweisen.
maskDWord Generatorpolynom, mit dem die Berechnung durchgeführt wird.
(Maske / CRC Polynom)
noOfElementsUInt Anzahl der Elemente, die in der CRC-Berechnung verwendet werden
0 = alle Elemente / das gesamte Array

Output Parameter

BezeichnerDatentyp Beschreibung
Ret_ValDWord Berechneter CRC-Wert (Rückgabewert der Funktion).
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)

In/Out Parameter

BezeichnerDatentyp Beschreibung
arrayArray[*] of Byte Datenstrom, für den der CRC-Wert berechnet werden soll.

Status & Error Meldungen

Code / WertBezeichner / Beschreibung
16#0000STATUS_NO_ERROR
Kein Fehler beim Aufruf der Funktion aufgetreten
16#8400ERR_NO_OF_ELEMENTS
Fehler aufgrund eines undefinierten Zustands in der Zustandsmaschine

Funktionsbeschreibung

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)


Hinweis
Für die Berechnung der CRC-Werte stehen verschiedene Online-Tools zur Verfügung. Die Funktion des Bausteins wurde mit folgendem Online-Tool getestet, da es die Eingangsparameter mask (Polynom) und initValue (Initial Value) unterstützt:
http://www.sunshine2k.de/coding/javascript/crc/crc_js.html

Änderungshistorie

Version & DatumÄnderungsbeschreibung
01.00.00Siemens Industry Online Support
03.07.2018First released version
01.00.01Siemens Industry Online Support
17.08.2018Upgrade: TIA V15 Update 2
01.00.02Siemens Industry Online Support
23.11.2018Upgrade: TIA V15.1
01.00.03Simatic Systems Support
09.10.2019Code refactoring, comments added
03.00.00Simatic Systems Support
23.04.2020Set version to V3.0.0, harmonize the version of the whole library
03.00.01Simatic Systems Support
12.11.2020Insert documentation
Assign default start values to optional inputs - `initValue`, `mask`
03.01.00Simatic Systems Support
14.04.2023Add input `noOfElements` to assign length to be converted different from array size
Add outputs `error` and `status` display a wrong assignment to `noOfElements`