Aide sur test systeme Modbus RTU

Partie du forum pour tout ce qui concerne la partie réseau de communication dans l'industrie. Forum, conseil, astuce et entraide sur le réseau industriel tel que la connexion modbus, ethernet, fipio .
Avatar de l’utilisateur
Klystron
Apprend le binaire
Apprend le binaire
Messages : 9
Inscription : 23 janv. 2022, 18:37

Aide sur test systeme Modbus RTU

Message par Klystron »

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 :lol:

Merci aux spécialistes du Modbus pour leur aide éclairée :idea:
En retour, je peux aider sur ce forum en radiocom / électronique.
Avatar de l’utilisateur
itasoft
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 7037
Inscription : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

Re: Aide sur test systeme Modbus RTU

Message par itasoft »

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
Automaticien privé (de tout)
itasoft@free.fr
Avatar de l’utilisateur
Bernardo59
Dieu du process
Dieu du process
Messages : 957
Inscription : 20 oct. 2015, 05:48
Localisation : Nimes

Re: Aide sur test systeme Modbus RTU

Message par Bernardo59 »

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.
Avatar de l’utilisateur
Klystron
Apprend le binaire
Apprend le binaire
Messages : 9
Inscription : 23 janv. 2022, 18:37

Re: Aide sur test systeme Modbus RTU

Message par Klystron »

itasoft a écrit : 25 janv. 2022, 19:31 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
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 ? :lol:
Avatar de l’utilisateur
Mantysse
Créateur de langage
Créateur de langage
Messages : 749
Inscription : 20 oct. 2015, 08:17
Localisation : MiP

Re: Aide sur test systeme Modbus RTU

Message par Mantysse »

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
"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!
Avatar de l’utilisateur
Klystron
Apprend le binaire
Apprend le binaire
Messages : 9
Inscription : 23 janv. 2022, 18:37

Re: Aide sur test systeme Modbus RTU

Message par Klystron »

Mantysse 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
Merci Mantisse

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é 8-)

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 :lol:
Merci à tous les contributeurs
DurandO
Expert de l'héxadécimal
Expert de l'héxadécimal
Messages : 396
Inscription : 21 mars 2021, 15:31

Re: Aide sur test systeme Modbus RTU

Message par DurandO »

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
Avatar de l’utilisateur
Mantysse
Créateur de langage
Créateur de langage
Messages : 749
Inscription : 20 oct. 2015, 08:17
Localisation : MiP

Re: Aide sur test systeme Modbus RTU

Message par Mantysse »

Mantysse a écrit : 02 févr. 2022, 09:04
0F --> Numéro de fonction --> Force multiple coil register --> Ecriture de plusieurs bits
DurandO a écrit : 08 févr. 2022, 10:56
Mantisse s'est trompé dans n° de fonction: il s'agit de la fonction 15 écriture n bits.
J'vois pas trop la différence entre les 2 8-)
"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!
Avatar de l’utilisateur
Mantysse
Créateur de langage
Créateur de langage
Messages : 749
Inscription : 20 oct. 2015, 08:17
Localisation : MiP

Re: Aide sur test systeme Modbus RTU

Message par Mantysse »

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

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!
DurandO
Expert de l'héxadécimal
Expert de l'héxadécimal
Messages : 396
Inscription : 21 mars 2021, 15:31

Re: Aide sur test systeme Modbus RTU

Message par DurandO »

Mantysse a écrit : 08 févr. 2022, 13:04 J'vois pas trop la différence entre les 2
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é.
Répondre