Réonse : 0103405465737400 à 00 (+ 2 octets CRC16)
La totalité des 64 caractères est lue (64
0x73, 0x74) + 1 caractère de fin (0x00) + 59 autres caractères. Les caractères qui suivent le caractère
de fin ne sont pas analysés.
3.8
Somme de contrôle (CRC16)
Mode de calcul
La somme de contrôle (CRC16) permet de détecter les erreurs de transmission. Si une erreur est dé-
tectée lors de l'analyse, l'appareil correspondant ne répond pas.
CRC = 0xFFFF
while (tous les octets du message ne sont pas traités) ;
REMARQUE !
L'octet de poids faible de la somme de contrôle est transmis en premier !
Exemple : la somme de contrôle CRC16 0x3291 est transmise et affichée dans l'ordre 0X9132.
Exemple
Consultation de l'état de l'entrée numérique 1 (adresse 0x10D5) :
Demande de données (CRC16 = 0x3291)
01
Esclave
Réponse (CRC16 = 0x8479)
01
Esclave
3.9
Messages d'erreur
3.9.1
Codes d'erreur Modbus
L'appareil esclave ne répond pas
L'esclave ne répond pas dans les cas suivants :
•
La vitesse et/ou le format de données du maître et ceux de l'esclave ne concordent pas.
•
L'adresse d'appareil utilisée ne concorde pas avec l'adresse d'esclave contenue dans le protocole.
•
La somme de contrôle (CRC) est incorrecte.
•
L'ordre du maître est incomplet ou contradictoire.
•
Le nombre de mots à lire est égal à 0.
Dans ces cas, la demande de données devra être à nouveau envoyée après écoulement d'un timeout
de 1 s environ.
3 Description du protocole Modbus
CRC = CRC XOR ByteOfMessage
For (1 à 8)
CRC = SHR(CRC)
if (drapeau report à droite = 1)
then
CRC = CRC XOR 0xA0001
03
10 D5
Fonction
Adresse
03
02
Fonction
Nombre d'oc-
tets
octets = 0x40 octets) : 4 caractères de texte (0x54, 0x65,
DEC
00 01
Lire un mot
00 01
Valeur
else
91 32
CRC
79 84
CRC
19