Guía del usuario de MLC 9000+
5.7 Cálculo de la suma de control CRC
Ésta es una suma de control por redundancia cíclica de 16 bits. Se calcula de acuerdo a una fórmula que implica la
división recursiva de los datos por parte de un polinomio, con la entrada a cada división siendo el resto de los resultados
del anterior.
La fórmula específica que la entrada sea tratada como un número binario de flujo continuo de bits, con el bit más
significativo transmitido primero. Sin embargo, el dispositivo de transmisión envía primero eln bit menos significativo.
Según la formula, polinomio divisor es 216 + 215 + 22 + 1 (0x 18005), pero éste se modifica de dos maneras:
(i)
Debido a que el orden de bits está invertido, el patrón binario también está invertido, haciendo del
MSB el bit más a la derecha, y
(ii)
Debido a que sólo el resto es de interés, el MSB (el bit más a la derecha) puede ser descartado.
Esto significa que el polinomio tiene el valor 0x A001. El algoritmo CRC es el siguiente:
XOR de los 1
bits de datos con
MSB de resultado
cambiado
todos los 8
Cambiar el
resultado a la
derecha por 1
¿Se ha
NO
desplazado
el bit fuera
de conjunto?
Resultado
XOR con
polinomio
5-8
os
8
Resultado de
precarga de 16 bits
XOR de los
siguientes 8 bits de
datos con MSB de
¿Han
SÍ
bits?
NO
SÍ
Bit más
significat
Bit más
significat
NO
¿Datos
terminados?
SÍ
Añadir 16
bits de
resultado a
los datos
Orden normal de bits
Byte más
significativo
ivo
Orden inverso de bits
Byte menos
significativo
ivo
SE HA USADO EL ORDEN INVERTIDO DE BIT
COMUNICACIONES MODBUS
Byte menos
significativo
Byte más
significativo
59367, Edición 1 – Marzo 04
Bit menos
significativo
Bit menos
significativo