RS-485 & Modbus - Comment le matériel industriel communique depuis 1979
RS-485 fonctionne jusqu'à 1200 mètres avec 32 nœuds sur une paire torsadée. Modbus RTU par-dessus fournit un modèle de lecture/écriture de registres simple qui est devenu le langage de facto des capteurs industriels, automates et variateurs.
RS-485 & Modbus. Comment le matériel industriel communique depuis 1979
Allez dans n'importe quelle usine, ouvrez n'importe quelle armoire électrique, regardez n'importe quel compteur d'énergie industriel, variateur de fréquence, automate ou débitmètre des 30 dernières années. il y a de fortes chances de trouver un bornier avec deux fils étiquetés A et B (ou + et −, ou D+ et D−, selon le fabricant). C'est RS-485.
RS-485 n'est pas un protocole. C'est une norme électrique. Elle définit les tensions, les impédances des pilotes et des récepteurs, le nombre d'appareils sur un câble. Ce qui est réellement envoyé sur ces fils est presque toujours Modbus RTU: un protocole de 1979 qui a survécu à toutes les tentatives de le remplacer.
Pourquoi différentiel et pourquoi ça dure si longtemps
Même principe que CAN : le récepteur mesure A−B, pas A par rapport à la masse. Le bruit qui frappe les deux fils s'annule. C'est ce qui permet à RS-485 de parcourir plusieurs centaines de mètres dans une usine avec des variateurs de fréquence générant des kilovolts de transitoires de commutation à proximité.
État A B A − B
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Mark (1) LOW HIGH < −0,2V
Space (0) HIGH LOW > +0,2V
Rendering diagram...
La résistance de terminaison de 120Ω à chaque extrémité. même histoire que CAN. Ce que RS-485 ajoute que CAN n'a pas : les résistances de polarisation. Quand personne n'émet, les lignes A et B flottent. Une paire différentielle flottante peut atterrir dans la zone indéfinie entre −0,2V et +0,2V. Les résistances de polarisation (typiquement 560Ω–1kΩ) maintiennent A haut et B bas pendant le repos.
VCC ─┤ 560Ω ├─ A ─── appareil 1 ─── appareil 2 ─── 120Ω
GND ─┤ 560Ω ├─ B ────────────────────────────────────────
Half-duplex et la pin de direction
La plupart des implémentations RS-485 sont half-duplex. une paire torsadée, une direction à la fois. Chaque appareil a une pin d'activation du pilote (DE) qui doit être tirée HIGH avant l'émission et relâchée immédiatement après le dernier bit. Tenir trop longtemps provoque une collision avec la réponse entrante.
Obtenir le timing DE incorrect est une source courante de réponses corrompues, surtout à 115200 bauds ou plus où le temps de bit est inférieur à 10µs. La plupart des UART ont un moyen de basculer automatiquement un GPIO pour contrôler DE. vaut la peine de l'utiliser si le vôtre le supporte.
Modbus RTU. un monde de registres
Modbus organise les données des appareils en tables de registres 16 bits. Le maître interroge les esclaves par adresse et code de fonction. C'est essentiellement tout le modèle.
| Type de registre | Plage d'adresses | Accès |
|---|---|---|
| Bobines | 00001–09999 | Lecture/écriture (bits) |
| Entrées discrètes | 10001–19999 | Bits lecture seule |
| Registres d'entrée | 30001–39999 | Mots 16 bits lecture seule |
| Registres de maintien | 40001–49999 | Mots 16 bits lecture/écriture |
Une requête de lecture typique :
Rendering diagram...
Le format de trame est simple : adresse d'appareil, code de fonction, charge utile de données, CRC 16 bits (CRC-16/IBM, LSB en premier). Pas de découverte, pas de négociation. Demandez et recevez.
Codes de fonction courants :
| FC | Nom |
|---|---|
| 03 | Lecture registres de maintien |
| 06 | Écriture registre unique |
| 16 | Écriture registres multiples |
| 01 | Lecture bobines |
| 05 | Écriture bobine unique |
Le câblage compte plus qu'on ne le pense
Connectez les appareils en guirlande. n'utilisez pas une topologie en étoile. Les branches sur une étoile causent des réflexions qui corrompent les données à grande vitesse. La terminaison va aux deux extrémités physiques du câble, nulle part ailleurs. J'ai vu des armoires où quelqu'un avait ajouté des résistances de terminaison à chaque jonction "par sécurité" et se demandait ensuite pourquoi rien au-dessus de 19200 bauds ne fonctionnait de manière fiable.
Modbus RTU n'est pas glamour. Pas de découverte, pas de plug-and-play, pas de métadonnées. Vous avez besoin de la cartographie de registres de l'appareil depuis le manuel. parfois un PDF vieux de 20 ans avec une numérotation de registres incohérente. Mais le protocole lui-même est extrêmement robuste : si la couche physique est correcte, Modbus fonctionne indéfiniment sans maintenance.