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é.

Afficher en Markdown

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
Format série Un choix fermé entre 8N1, 8N2, 8E1, 8E2, 8O1, 8O2 : 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. 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

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 : Désactivée, 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.
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
Période 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 (HoldingRegister, InputRegister, Coil, DiscreteInput, déduite par défaut du type et de l'accès du tag), un numéro de registre à partir de 0, une quantité automatique (Boolean 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 des octets indépendantes, toutes deux réglées par défaut sur le poids fort en premier. Les types de valeur pris en charge sont les mêmes quatre (Boolean, Int32, Float et String) et les codes de fonction de lecture et d'écriture ainsi que les quatre 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

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 quatre types de valeur sont tout le vocabulaire du codec de bus ; les entiers larges 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.