NOTICE D'INSTRUCTION / INSTRUCTION MANUAL
7. CRC 16bis MODBUS RTU calculation method
The RTU mode includes an error–checking field that is based on a Cyclical Redundancy
Checking (CRC) method performed on the message contents. The CRC field checks the contents
of the entire message. It is applied regardless of any parity checking method used for the
individual characters of the message. The CRC field contains a 16–bit value implemented as two
8–bit bytes. The CRC field is appended to the message as the last field in the message. When
this is done, the low–order byte of the field is appended first, followed by the high–order byte. The
CRC high–order byte is the last byte to be sent in the message. The CRC value is calculated by
the sending 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 results.
CRC Calculation
The CRC is started by first preloading a 16–bitregistertoall1's.
Then a process begins of applying successive 8–bit bytes of the message to the current contents
of the register. Only the eight bits of data in each character are used for generating the CRC.
Start and stop bits and the parity bit, do not apply to the CRC.
During generation of the CRC, each 8–bit character is exclusive ORed with the register contents.
Then the result is shifted in the direction of the least significant bit (LSB), with a zero filled into the
most significant bit (MSB) position. The LSB is extracted and examined. If the LSB was a 1, the
register is then exclusive ORed with a preset, fixed value. If the LSB was a 0, no exclusive OR
takes place.
This process is repeated until eight shifts have been performed. After the last (eighth) shift, the
next 8–bit character isexclusiveORedwiththeregister'scurrentvalue,andtheprocessrepeats
for eight more shifts as described above. The final content of the register, after all the characters
of the message have been applied, is the CRC value.
A procedure for generating a CRC is:
1. Load a 16–bitregisterwithFFFFhex(all1's).CallthistheCRCregister.
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.
Toute information contenue dans ce document est susceptible d'être soumise aux règles de contrôle des exportations européennes, américaines ou de tout autre pays. Il est de
la responsabilité du destinataire de ce document de s'assurer que le transfert ou l'utilisation des données qu'il contient est conforme à toutes les règles de contrôle des
exportations en vigueur.
Information contained in this document may be subject to Export Control Regulations of the European Union, USA or other countries. Each recipient of this document is
responsible for ensuring that transfer or use of any information contained in this document complies with all relevant Export Control Regulations.
Meggitt (Sensorex) se réserve le droit de modifier la présente notice sans préavis/ Meggitt (Sensorex) reserves the right to change the specification without any prior
notice
NOT043045InterfaceProductB0
- 67