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

Baustein Schnittstelle

LGF_CalcCRC8Advanced (FC)
Byte  initValue Ret_Val  Byte
    
Byte  mask error  Bool
    
Byte  finalXorValue status  Word
    
Bool  reflectInput   
    
Bool  reflectResult   
    
UInt  noOfElements   
    
Array[*] of Byte  array  Array[*] of Byte
       
   

Input Parameter

BezeichnerDatentyp Beschreibung
initValueByte Startwert, mit dem die Berechnung durchgeführt wird.
Wenn keinen Startwert notwendig ist - 16#00 zuweisen.
maskByte Generatorpolynom, mit dem die Berechnung durchgeführt wird.
(Maske / CRC Polynom)
finalXorValueByte Wert, mit dem am Ende eine weitere XOR-Operation durchgeführt wird
reflectInputBool TRUE: wird die Reihenfolge der Bits innerhalb des Eingangsbytes gespiegelt. Aus der Reihenfolge 0…7 wird 7…0.
reflectResultBool TRUE: wird die Reihenfolge der Bits innerhalb des Ergebnisses gespiegelt. Aus der Reihenfolge 0…7 wird 7…0.
noOfElementsUInt Anzahl der Elemente, die in der CRC-Berechnung verwendet werden
0 = alle Elemente / das gesamte Array

Output Parameter

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

Ü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.

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.00Simatic Systems Support
16.12.2019first release, copied from "LGF_CalcCRC32Advanced"
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`
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`