Crc Calculation; B.2 Crc Calculation - Siemens SITRANS F Operating Instructions Manual

Communication modules sitrans f m mag 8000 modbus rtu
Hide thumbs Also See for SITRANS F:
Table of Contents

Advertisement

Appendix

B.2 CRC calculation

Datatype
TotalType
Date
B.2

CRC calculation

The Cyclical Redundancy Checking (CRC) field is two bytes, containing a 16–bit binary
value. The CRC value is first generated by the transmitting device, which appends the CRC
to the message. The receiving device recalculates a CRC during receipt of the message,
and compares the calculated value to the actual value it received in the CRC field. If the two
values are not equal an error occurs.
In the following a short text description of how the CRC is calculated is provided. This
description is then followed by a C programming example.
CRC calculation
1. Load a 16–bit register with FFFF hex (all 1's). Call this the CRC register.
2. Exclusive OR the first 8–bit byte of the message with the low–order byte of the 16–bit
CRC register, putting the result in the CRC register.
3. Shift the CRC register one bit to the right (toward the LSB), zero–filling the MSB. Extract
and examine the LSB.
4. (If the LSB was 0): Repeat Step 3 (another shift). (If the LSB was 1): Exclusive OR the
CRC register with the polynomial value 0xA001 (1010 0000 0000 0001).
5. Repeat Steps 3 and 4 until 8 shifts have been performed. When this is done, a complete
8–bit byte will have been processed.
6. Repeat Steps 2 through 5 for the next 8–bit byte of the message. Continue doing this until
all bytes have been processed.
7. The final content of the CRC register is the CRC value.
8. When the CRC is placed into the message, its upper and lower bytes must be swapped
as described below.
74
Modbus RTU implementation
Data type defined by Siemens mainly used for Totalizer values. TotalType consist of two parts:
1. signed long Number - contains the integer part of Value
2. signed long Decimal – contains the fractional part of the Value multiplied with 1.0E9
The parameters are read using function code 03 hex 'Read multiple registers'.
The parameters are written using function code 10 hex 'Write multiple registers'.
Data type defined by Siemens used for dates. Date consist of 6 parts:
1. Unsigned Char Year
2. Unsigned Char Month
3. Unsigned Char Day
4. Unsigned Char Hour
5. Unsigned Char Minute
6. Unsigned Char Second
The parameters are read using function code 03 hex 'Read multiple registers'.
The parameters are written using function code 10 hex 'Write multiple registers'.
MAG 8000 Modbus RTU
Operating Instructions, 04/2016, A5E03409989-AB

Advertisement

Table of Contents
loading

Table of Contents