Génération Et Vérification De La Somme De Contrôle; Génération De La Somme De Contrôle Crc; Génération De La Somme De Contrôle Lrc - Novatek TR-100M Manuel D'utilisation

Table des Matières

Publicité

intervalles de
Adresse
silence
1 octet
˃ 3,5 octets
En mode MODBUS ASCII, le début et la fin de trame sont contrôlés par symboles spéciaux (symbole
(' : '0x3A) – pour le début de trame; symboles ('CRLF' 0x0D0x0A) - pour la fin de trame). La trame doit être
transmis en tant que flux d'octets continu. L'exactitude de l'acceptation de trame est en outre contrôlée par la
vérification de la somme de contrôle LRC.
Le champ d'adresse prend deux octets. Les adresses des unités esclaves sont comprises entre de 1 à 247.
La figure 5.7 présente le format de trame ASCII.
Adresse
:
1 octet
2 octets
Remarque – en mode MODBUS ASCII, chaque octet de données est codé en deux octets de code ASCII
(par exemple: 1 octet de données 0x25 est codé par deux octets de code ASCII 0x32 et 0x35).
5.7.3 Génération et vérification de la somme de contrôle
Le dispositif de transmission forme la somme de contrôle pour tous les octets du message transmis.
TR-100M forme de la même manière la somme de contrôle pour tous les octets du message reçu et la
compare à la somme de contrôle prise à partir du dispositif de transmission. Si la somme de contrôle formée
n'est pas alignée de telle que reçue, le message d'erreur est généré.
5.7.3.1 Génération de la somme de contrôle CRC
La somme de contrôle dans le message, transmise par un octet inférieur à l'avant, est le code de
vérification cyclique basé sur le polynôme premier 0xa001.
Sous - programme de formation de la somme de contrôle CRC en langue C:
1:
uint16_t GenerateCRC(uint8_t *pSendRecvBuf, uint16_t uCount)
2:
{
3:
cons uint16_t Polynom = 0xA001;
4:
uint16_t crc = 0xFFFF;
5:
uint16_t i;
6:
uint8_t byte;
7:
for(i=0; i<(uCount-2); i++){
8:
crc = crc ^ pSendRecvBuf[i];
9:
for(byte=0; byte<8; byte++){
10:
if((crc& 0x0001) == 0){
11:
crc = crc>> 1;
12:
}else{
13:
crc = crc>> 1;
14:
crc = crc ^ Polynom;
15:
}
16:
}
17:
}
18:
returncrc;
19: }
5.7.3.2 Génération de la somme de contrôle LRC
La somme de contrôle dans le message, transmise par l'octet supérieur à l'avant, est le contrôle
longitudinal de la redondance.
Sous - programme de formation de la somme de contrôle LRC en langue C:
1:
uint8_t GenerateLRC(uint8_t *pSendRecvBuf, uint16_t uCount)
2:
{
3:
uint8_t lrc = 0x00;
4:
uint16_t i;
5:
for(i=0; i<(uCount-1); i++){
6:
lrc = (lrc + pSendRecvbuf[i]) & 0xFF;
7:
}
8:
lrc = ((lrc ^ 0xFF) + 2) & 0xFF;
NOVATEK-ELECTRO
Code de function
1 octet
à 252 octets
Figure 5.6 – Format de trame RTU
Code de function
2 octets
à 504 octets
Figure 5.7 – Format de trame ASCII
- 17 -
Données
Somme de contrôle CRC
Données
Somme de contrôle CRC
2 octets
2 octets
2 octets
intervalles de
silence
˃ 3,5 octets
CRLF
ТR-100М

Publicité

Table des Matières
loading

Table des Matières