Lors de l'intégration d'un nouveau slave Modbus dont le byte order est inconnu, tester systématiquement les 4 combinaisons (ABCD, DCBA, BADC, CDAB) sur une valeur float connue est plus rapide que d'éplucher une documentation vendor souvent incomplète ou erronée.
Vrai
Le debug pragmatique en terrain : la documentation vendor reste souvent ambigue sur le byte order ("Big Endian" peut désigner ABCD ou BADC selon l'auteur). En pratique on connait une grandeur (par exemple une sonde de temperature affichant 22.5), on lit les deux registres concernes, on teste les quatre décodages et on retient celui qui restitue 22.5. Une fois identifié, l'ordre est cohérent pour tous les floats du même slave. Outils utiles : option -F de mbpoll, utilitaire pymodbus, ou simple script Python avec struct.unpack en variant le format.
Mnémo : ABCD = Big Endian naturel, CDAB = word swap (le plus fréquent en Modbus !), BADC = byte swap dans chaque mot, DCBA = inversion totale (Little Endian complet).
Banque Modbus en préparation
La banque complète Modbus n'est pas encore disponible. Mets ton email pour être prévenu du lancement et avoir un discount early-bird.
Rejoindre la waitlist →Voir les 9 autres questions Modbus
Questions liées
- Quelle variante Modbus est aujourd'hui la plus utilisée pour les nouvelles installations en environnement IT/OT moderne ?2. Variants · RTU vs. TCP vs. ASCII
- Lorsqu'un slave Modbus ne peut pas exécuter une requête (adresse invalide, valeur hors plage, etc.), il répond par un "Exception Response" : function code d'origine avec le bit 7 force a 1, suivi d'un Exception Code précisant la cause.4. Function codes · Exception Responses
- La function 0x05 "Write Single Coil" écrit une seule sortie binaire sur un slave Modbus. La valeur ON est codée 0xFF00 et OFF est codée 0x0000 ; toute autre valeur est invalide.4. Function codes · Write Single Coil (0x05)
- La function 0x08 "Diagnostic" (Modbus série RTU/ASCII uniquement) permet de tester la communication et d'accéder aux compteurs d'erreurs internes du slave via des sous-fonctions (Return Query Data, Restart Communications, Return Bus Message Count, etc.).4. Function codes · Diagnostic (0x08)
- Quand une passerelle Modbus TCP/RTU fait pont vers un segment RTU comportant plusieurs slaves, le client Modbus TCP utilisé le Unit ID du header MBAP pour cibler le slave RTU spécifique situe derriere la passerelle.5. Modbus TCP · Unit ID Gateway