Cálculo Crc; Ejemplo De Programación Crc - Siemens SITRANS F Serie Instrucciones De Servicio

Caudalímetros coriolis
Ocultar thumbs Ver también para SITRANS F Serie:
Tabla de contenido

Publicidad

Cálculo CRC
El campo de comprobación de redundancia cíclica (CRC) tiene dos bytes y contiene un
valor binario de 16 bits. El valor del CRC se genera en un principio mediante el dispositivo
de transmisión que adjunta el CRC al mensaje. El dispositivo de recepción vuelve a calcular
un CRC durante la recepción del mensaje y compara el valor calculado con el valor actual
que ha recibido en el campo del CRC. Si los dos valores no son iguales, se produce un
error.
A continuación se incluye un breve texto descriptivo sobre cómo se calcula el CRC. A
continuación esta descripción se complementa con un ejemplo de programación en C.
Cálculo CRC
1. Cargue un registro de 16 bits con FFFF hex (todos 1s). Llame a esto el registro CRC.
2. Exclusivo O el primer byte de 8 bits del mensaje con el byte de bajo orden del registro
CRC de 16 bits, colocando el resultado en el registro CRC.
3. Cambie 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): Exclusivo O el registro
CRC con el valor polinómico 0xA001 (1010 0000 0000 0001).
5. Repita los pasos 3 y 4 hasta que se hayan realizado 8 cambios. Una vez realizada esta
operación, se habrá procesado un byte completo de 8 bits.
6. Repita los pasos 2 a 5 para el siguiente byte de 8 bits del mensaje. Continúe haciendo
esto hasta que se hayan procesado todos los bytes.
7. El contenido final del registro CRC es el valor CRC.
8. Una vez que el CRC está colocado en el mensaje, los bytes inferior y superior deben
barrerse tal como se describe a continuación.
Colocación del CRC en el mensaje
Cuando el CRC de 16 bits (dos bytes de 8 bits) se transmite al mensaje, el byte de bajo
orden se transmite primero, seguido del byte de orden alto.
Por ejemplo, si el valor CRC es 1241 hex (0001 0010 0100 0001):
Dirección
Func
Ejemplo de programación CRC
/* Tabla de valores CRC para byte de alto orden */
static __flash unsigned char auchCRCHi[] = {
FC410 con Modbus
Instrucciones de servicio, 05/2015, A5E33209358-AB
Recuento
Datos n
de datos
Datos n+1
Datos n+2
Datos n+x
CRC LO
0x41
D
CRC HI
0x12
155

Publicidad

Tabla de contenido
loading

Este manual también es adecuado para:

Sitrans fc410

Tabla de contenido