Modbus TCP quand 2octets pour le unit identifier ?
Modbus TCP quand 2octets pour le unit identifier ?
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 ! Il n'y a que 10 sortes de personnes dans le monde : celles qui comprennent le binaire et les autres
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 ! Il n'y a que 10 sortes de personnes dans le monde : celles qui comprennent le binaire et les autres
- itasoft
- Mi homme - Mi automate
- Messages : 7037
- Inscription : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: Modbus TCP quand 2octets pour le unit identifier ?
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 ????
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
itasoft@free.fr
Re: Modbus TCP quand 2octets pour le unit identifier ?
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....
>"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
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....
>"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
Re: Modbus TCP quand 2octets pour le unit identifier ?
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.
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.
Re: Modbus TCP quand 2octets pour le unit identifier ?
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
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
Re: Modbus TCP quand 2octets pour le unit identifier ?
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 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
Re: Modbus TCP quand 2octets pour le unit identifier ?
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 ?
Re: Modbus TCP quand 2octets pour le unit identifier ?
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)
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...
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...
Re: Modbus TCP quand 2octets pour le unit identifier ?
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
Dans tous les cas j'ai pigé le truc, merci à tous