Aide sur test systeme Modbus RTU
Aide sur test systeme Modbus RTU
Bonjour
J'ai besoin d'aide pour composer une séquence MODBUS RTU pour tester un système en labo.
Il s'agit d'un système écrit sous VB6 en 2010 par un collègue parti en retraite. Ce système fonctionne chez un client depuis 12 ans.
En gros, une GTC maitre envoie/reçoit une séquence modbus RTU vers un PC système esclave qui valide une ligne de commande...
Je ne dispose que des infos que le client avait envoyé au collègue en 2010 :
-doc PDF "réseau MODBUS Merlin Gerin 2000 Schneider" 94 pages (facile à trouver sur le web)
- un mail d'infos précises envoyé par l'installateur de la GTC : C joint : https://www.cjoint.com/c/LAznLYi2Hom
-une liste d'action écriture Maitre de 0000 à 0073 par exemple message 0001 = alarme poste EDF
-un programme vb6 écrit par le collègue pour calculer le CRC à partir de la séquence (je sais m'en servir)
-un programme de test obsolète Modbus poll V3.6 de 2003 (!) probablement utilisé par le collègue sur son DEll.
Je cherche à déclencher une alarme Maitre > es. à partir d'un logiciel de test mais je n y parviens pas. La connexion Modbus est reconnue c'est tout.
tout le monde est en 9600 N 8 1 avec les COM RS232 correctes. Mais quand j'envoie une séquence, j'ai droit à timeout error
Je suis étonné du nombre de programme de test gratuits ou payants mais tous d'aspects différents. J'aurais bien aimé trouver quelque chose qui fonctionne dans des cases genre : esclave/fonction/xxxxx/xxxx/CRC etc mais ça n'est pas apparemment aussi simple, il doit y avoir des variantes à n'en plus finir
Merci aux spécialistes du Modbus pour leur aide éclairée
En retour, je peux aider sur ce forum en radiocom / électronique.
J'ai besoin d'aide pour composer une séquence MODBUS RTU pour tester un système en labo.
Il s'agit d'un système écrit sous VB6 en 2010 par un collègue parti en retraite. Ce système fonctionne chez un client depuis 12 ans.
En gros, une GTC maitre envoie/reçoit une séquence modbus RTU vers un PC système esclave qui valide une ligne de commande...
Je ne dispose que des infos que le client avait envoyé au collègue en 2010 :
-doc PDF "réseau MODBUS Merlin Gerin 2000 Schneider" 94 pages (facile à trouver sur le web)
- un mail d'infos précises envoyé par l'installateur de la GTC : C joint : https://www.cjoint.com/c/LAznLYi2Hom
-une liste d'action écriture Maitre de 0000 à 0073 par exemple message 0001 = alarme poste EDF
-un programme vb6 écrit par le collègue pour calculer le CRC à partir de la séquence (je sais m'en servir)
-un programme de test obsolète Modbus poll V3.6 de 2003 (!) probablement utilisé par le collègue sur son DEll.
Je cherche à déclencher une alarme Maitre > es. à partir d'un logiciel de test mais je n y parviens pas. La connexion Modbus est reconnue c'est tout.
tout le monde est en 9600 N 8 1 avec les COM RS232 correctes. Mais quand j'envoie une séquence, j'ai droit à timeout error
Je suis étonné du nombre de programme de test gratuits ou payants mais tous d'aspects différents. J'aurais bien aimé trouver quelque chose qui fonctionne dans des cases genre : esclave/fonction/xxxxx/xxxx/CRC etc mais ça n'est pas apparemment aussi simple, il doit y avoir des variantes à n'en plus finir
Merci aux spécialistes du Modbus pour leur aide éclairée
En retour, je peux aider sur ce forum en radiocom / électronique.
- itasoft
- Mi homme - Mi automate
- Messages : 7035
- Inscription : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: Aide sur test systeme Modbus RTU
slts,
à partir d'un logiciel de test mais je n y parviens pas
--------
il faut essayer avec le programme de test obsolète Modbus poll V3.6 de 2003 , ceci dit pourquoi il serait obsolète le ModBus RTU n'as pas changé depuis 40 ans , voir plus
à partir d'un logiciel de test mais je n y parviens pas
--------
il faut essayer avec le programme de test obsolète Modbus poll V3.6 de 2003 , ceci dit pourquoi il serait obsolète le ModBus RTU n'as pas changé depuis 40 ans , voir plus
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr
- Bernardo59
- Dieu du process
- Messages : 957
- Inscription : 20 oct. 2015, 05:48
- Localisation : Nimes
Re: Aide sur test systeme Modbus RTU
Bonjour,
Le plus simple pour tester ton application c'est de raccorder ton PC maitre à un PC utilisant un port COM et de lancer l'HyperTerminal, PuTTy ou Serial Port Monitor.
De cette manière, tu pourrais visualiser les informations qu'il transmet.
A partir de là, tu pourras discriminer le programme Maitre.
Le plus simple pour tester ton application c'est de raccorder ton PC maitre à un PC utilisant un port COM et de lancer l'HyperTerminal, PuTTy ou Serial Port Monitor.
De cette manière, tu pourrais visualiser les informations qu'il transmet.
A partir de là, tu pourras discriminer le programme Maitre.
Re: Aide sur test systeme Modbus RTU
Merci, mais le problème est que je ne comprends pas la philosophie des logiciels de simulation.
Il n y en a pas deux pareils à part rentrer 9600 N 8 1 et la com !
Je souhaite écrire 010F010000809755 d'un maitre (logiciel de simulation) vers mon PC système esclave
01 0F 0100 0080 9755
Le CRC-16 de 010F01000080 est 9755 en hexa trouvable par ex. avec https://www.tahapaksu.com/crc/ Online CRC calculation (très bien fait)
Modbus poll me propose une case pour l'adresse esclave (01), une autre pour le coil (0100) et c'est tout. OK, mais le reste J'en fais quoi ?
Le CRC par exemple. Aucun logiciel de simulation ne propose de l'écrire quelque part ? Est-il calculé automatiquement et ajouté à la chaine ?
Quelqu'un connait un logiciel de simulation Modbus RTU où il suffirait d'écrire 010F010000809755 puis cliquer sur Write ?
Ca doit être trop simple il doit y avoir un piège ?
Re: Aide sur test systeme Modbus RTU
Bonjour,
Si dessous le décorticage de la trame Modbus que vous nous avez communiqué
01 --> Numéro d'esclave --> Facile c'est le 1
0F --> Numéro de fonction --> Force multiple coil register --> Ecriture de plusieurs bits
0100 --> Adresse de départ dans ton esclave
0080 --> Nombre d'octet a écrire
9755 --> CRC
A priori ce que vous nous avez communiqué est la trame réponse de l'esclave Modbus pas celle du maitre
La trame du maitre sera a priori celle ci
01 --> Numéro d'esclave --> Facile c'est le 1
0F --> Numéro de fonction --> Force multiple coil register --> Ecriture de plusieurs bits
0100 --> Adresse de départ dans ton esclave (256)
0080 --> Nombre d'octet a écrire soit 128
XXX...XXX --> les fameuses valeurs à écrire des 128 octets
XXXX --> le CRC est à calculer avec la nouvelle composition de la trame
Voili voilou
Si dessous le décorticage de la trame Modbus que vous nous avez communiqué
01 --> Numéro d'esclave --> Facile c'est le 1
0F --> Numéro de fonction --> Force multiple coil register --> Ecriture de plusieurs bits
0100 --> Adresse de départ dans ton esclave
0080 --> Nombre d'octet a écrire
9755 --> CRC
A priori ce que vous nous avez communiqué est la trame réponse de l'esclave Modbus pas celle du maitre
La trame du maitre sera a priori celle ci
01 --> Numéro d'esclave --> Facile c'est le 1
0F --> Numéro de fonction --> Force multiple coil register --> Ecriture de plusieurs bits
0100 --> Adresse de départ dans ton esclave (256)
0080 --> Nombre d'octet a écrire soit 128
XXX...XXX --> les fameuses valeurs à écrire des 128 octets
XXXX --> le CRC est à calculer avec la nouvelle composition de la trame
Voili voilou
"Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément." Nicolas Boileau
L'urgence, c'est fait!
L'impossible, c'est en cours!
Pour les miracles, il faut prévoir un délai!
L'urgence, c'est fait!
L'impossible, c'est en cours!
Pour les miracles, il faut prévoir un délai!
Re: Aide sur test systeme Modbus RTU
Merci MantisseMantysse a écrit : ↑02 févr. 2022, 09:04 Bonjour,
Si dessous le décorticage de la trame Modbus que vous nous avez communiqué
01 --> Numéro d'esclave --> Facile c'est le 1
0F --> Numéro de fonction --> Force multiple coil register --> Ecriture de plusieurs bits
0100 --> Adresse de départ dans ton esclave
0080 --> Nombre d'octet a écrire
9755 --> CRC
A priori ce que vous nous avez communiqué est la trame réponse de l'esclave Modbus pas celle du maitre
La trame du maitre sera a priori celle ci
01 --> Numéro d'esclave --> Facile c'est le 1
0F --> Numéro de fonction --> Force multiple coil register --> Ecriture de plusieurs bits
0100 --> Adresse de départ dans ton esclave (256)
0080 --> Nombre d'octet a écrire soit 128
XXX...XXX --> les fameuses valeurs à écrire des 128 octets
XXXX --> le CRC est à calculer avec la nouvelle composition de la trame
Voili voilou
J'ai retrouvé une copie d'écran de mon esclave.
une ligne de réception de données et en dessous la réponse de l'esclave
message maitre : 010F010000801004000000000400000401020600100000823C
réponse esclave : 010F010000805597
Il fallait encore que je puisse envoyer la séquence vers le maitre.
J'ai galéré avec plusieurs simulateurs et je suis tombé sur COMMIX 1.4 et ça a marché
Un simple copier coller de la séquence maitre ci dessus dans la fenêtre avec les bons paramètres / send et hop mon esclave a déclenché une des lignes de commande système.
J'ai juste une question au passage à propos de :
0080 --> Nombre d'octet a écrire soit 128
XXX...XXX --> les fameuses valeurs à écrire des 128 octets
Cela signifie t-il 128 x 8 bits soit "1024" éléments" ? je me doute bien que ce n'est pas ça vu ma séquence compte 50 éléments. Je ne dis pas bit car si j'ai bien compris un bit modbus peut signifier une adresse une valeur etc. ça déstabilise un peu au départ.
De même quand j'ai étudié la DOC MODBUS 2000 Merlin Gérin page 72 "écriture de N bit consécutifs"
Après le N° esclave / la fonction / il y a "l'adresse du premier bit à forcer". OK
Ce qui suit m'a paru imbitable ! "NOMBRE DE BITS A FORCER" ??? j'ai fini par comprendre que ça voulait dire en réalité "NOMBRE D'ADRESSES QUI SUIVENT l'adresse décrite avant".
si on indique 2 ça signifie qu'on s'adressera à deux adresses consécutives par ex. 200 et 201.
il y a du décryptage à faire !
Ok c'est comme tout.. il y a une culture modbus comme il y a par exemple une culture de la grammaire francaise. Un verbe s'appelle l'imparfait ce qui au fond ne veut rien dire ! Pourquoi ne l'a t-on pas appelé "passé imprécis" ? (étudiant, j'allais, tu allais dans les restos U) et le passé simple "passé précis"? (le 10 mai 68 j'allai, tu allas à la manif) ça aurait eu le mérite d'être clair, mais c'est comme ça il faut faire avec
Merci à tous les contributeurs
Re: Aide sur test systeme Modbus RTU
Bonjour,
Mantisse s'est trompé dans n° de fonction: il s'agit de la fonction 15 écriture n bits.
Tu peux en retrouver la description iciProtocole Modbus
Voir en page 17
La trame étant constituée ainsi :
Esclave (01) | Fonction (0F) | Adr.Bit (0100) | nb bits forcés (0080) | Nb Octet (10 soit 16 octets) | valeur de forcage sur 16 octets (128 bits) | CRC
Ceci devrait t'éclairer.
Durand.O
Mantisse s'est trompé dans n° de fonction: il s'agit de la fonction 15 écriture n bits.
Tu peux en retrouver la description iciProtocole Modbus
Voir en page 17
La trame étant constituée ainsi :
Esclave (01) | Fonction (0F) | Adr.Bit (0100) | nb bits forcés (0080) | Nb Octet (10 soit 16 octets) | valeur de forcage sur 16 octets (128 bits) | CRC
Ceci devrait t'éclairer.
Durand.O
Re: Aide sur test systeme Modbus RTU
J'vois pas trop la différence entre les 2
"Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément." Nicolas Boileau
L'urgence, c'est fait!
L'impossible, c'est en cours!
Pour les miracles, il faut prévoir un délai!
L'urgence, c'est fait!
L'impossible, c'est en cours!
Pour les miracles, il faut prévoir un délai!
Re: Aide sur test systeme Modbus RTU
Oui effectivement j'avais un doute si c'était 128 octets ou 128 bits consécutifs, cela semble être 128 bits consécutif, a vérifier.Klystron a écrit : ↑07 févr. 2022, 20:57
Cela signifie t-il 128 x 8 bits soit "1024" éléments" ? je me doute bien que ce n'est pas ça vu ma séquence compte 50 éléments. Je ne dis pas bit car si j'ai bien compris un bit modbus peut signifier une adresse une valeur etc. ça déstabilise un peu au départ.
Attention aussi sur les adresses de départ il y a un décalage de 1 en schneider.
Pour les types d'adresses la ça commence a remonter un peu pour moi, mais l'idée c'est que le préfixe de ton adresse est le type de variable et la fonction.
De mémoire:
- 40xxxx se sont des registres en écriture
- 30xxxx se sont des registres en lecture
la par contre j'ai pas vérifié il y a surement des inexactitudes dans mes propos
A+
"Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément." Nicolas Boileau
L'urgence, c'est fait!
L'impossible, c'est en cours!
Pour les miracles, il faut prévoir un délai!
L'urgence, c'est fait!
L'impossible, c'est en cours!
Pour les miracles, il faut prévoir un délai!
Re: Aide sur test systeme Modbus RTU
16#0F cela fait 15 en décimal : c'est ici que tu t'es trompé. Il n'y a rien de si grave.
Ensuite la confusion venait du nombre d'octet 17. Il manquait l'explication de l'octet 7 nb octet pour comprendre et donc du coup 16 octet de valeur de forçage.
Il est toujours plus facile de corriger les erreurs des autres.
Dommage que ce ne soit pas les cas pour nos propres erreurs : j'en serai le premier avantagé.