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, atteint 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, vitesse, 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 Par défaut
Nom Le nom convivial 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 à cet instant (avec un Actualiser pour le branchement à chaud d'un adaptateur); la liste détectée est une commodité, jamais une liste blanche. COM1
Vitesse 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 le nombre de bits d'arrêt. Les autres largeurs, la parité marque et espace et les 1,5 bit d'arrêt ne sont pas pris en charge. 8E1
Délai de réponse (ms) La plus longue attente de la réponse d'une unité, de 100 à 60 000. Un délai plus long accommode un équipement lent mais rend une unité absente, et la découverte, plus lentes à identifier. 1000
Intervalle minimal entre transactions (ms) Une cadence de compatibilité pour toute la ligne, de 0 à 1000. Zéro ne garde que le silence automatique du protocole; une valeur positive peut le relever, jamais le réduire. 0

Le protocole lui-même exige un silence entre les trames, et la ligne l'impose toujours : à 19 200 bauds ou en dessous, le silence automatique vaut 3,5 temps de caractère calculés à partir du 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 montre les deux valeurs. Relever 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 se configurer d'abord. Chaque port physique appartient à une ligne au plus, comparé sans tenir compte de la casse et même pendant que les lignes sont désactivées. Le nom et l'intervalle entre transactions restent modifiables pendant que la ligne fonctionne (une modification de temporisation prend effet sans refermer le port); le port, la vitesse, le format et le délai de réponse sont verrouillés pendant que la ligne est activée : désactivez-la et enregistrez d'abord. Désactiver une ligne arrête la communication pour tous ses équipements sans changer leur choix Activé individuel.

La ligne signale le transport physique séparément de ses équipements : Éteinte, Au repos (aucun équipement activé), Connexion, En ligne, ou Défaillance du 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 Par défaut
Ligne série Fixe : un équipement est créé sous sa ligne et hérite du tuple physique, montré en lecture seule dans le volet. Ajoutez l'équipement sous la ligne voulue. aucun
Identifiant 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 d'exécution interne 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 convivial.

Le comportement d'une ligne partagée

Le pilote ouvre une seule session série par ligne et sérialise chaque requête de chaque équipement par 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 promptement, mais écrire sans arrêt ne peut pas affamer la scrutation. Les délais de chaque unité sont isolés avec un recul progressif, si bien qu'un équipement muet ne ralentit que lui-même. Une exception Modbus au CRC valide est une erreur de requête sur ce tag : la ligne reste saine. Seule une panne d'entrée-sortie physique (le port qui disparaît, l'adaptateur débranché) invalide la session partagée et lance une seule réouverture coordonnée pour toute la ligne. Le dernier équipement à se libérer ferme le port.

Adressage d'un tag

L'adressage d'un tag 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 (booléen 1 registre, Int32 et Float 2, texte 4; la zone n'est dessinée que sur les tags de texte, parce que toute autre largeur est fixe), et les deux zones d'ordre indépendantes, toutes deux à poids fort en premier par défaut. Les types de valeur pris en charge sont les mêmes quatre, booléen, Int32, Float et texte, et les codes de fonction de lecture et d'écriture et 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'identifiants d'unité sur une ligne existante et vit dans le volet de cette ligne :

Champ Sens Par défaut
Unité de début Le premier identifiant d'unité à sonder, de 1 à 247. 1
Unité de fin Le dernier identifiant 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 registre. Une exception Modbus au CRC valide prouve qu'une unité est présente sans en revendiquer l'identité; un délai dépassé ou une trame invalide ne le prouvent pas.

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. Annuler ferme la session série et laisse les résultats déjà montrés comme des candidats passagers, jusqu'à ce que vous les ajoutiez explicitement. Un identifiant 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 d'une ligne partagent une seule réservation par port physique, qui échoue tout de suite : un balayage et un changement de réglages ne peuvent donc pas se disputer le port, et le perdant apprend quelle opération le tient.

Des limites bonnes à connaître

  • Les quatre types de valeur sont tout le vocabulaire du codec du bus; les entiers larges et Double ne sont pas offerts.
  • Le débit est une propriété du bus : chaque équipement de la ligne partage un unique flux de requêtes, cadencé par le silence inter-trames effectif, si bien que beaucoup d'équipements ou un intervalle relevé allongent chaque cycle de scrutation.