ANEXO B
El algoritmo CRC-16 trata esencialmente a la cadena de datos (solo bits de datos; inicio, parada, y paridad ignorada) como
un número binario continuo. Este número primero es desplazado hacia la izquierda 16 bits y luego dividido por un una
característica poli nómica (11000000000000101b). El resto de la división de los 16-bit es colocado al final del paquete,
MSByte primero. El paquete resultante incluyendo CRC, cuando es dividido por el mismo polinomio en el receptor dará un
resto de cero si no ha ocurrido ningún error de transmisión. Este algoritmo requiere que la característica poli nómica sea
ordenada de forma reversa. El bit de mayor jerarquía de la característica poli nómica es desechado, ya que no afecta el
valor del resto.
La implantación de programación en lenguaje «C» del algoritmo CRC será suministrada a solicitud del cliente.
Tabla B–2: CRC-16 ALGORITMO
SÍMBOLOS:
-->
transferencia de datos
A
registro de trabajo de 16-bit
Alow
byte de baja jerarquía de «A»
Ahigh
byte de alta jerarquía de «A»
CRC
resultado de 16-bit CRC-16
i,j
contadores de anillo
(+)
operador lógico «exclusive-OR»
N
número total de bytes de datos
Di
byte de datos i-th (i = 0 a N–1)
G
característica poli nómica de 16 bit = 1010000000000001 (binario) con el bit de mayor jerarquía (MSbit)
desechado y el orden de bit revertido
shr (x)
operador de desplazamiento a la derecha (LSbit de x es desplazado hacia una bandera portadora, un
«0» es desplazado hacia el MSbit de x, todos los otros bits son desplazados un lugar a la derecha)
ALGORITMO:
1.
FFFF (hex) --> A
2.
0 --> i
3.
0 --> j
4.
Di (+) Alow --> Alow
5.
j + 1 --> j
6.
shr (A)
7.
¿Existe un portador?
8.
¿Es j = 8?
9.
i + 1 --> i
10.
¿Es i = N?
11.
A --> CRC
GE Multilin
No: vaya a 8; Si: G (+) A → A y continúe.
No: vaya a 5; Si: continúe
No: vaya a 3; Si: continúe
T60 relé para protección de transformador
B.1 PROTOCOLO MODBUS RTU
B.1.4 ALGORITMO CRC-16
B
B-3