Modbus TCP quand 2octets pour le unit identifier ?

Partie du forum pour tout ce qui concerne la partie soft, ou logiciel, dans l'industrie. Forum, conseil, astuce et entraide sur les logiciels d'automatisme ou d'informatique industrielle .
charly
Code son premier grafcet
Code son premier grafcet
Messages : 36
Inscription : 03 oct. 2017, 17:19

Modbus TCP quand 2octets pour le unit identifier ?

Message par charly »

Bonjour

Je suis électronicien et électricien, en gros un spectre large mais qui saute l'objet de ce forum : l'automatisme. Je développe des appareils électroniques de collecte de données en milieu industriel ou dans la nature ou des interfaces capteurs (que les automates viennent interroger).

Je pratique le modbus RTU sur RS485 depuis des années et là je dois faire causer un système ne modbus TCP.
Si je regarde la doc de modbus.org
http://www.modbus.org/docs/Modbus_Messa ... _V1_0b.pdf
Tout est bien expliqué sauf que le premier soft d'essai que j'ai trouvé "symply ModbusTCP client" propose de passer sur 2 octets cette adresse.
Et hier j'étais chez un client industriel équipé d'un gros système siemens en modbus TCP, j'en profite pour regarder les propriétés des périphériques sur l'écran et je vois des adresses largement >255...

Du coup je ne comprends plus, pourquoi le doc officiel de modbus.org ne parle pas de ça ?
Comment un réseau modbus TCP peut-il gérer 1 ou 2 octets en même temps ?

Merci par avance pour vos éclairages.

PS : je vois que j'apprends le binaire... c'est faux ! :P Il n'y a que 10 sortes de personnes dans le monde : celles qui comprennent le binaire et les autres ;)
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: Modbus TCP quand 2octets pour le unit identifier ?

Message par itasoft »

Slts,
Pas tout compris, mettre un exemple de ton adressage.
Sinon, disons que l’adressage IPv4 c’est sur 4 octets, valeurs décimales séparés par des points
Ex : 192.168.1.1
l’adressage IPv6 c’est sur 8 groupes de 16 bits, valeurs Hexa séparés par deux points
EX : 2001:0DB8:0000:85A3:0000:0000:AC1F:8001

Ta valeur supérieure à 255 c’est en décimal ou en hexadécimal ????
Automaticien privé (de tout)
itasoft@free.fr
charly
Code son premier grafcet
Code son premier grafcet
Messages : 36
Inscription : 03 oct. 2017, 17:19

Re: Modbus TCP quand 2octets pour le unit identifier ?

Message par charly »

Je comprends rien au MBAP, l’entête de la trame MODBUS TCP

dedans il y a un (voir page 5/46 de la doc MODBUS ci dessus) :
>"Transaction identifier" sur 2 octets qui ne sert qu'au client (le serveur le recopie sans modif), ok pas de soucis
>"Protocole identifier" sur 2 octets, à 0 pour le MODBUS, le serveur la recopie sans modif, ok pas de soucis mis à part le fait que je ne vois pas son intérêt puisque on parle de MODBUS et que je ne vois donc pas ce que ça pourrait être comme autre protocole que modbus.... :roll:
>"Lenght" sur 2 octets, ok c'est bien pratique.
> et "Unit Identifier" sur 1 octet et c'est là que je ne pige pas tout

Ce Unit Identifier est il uniquement utilisé quand le client TCP parle à un Serveur TCP de type passerelle RS485 et on se sert de ce UnitIdentifier pour désigner le slave RS485 qui est géré par la passerelle ?
Qu'en fait on quand on ne parle pas à une passerelle mais à un serveur TCP "normal" ?
Pourquoi ce soft que j'ai trouvé parle de la possibilité de mettre ce Unit identifier sur 2 octets ?

Merci
Avatar de l’utilisateur
JAPIB
Aguerri de l'automation
Aguerri de l'automation
Messages : 84
Inscription : 20 oct. 2015, 23:32
Localisation : Lyon

Re: Modbus TCP quand 2octets pour le unit identifier ?

Message par JAPIB »

L'Unit Identifier est utilisé pour communiquer avec un esclave Modbus RTU ou Modbus Plus, à travers une passerelle (Ethernet - Liaison série).
Il remplace le champ adresse d'une trame Modbus RTU "classique". Normalement c'est 1 octet.
Quand je travaille avec MODBUS TCP, sans utiliser d'esclave Modbus RTU, je le laisse à 1 et ça marche bien. :D
charly
Code son premier grafcet
Code son premier grafcet
Messages : 36
Inscription : 03 oct. 2017, 17:19

Re: Modbus TCP quand 2octets pour le unit identifier ?

Message par charly »

J'ai trouvé une doc Schneider du m540 qui raconte la même chose (mais avec valeur par défaut à 255), qu'est ce que c'est que ce soft de simulation que j'ai trouvé ????? m'a embrouillé ce truc !

Donc pour simplifier quand vous faites du modbus TCP vous avez à paramétrer
>l'IP du serveur
>Éventuellement le unit identifier si vous passez par une passerelle pour accéder à un périphérique RS485
>une adresse de début de 0 à 65535
>une fonction modbus
> un nombre de mot ou coil ou... que vous souhaitez lire ou écrire
bref à part l'IP il y a que la définition et les paramètres de la fonction MODBUS à utiliser.

C'est ça ?

Merci
Avatar de l’utilisateur
Schul
Forcené des structures
Forcené des structures
Messages : 179
Inscription : 28 mai 2017, 16:55
Localisation : reims

Re: Modbus TCP quand 2octets pour le unit identifier ?

Message par Schul »

charly a écrit : 05 oct. 2017, 08:37 J'ai trouvé une doc Schneider du m540 qui raconte la même chose (mais avec valeur par défaut à 255), qu'est ce que c'est que ce soft de simulation que j'ai trouvé ????? m'a embrouillé ce truc !

Donc pour simplifier quand vous faites du modbus TCP vous avez à paramétrer
>l'IP du serveur
>Éventuellement le unit identifier si vous passez par une passerelle pour accéder à un périphérique RS485
>une adresse de début de 0 à 65535
>une fonction modbus
> un nombre de mot ou coil ou... que vous souhaitez lire ou écrire
bref à part l'IP il y a que la définition et les paramètres de la fonction MODBUS à utiliser.

C'est ça ?

Merci
Pour moi le unit id n'est pas optionnel, 255 si pas utilisé ou par défaut, mais si tu ne pointes pas sur le bon ça ne marchera pas (cf conf avec les vars et les passerelles sur les cartes de comm)
charly
Code son premier grafcet
Code son premier grafcet
Messages : 36
Inscription : 03 oct. 2017, 17:19

Re: Modbus TCP quand 2octets pour le unit identifier ?

Message par charly »

Prenons un automate qui fait serveur MODBUS TCP et présente une table modbus, il ne fait pas passerelle, que serveur TCP. On est bien d'accord que chez lui le unit ID ne sert à rien. Valeur par défaut 255 ou 1 comme fait JAPIB ou 2 ou 3... c'est pour préciser le slave RS485 à connecter sur une passerelle que ça sert , non ?
Avatar de l’utilisateur
Schul
Forcené des structures
Forcené des structures
Messages : 179
Inscription : 28 mai 2017, 16:55
Localisation : reims

Re: Modbus TCP quand 2octets pour le unit identifier ?

Message par Schul »

Alors, ça sert à rien oui je suis d'accord, maintenant même si il n'est pas utilisé c'est conseillé de mettre 255 ou 0 (si tu peux)
Capture.JPG
Je suis franchement pas certain que si tu n'as pas de passerelle RS (ce qui à priori est le cas) et que tu lui mets un id à 2,3 ou XX autre que 255 ou 0 cela fonctionne, je serais curieux d'avoir ton retour là dessus, parceque moi le nombre de fois ou j'ai été obligé de lui adresser un id identique entre le serveur et le client même si je n'avais pas de passerelle RS pour que ça fonctionne...
charly
Code son premier grafcet
Code son premier grafcet
Messages : 36
Inscription : 03 oct. 2017, 17:19

Re: Modbus TCP quand 2octets pour le unit identifier ?

Message par charly »

JAPIB pourra sans doute nous dire sur quel serveurs il bosse pour que le 1 passe tout le temps.

Dans tous les cas j'ai pigé le truc, merci à tous
Répondre