nombre
RECUENTO DE
BYTES
ID DE UNIDAD
CÓDIGO DE FUN-
CIÓN
BYTES DE DATOS
1.1. generación de crc
El campo de comprobación de redundancia cíclica (CRC) es de dos bytes, contiene un valor de 16 bits. El valor de
CRC se calcula en el dispositivo de transmisión, que anexa la CRC al mensaje. El dispositivo receptor recalcula una
CRC durante la recepción del mensaje y compara el valor calculado con el valor que ha recibido en el campo CRC.
Si los valores no son iguales, se produce un error.
La CRC se inicia recargando primero un registro de 16 bits en todos los 1. Después se inicia el proceso de aplicar
bytes de 8 bits sucesivos del mensaje al contenido actual del registro. Solo se utilizan los ocho bits de datos de cada
carácter para generar la CRC. Los bits de inicio y final, y el bit de paridad no se utilizan para la CRC.
Durante la generación de la CRC, cada carácter de 8 bits se somete a una cláusula OR exclusiva con el contenido
del registro. Después, el resultado se desfasa en la dirección del bit menos significativo (LSB), con un cero rellenado
en la posición del bit más significativo (MSB). El LSB se extrae y se examina. Si el LSB era un 1, se somete el registro
a un OR exclusivo con un valor predefinido y fijo. Si el LSB era un 0, no se produce el OR exclusivo.
Este proceso se repite hasta realizar ocho cambios. Después del último (octavo) cambio, el siguiente carácter de 8
bits se somete al OR exclusivo con el valor actual del registro, y el proceso se repite durante ocho cambios más como
se ha descrito anteriormente. El contenido final del registro, después de aplicar todos los caracteres del mensaje, es
el valor de CRC.
Un procedimiento calculado para generar una CRC es:
1. Cargue un registro de 16 bits con $FFFF. Esto se denomina el registro CRC.
2. Aplique un OR exclusivo al primer byte de 8 bits del mensaje con el byte de orden inferior del registro CRC de
16 bits, incluyendo el resultado en el registro CRC.
3. Desplace el registro CRC un bit a la derecha (hacia el LSB) rellenando con ceros el MSB. Extraiga y examine
el LSB.
4. (Si el LSB era 0): Repita el paso 3 (otro cambio).
(Si el LSB era 1): Aplique el OR exclusivo al registro de CRC con el valor polinómico $A001 (1010 0000
0000 0001).
5. Repita los pasos 3 y 4 hasta realizar 8 cambios. Una vez hecho esto, se ha procesado un byte de 8 bits completo.
6. Repita los pasos 2 a 5 para el siguiente byte de 8 bits del mensaje. Siga haciéndolo hasta que haya procesado
todos los bytes.
7. El continuo final del registro CRC es el valor de CRC.
8. Cuando se incluye la CRC en el mensaje, sus bytes superior e inferior deben intercambiarse, como se describe
a continuación.
colocacIón de la crc en el menSaje
Cuando se transmite la CRC de 16 bits (dos bytes de 8 bits) en el mensaje, el byte de orden inferior se transmite
primero, seguido del byte de orden superior.
Por ejemplo, si el valor de CRC es $35F7 (0011 0101 1111 0111):
Direcc
funcIoneS de generacIón de crc - con tabla
94
ES
longitud
función
2 bytes
Número de bytes restantes en este marco
1 byte
Dirección de esclavo ($FF si no se utiliza)
1 byte
Código de función ($01 / $04 / $10)
n bytes
Datos como respuesta o comando
Func
Datos
Datos Datos
Cuenta
....
Datos
CRC
CRC
lo F7
hi 35
DIRIS Q800 - 546169B - SOCOMEC