Modbus RTU
Modbus sur un bus série, avec la ligne physique modélisée explicitement et partagée par ses équipements adressés par unité.
Le pilote Modbus RTU parle à des équipements Modbus sur un bus série, RS-485 ou RS-232, joint par un port COM physique, un adaptateur USB ou un port virtuel ou redirigé. Comme le bus est physiquement partagé, la topologie est Pilote → Ligne → Équipement → Tag : la ligne possède tout ce qui est électrique (port, débit, format, temporisation), et chaque équipement qui s'y trouve ne possède que son adresse d'unité, sa scrutation et ses tags.
Ligne série
| Champ | Sens | Défaut |
|---|---|---|
| Nom | Le nom courant du bus. Modifiable à tout moment. | obligatoire |
| Port série | Le port du système d'exploitation, par exemple COM3. Le champ est en texte libre (les ports physiques, virtuels et redirigés fonctionnent tous) et la flèche à côté propose les ports que Windows détecte en ce moment (avec un Actualiser pour la connexion à chaud d'un adaptateur) ; la liste détectée est une commodité, jamais une liste blanche. |
COM1 |
| Débit (bauds) | Le débit binaire partagé par chaque équipement du bus. | 9600 |
| Mode de transmission | Comment chaque équipement du bus forme ses messages : RTU, des trames binaires contrôlées par un CRC, ou ASCII, des trames écrites en texte d'un deux-points à un saut de ligne et contrôlées par un LRC, que parlent les équipements anciens. Un bus parle un seul mode, qui appartient donc à la ligne. | RTU |
| Format série | Un choix fermé entre 8N1, 8N2, 8E1, 8E2, 8O1, 8O2, et sur une ligne ASCII aussi 7N2, 7E1, 7E2, 7O1 : le chiffre est le nombre de bits de données, la lettre la parité (N aucune, E paire, O impaire), le dernier chiffre les bits d'arrêt. Une trame RTU demande 8 bits de données : une ligne RTU ne propose donc que les formats à 8 bits, et un format à 7 bits resté d'une ligne ASCII s'affiche vide et est refusé tant qu'un autre n'est pas choisi. Les autres largeurs, les parités marque/espace et 1,5 bit d'arrêt ne sont pas pris en charge. |
8E1 |
| Délai de réponse (ms) | L'attente la plus longue pour la réponse d'une unité, de 100 à 60 000. Un délai plus long s'accommode d'un matériel lent, mais rend les unités absentes, et la découverte, plus lentes à identifier. | 1000 |
| Intervalle minimal entre transactions (ms) | Un cadencement de compatibilité pour toute la ligne, de 0 à 1000. Zéro conserve le seul silence automatique du protocole ; une valeur positive peut l'élever, jamais le réduire. | 0 |
Sur une ligne ASCII, le silence décrit ci-dessous ne s'applique pas : une trame ASCII se termine à son saut de ligne, le silence automatique affiche donc 0 ms et l'Intervalle minimal entre transactions (ms) est la seule pause entre les trames, comme le dit la carte en dessous : « Les trames ASCII se terminent par un saut de ligne, la ligne n'ajoute donc aucun silence propre : cet intervalle est la seule pause entre les trames. » Le mode de transmission est un réglage physique, verrouillé avec le port, le débit, le format et le délai de réponse tant que la ligne est activée ; l'adresse d'exécution d'un équipement sur une ligne ASCII se termine par /ascii.
Le protocole lui-même exige un silence entre les trames, et la ligne l'applique toujours : à 19 200 bauds ou en dessous, le silence automatique vaut 3,5 temps caractère calculés depuis le format configuré ; au-dessus de 19 200 bauds, c'est le 1,75 ms fixe que la spécification recommande. Le silence effectif est le plus grand de ce plancher automatique et de l'intervalle configuré, jamais leur somme, et le volet affiche les deux valeurs. Élever l'intervalle ralentit délibérément chaque unité de la ligne ; c'est une aide à la compatibilité, pas une réparation du câblage, de la terminaison, de la mise à la terre ou du bruit.
Une nouvelle ligne démarre désactivée pour que ses réglages physiques puissent être configurés d'abord. Chaque port physique appartient à une ligne au plus, comparé sans tenir compte de la casse et même quand les lignes sont désactivées. Le nom et l'intervalle entre transactions restent modifiables tant que la ligne tourne (une modification de temporisation prend effet sans faire cycler le port) ; le port, le débit, le format et le délai de réponse sont verrouillés tant que la ligne est activée : désactivez-la et enregistrez d'abord. Désactiver une ligne arrête les communications pour tous ses équipements sans changer leurs choix Activé individuels.
La ligne rapporte le transport physique séparément de ses équipements : Arrêt, Au repos (aucun équipement activé), Connexion, En ligne, ou Défaut de port avec un diagnostic. Supprimer une ligne vide ne retire que la ligne ; en supprimer une qui contient des équipements demande une confirmation explicite et supprime aussi ces équipements et leurs tags.
Équipement
| Champ | Sens | Défaut |
|---|---|---|
| Ligne série | Fixe : un équipement est créé sous sa ligne et hérite du tuple physique, affiché en lecture seule dans le volet. Ajoutez l'équipement sous la ligne voulue. | la ligne sous laquelle il est ajouté |
| ID d'unité | L'adresse Modbus de l'équipement sur le bus, de 1 à 247, unique dans la ligne (équipements désactivés compris). | 1 |
| Intervalle de scrutation (ms) | La cadence de scrutation par défaut des tags qui ne la remplacent pas. | 1000 |
L'adresse interne du runtime est
modbus+rtu://<line-id>/<port>/<baud>/<format>/<timeout>/<unitId>/<interval> :
elle porte l'identité stable de la ligne et ses réglages physiques complets, jamais son
nom courant.
Le comportement d'une ligne partagée
Le pilote ouvre une session série par ligne et sérialise chaque requête de chaque équipement à travers un unique répartiteur, si bien que les lectures et les écritures ne se chevauchent jamais sur le bus. Une écriture en attente prend le prochain tour libre avec une priorité bornée : les écritures sont servies rapidement, mais une écriture soutenue ne peut pas affamer la scrutation. Les délais dépassés de chaque unité sont isolés avec un retrait progressif, si bien qu'un équipement muet ne ralentit que lui-même. Une exception Modbus au CRC valide est une erreur par requête sur ce tag : la ligne reste saine. Seul un défaut d'entrée-sortie physique (le port qui disparaît, l'adaptateur débranché) invalide la session partagée et lance une réouverture coordonnée pour toute la ligne. Le dernier équipement libéré ferme le port.
Adressage des tags
L'adressage des tags est identique à celui de Modbus TCP : une Classe de registre (Bobine (0xxxx), Entrée discrète (1xxxx), Registre d'entrée (3xxxx), Registre de maintien (4xxxx), déduite par défaut du type et de l'accès du tag), un numéro de registre à partir de 0, une Quantité (registres, vide = automatique) déduite du type (Boolean, Int16 et UInt16 1 registre, Int32 et Float 2, String 4 ; la zone n'est dessinée que sur les tags String, parce que toutes les autres largeurs sont fixes), et les deux cases d'ordre : Octet de poids fort en premier (MSB first, gros-boutiste) pour l'ordre des octets et Mot de poids fort en premier (mot haut en premier) pour l'ordre des mots (dessinée seulement sur les types à deux registres, Int32 et Float), toutes deux cochées par défaut. La carte Source de la valeur se termine par Adresse dans le manuel, l'adresse du tag telle que le manuel de l'équipement l'imprime (le registre d'entrée 0 est 30001). Les types de valeur pris en charge sont les mêmes six (Boolean, Int16, UInt16, Int32, Float et String) : Int16 et UInt16 lisent un seul registre de 16 bits, signé ou non, et seul l'ordre des octets s'y applique (la case de l'ordre des mots n'y est pas dessinée). Les codes de fonction de lecture et d'écriture ainsi que les dispositions sur le bus sont documentés sur la page Modbus TCP et s'appliquent ici sans changement.
Découverte
La découverte sonde une plage d'ID d'unité sur une ligne existante et vit dans le volet de cette ligne :
| Champ | Sens | Défaut |
|---|---|---|
| ID d'unité de début | Le premier ID d'unité à sonder, de 1 à 247. | 1 |
| ID d'unité de fin | Le dernier ID d'unité, croissant depuis le début. | 32 |
Sur une ligne ASCII, le sondage est la même requête dans une trame ASCII et le LRC tient la place du CRC : une exception dont le LRC est juste prouve qu'une unité est présente, une trame dont le LRC est faux ne prouve rien.
Le balayage recharge les réglages physiques enregistrés de la ligne, ouvre le port une fois, et sonde la plage séquentiellement avec Read Basic Device Identification (fonction 43/14), en cadençant chaque sondage avec le silence inter-trames effectif de la ligne. Il n'essaie jamais de combinaisons de réglages et ne lit jamais de registres. Une exception Modbus au CRC valide prouve qu'une unité est présente sans prétendre à son identité ; un délai dépassé ou une trame non valide, non.
Une ligne en service n'est jamais interrompue ni basculée automatiquement : désactivez-la avant de balayer, et réactivez-la vous-même ensuite. L'annulation ferme la session série et laisse les résultats déjà affichés en candidats passagers jusqu'à ce que vous les ajoutiez explicitement. Un ID d'unité déjà configuré est marqué comme tel et ouvre l'équipement existant au lieu de créer un doublon ; les résultats ne portent aucun tag : les registres se configurent après Ajouter.
La découverte et la configuration de la ligne partagent une réservation par port physique qui échoue tout de suite, si bien qu'un balayage et un changement de réglages ne peuvent pas se disputer le port : le perdant apprend quelle opération le retient.
Des limites à connaître
- Les six types de valeur sont tout le vocabulaire du codec de bus ; les autres largeurs d'entier et Double ne sont pas proposés.
- Le débit utile est une propriété du bus : chaque équipement de la ligne partage un seul flux de requêtes, cadencé par le silence inter-trames effectif, si bien que beaucoup d'équipements ou un intervalle élevé allongent chaque cycle de scrutation.