LGF_CalcCRC32 (FC / V3.1.0)

Overview

Author: Siemens Industry Support

Short description

The CRC calculation is used for error detection at data transmission. The result of a calculation returns a CRC value via the data sent. The receiver detects a faulty transmission due to the unequal CRC value. The function LGF_CalcCRC32 uses 32 bits as the generator polynomial (mask).

Block Interface

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

IdentifierData type Description
initValueDWord Start value with which the calculation is executed.
If there is no need for start value - assign 16#00
maskDWord Generator polynomial with which the calculation is executed.
(Mask / CRC polynomial)
noOfElementsUInt Number of elements to be used in CRC calculation
0 = all elements / the whole array

Output parameter

IdentifierData type Description
Ret_ValDWord Calculated CRC value (return value of the function).
errorBool TRUE: An error occurred during the execution of the FB
statusWord 16#0000 - 16#7FFF: Status of the FB, 16#8000 - 16#FFFF: Error identification

In/Out parameter

IdentifierData type Description
arrayArray[*] of Byte Data stream for which the CRC value will be calculated.

Status & Error codes

Code / ValueIdentifier / Description
16#0000STATUS_NO_ERROR
No error occurred in function call
16#8400ERR_NO_OF_ELEMENTS
Error: `noOfElements` exceeds the maximum number of array elements

Functional description

The function calculates the CRC value from a data stream of any size. The data stream is composed of the individual elements of the array at the input/output parameter array. The start value initValue and the generator polynomial mask can be freely selected.

The input noOfELements can be used to specify the desired number of elements for calculation, it applies:

NumberOfElements <= (ArrayUpperLimit - ArrayLowerUnderLimit + 1)


Note
Various online tools are available for calculating the CRC values. The function of the block was tested with the following online tool, since it supports the input parameters mask (Polynomial) and initValue (Initial Value):
http://www.sunshine2k.de/coding/javascript/crc/crc_js.html

Change log

Version & DateChange description
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`