LGF_CalcCRC32Advanced (FC / V3.0.1)


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_CalcCRC32Advanced verwendet als Generatorpolynom (Maske) 32 Bit sowie die Parameter finalXorValue, reflectInput und reflectResult.

Baustein Schnittstelle

LGF_CalcCRC32Advanced (FC)
DWord  initValue Ret_Val  DWord
    
DWord  mask   
    
DWord  finalXorValue   
    
Bool  reflectInput   
    
Bool  reflectResult   
    
Array[*] of Byte  array  Array[*] of Byte
       
   

Input Parameter

BezeichnerDatentypBeschreibung
initValueDWordStartwert, mit dem die Berechnung durchgeführt wird.
Wenn keinen Startwert notwendig ist - 16#00 zuweisen.
maskDWordGeneratorpolynom, mit dem die Berechnung durchgeführt wird.
(Maske / CRC Polynom)
finalXorValueDWordWert, mit dem am Ende eine weitere XOR-Operation durchgeführt wird
reflectInputBoolTRUE: wird die Reihenfolge der Bits innerhalb des Eingangsbytes gespiegelt. Aus der Reihenfolge 0…7 wird 7…0.
reflectResultBoolTRUE: wird die Reihenfolge der Bits innerhalb des Ergebnisses gespiegelt. Aus der Reihenfolge 0…7 wird 7…0.

Output Parameter

BezeichnerDatentypBeschreibung
Ret_ValDWordBerechneter CRC-Wert (Rückgabewert der Funktion).

In/Out Parameter

BezeichnerDatentypBeschreibung
arrayArray[*] of ByteDatenstrom, für den der CRC-Wert berechnet werden soll.

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.

Über die booleschen Eingangsparameter reflectInput und reflectResult können Sie optional die Bits der Eingangsdaten bzw. des CRC-Werts spiegeln. Außerdem wird mit dem CRC-Wert am Ende und dem Wert finalXorValue eine XOR-Operation durchgeführt.

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`, `finalXorValue`, `reflectInput`, `reflectResult`