CALCUL DE CRC 16
EXEMPLE DE CALCUL DE CRC
unsigned int CALCUL_CRC(unsigned int *Msg){
unsigned int Crc;
int lenght,i,n;
Crc = 0xFFFF;
length = Msg[0];
for ( i = 1 ; i <= length ; i++ ){
Crc ^= Msg[i];
for ( n = 1 ; n <= 8 ; n++)
/* if CRC is even */
if ((Crc % 2) == 0)
/* to right decrement */
Crc >>= 1;
else{
Crc >>= 1;
Crc ^= 0xA001;
}
}
}
return( Crc );
}
1.4. DONNÉES GÉNÉRALES DE JBUS
BASES DE DONNÉES
Chaque dispositif de sa BASE DE DONNÉES, décrite dans les tableaux suivants :
ÉTATS
ALARMES
MESURES
CONFIGURATIONS
DATE et HEURE
COMMANDES
CODAGE DE L'INFORMATION
Chaque élément d'information est identifié par un code, par ex.
Sxxx pour les états
Axxx pour les alarmes
Mxxx pour les mesures
Txxx pour les configurations
Cxxx pour les commandes
Le codage des journaux est le même pour tous les équipements, de même que le format de date et d'heure.
8
JBUS/MODBUS - Réf. : IOMMASOPXX03-FR 01
1.3-1
{
CRC16 = 0xFFFF
CRC16 = CRC16 xor DATA
n = 0
RIGHT SHIFT CRC16
YES
CRC16 = CRC16 xor 0xA001
CARRY
NO
n = n + 1
YES
n > 7
NO
1. JBUS
NEXT DATA
NO
END OF MESSAGE ?
YES
END