Cálculo de los códigos de control en el protocolo MODBUS-RTU
En el protocolo MODBUS-RTU coexisten dos modalidades de evaluacion de la exactitud
de los datos enviados.
• Controlo de paridad de un byte
• Controlo de redundancia cíclica (CRC) sobre el interior del paquete enviado
Los códigos se calculan por el instrumento que transmite según los datos a enviar. El
instrumento que recibe calcula de nuevo los códigos según los datos recibidos y los
compara con los adjuntos al mensaje. Si los códigos son correctos, el mensaje va a
ser aceptado y procesado.
Control de paridad
Es un controlo realizado para cada byte.
Se agrega un bit al final de cada byte de información de manera que el número total
de bit 1 es:
• Par, si se usa la paridad par
• impar, si se usa la paridad impar
Ejemplo: byte = 1100 0101, el número de bit 1 es cuatro. El bit de paridad será 0 si
se usa la paridad par o 1 si se usa la paridad impar.
La modalidad pre-configurada por nuestra empresa del protocolo es la paridad par.
El instrumento permite cambiar o desactivar el control de paridad gracias al
parámetro de configuración P#060.
Código CRC
El código CRC es un valor binario de 16 bit calculado según todos los byte del mensaje
y está agregado al final del mensaje a enviar.
El procedimiento de cálculo del código es el siguiente:
1. Los 16 bit del registro CRC son todos inicializados a 1.
2. Se ejecuta el OR exclusivo (XOR) entre le byte menos importante del CRC y el
primer byte del mensaje (excluyendo los bit de inicio, de paridad y de parada).
El resultado será el nuevo valor del CRC.
3. Se desliza hacia la derecha del registro CRC, insertando 0 a izquierda como bit
más importante.
4. Se examina el bit salido a la derecha después del deslizamiento: si es 1, se
ejecuta el XOR entre el valor CRC y el valor fijo "1010 0000 0000 0001". El
resultado será el nuevo valor del CRC.
5. Se repiten los puntos 3 y 4 hasta realizar un total de 8 deslizamientos.
6. Se repiten los puntos 2, 3, 4 y 5 para todos los byte del mensaje.
7. El valor CRC final está al final del mensaje empezando del byte menos
importante así que se transmitirá antes del menos importante.
HD45 / HD46
APENDICE A
- 67 -
V2.4