Le taux de rafraîchissement des données Modbus dépend de plusieurs paramètres non évidents. Au stade de la conception, le problème se pose de savoir comment évaluer la vitesse d'une future ligne d'interface. Dans cet article, nous considérons les facteurs affectant la vitesse de mise à jour des données sur Modbus RTU, faisons quelques calculs standard, et à la fin de l'article, il y aura un lien vers le calculateur Web de la vitesse de la ligne Modbus RTU.Modbus reste le protocole de communication le plus utilisé pour les équipements industriels. Une description du protocole et les raisons de sa prévalence peuvent être trouvées dans de nombreux articles, par exemple ici . Il est également entendu que vous connaissez les principes de base du fonctionnement du protocole.Nous considérerons Modbus RTU, mais les résultats seront partiellement applicables à Modbus TCP.Pour calculer la vitesse, nous commençons par considérer le protocole physique (1er niveau du modèle OSI). Modbus RTU utilise l'interface physique RS-485, RS-422 ou RS-232 (cette dernière n'est pratiquement pas utilisée pour Modbus). Pour la transmission du signal, ces interfaces utilisent UART (Universal Asynchronous Receiver-Transmitter). Vous pouvez en savoir plus sur UART ici .Un package UART standard comprend:- bit de départ () 1 bit
- données utiles (data) 7-8 bits
- bit de parité (parity_bit) 0-1 bit
- bit d'arrêt (stop_bit) 1-2 bits
C'est-à-dire que pour 7 à 8 bits de données utiles, 2 à 4 bits auxiliaires sont transmis. Taux de charge utile (Vdata) sera inférieure à la vitesse de l'interface (Vuart) CalculerVdata peut être selon la formule:Vdata=Vuart∗datastart_bit+data+parity_bit+stop_bit
Ensuite, vous devez comprendre comment le maître Modbus communique avec les esclaves au niveau de la couche liaison de données (modèle OSI niveau 2). En raison des particularités de l'interface physique de l'appareil, connecté à la ligne, transmettre des données séquentiellement, c'est-à-dire qu'un seul appareil à la fois peut envoyer des données. Pour cette raison, l'assistant communique avec les esclaves de manière cyclique, lisant et écrivant séquentiellement des registres aux esclaves. Le cycle complet de lecture des registres de l'esclave ressemblera à ceci:- délai (3,5 caractères minimum = 28 bits, comptez ci-dessous en secondes)
- transmission de la demande de lecture (8 octets)
- retard dans la réponse du périphérique esclave (au moins 28 bits, souvent des dizaines de millisecondes pour former un message de réponse)
- transmission esclave d'un message de réponse (maximum 256 octets pour Modbus RTU).
Certains ingénieurs choisissent une version à quatre fils de l'interface, espérant une transmission plus rapide (impliquant un transfert parallèle de données vers la réception et la transmission). Évidemment, cette solution ne fonctionne pas. La séquence d'envoi des données sera la même pour les lignes à 2 et 4 fils.Nous calculons le temps passé sur un cycle de lecture complet de 125 registres de maintien (le nombre maximum pour Modbus RTU) avec les paramètres de ligne suivants:Format de trame: 8N1 (8 bits de données, pas de bit de parité, 1 bit d'arrêt)Vitesse uart:Vuart= 19200 bit / sTaux de transfert de charge utile:Vdata= 15360 bit / sMaster Delay:master_silence = 28 bits / Vuart(c'est le délai minimum autorisé, généralement plus)Délai de réponse de l'esclave:slave_silence= 0,04 s (la valeur dépend du périphérique esclave)Envoi d'une requête avec 125 registres de maintien: 8 octets ou 64 bitsRéponse avec 125 registres de maintien: 256 octets ou 2048 bitsFormule de calcul du temps de cycle de lecture:Tcycle=silence_master+64bit/Vdata+slave_silence+2048bit/Vdata=0.179s
La séquence d'écriture des registres est presque identique. La taille de l'emballage du maître sera plus grande, car Comprend des informations sur les registres inscriptibles. La confirmation d'un enregistrement réussi de l'esclave sera de 8 octets.Selon la spécification Modbus, 32 esclaves peuvent être connectés à la ligne RS-485/422. L'interrogation des esclaves est également effectuée de manière séquentielle, généralement en cercle. Pour comprendre à quelle vitesse les données seront mises à jour à partir deN les esclaves doivent se multiplier Tcyclesur le NAppelez-le le temps de mise à jour complet. Tfull.Quelques calculsTfull(lire et écrire le nombre maximum de registres de maintien) pour différents paramètres de communication:Format de trame: 8N1,Vuart = 19200 bit / s, nombre d'esclaves, N= 16Tfull= 5,727 sFormat de trame: 8N1,Vuart = 9600 bit / s, nombre d'esclaves, N= 16Tfull= 10,173 sFormat de trame: 7E1,Vuart = 19200 bit / s, nombre d'esclaves, N= 16Tfull= 6,355 sFormat de trame: 8N1,Vuart = 19200 bit / s, nombre d'esclaves, N= 2Tfull= 0,716 sComme vous pouvez le voir, le format de trame affecte le temps de mise à jour des données, mais pas beaucoup. La vitesse de transfert de données affecte de manière significative, mais dans notre exemple, nous transférons le nombre maximum de registres, dans des projets réels, ce facteur peut ne pas être si important. Surtout, le nombre d'esclaves affecte le taux de rafraîchissement des données.Pour simplifier les calculs, nous avons réalisé une application web pour estimer le temps de mise à jour des données via Modbus