Meilleur auteur de réponses
Envoi de trame TCP/IP ?

Question
-
Bonjour,
Je souhaiterais développer une application qui communique avec un automate en Ethernet au protocole Modbus.
Je vois qu'il y a un composant SerialPort dans Les WindowsForm mais rien concernant TCP/IP. Les recherches ne m'ont pas permis de trouver une réponse c'est pourquoi je m'adresse sur ce forum.
Merci pour votre aide.
Franck
Réponses
-
YES, J'ai trouvé !!!
Merci à tous.
Donc pour ceux qui sont le même cas que moi, voici un exemple très simple:
Pour voir et comprendre ce qui se passe, installer l'analyseur Ethernet Wireshark (freeware)
Ensuite, Reprendre l'exemple de msdn sur la classe TcpClient et appeller la méthode comme cela:
Connect("192.168.0.222", "\x00\x00\x00\x00\x00\x06\x01\x03\x41\x00\x00\x04");
Et indiquer que le port est le 502 (c'est la 1ere instruction de la méthode connect)
Le protocole ModBus s’interprète comme ça:
\x00\x00: Transaction identifier
\x00\x00: Protocol identifier
\x00\x06 : length 6
\x01 : unit identifier
\x03 : fonction 3 soit lecture
\x41\x00: adresse modbus à lire
\x00\x04: nombre de mot à lire
Attention, si vous reprennez l'exemple de msdn telquel, il faudra modifier le type du message passé en paramètre qui est un String et donc les caractères au delà de 0x80 ne passeront pas !
Avec de la persévérance on finit toujours par y arriver, mais je ne comprends pas encore pourquoi on ne trouve pas cette information facilement sur internet...
franck
Toutes les réponses
-
Bonjour,
Peut être en utilisant les sockets ?
http://msdn.microsoft.com/en-us/library/system.net.sockets.socket.aspx
Pour que la discussion puisse être identifiée comme résolue merci de marquer les réponses qui vous ont aidées à solutionner votre problème comme "réponse". -
Bonjour,
La classe System.Net.Sockets.TcpClient permet une implémentation facile d'un client tcp : http://msdn.microsoft.com/fr-fr/library/system.net.sockets.tcpclient.aspx
Vous trouvez un exemple dans la documentation MSDN.
Cordialement.
-
-
Beaucoup d'exemples ici => http://code.google.com/p/nmodbus/
Pour que la discussion puisse être identifiée comme résolue merci de marquer les réponses qui vous ont aidées à solutionner votre problème comme "réponse". -
-
La classe TcpClient ne connait pas le protocole modbus.Elle permet d'envoyer ou de recevoir des octets.C'est à vous de les interpréter selon le protocole Modbus.Si je retrouve, je dois avoir du code Modbus sur une ancienne clé. Jeregarde cela ce soir.
Fred -
YES, J'ai trouvé !!!
Merci à tous.
Donc pour ceux qui sont le même cas que moi, voici un exemple très simple:
Pour voir et comprendre ce qui se passe, installer l'analyseur Ethernet Wireshark (freeware)
Ensuite, Reprendre l'exemple de msdn sur la classe TcpClient et appeller la méthode comme cela:
Connect("192.168.0.222", "\x00\x00\x00\x00\x00\x06\x01\x03\x41\x00\x00\x04");
Et indiquer que le port est le 502 (c'est la 1ere instruction de la méthode connect)
Le protocole ModBus s’interprète comme ça:
\x00\x00: Transaction identifier
\x00\x00: Protocol identifier
\x00\x06 : length 6
\x01 : unit identifier
\x03 : fonction 3 soit lecture
\x41\x00: adresse modbus à lire
\x00\x04: nombre de mot à lire
Attention, si vous reprennez l'exemple de msdn telquel, il faudra modifier le type du message passé en paramètre qui est un String et donc les caractères au delà de 0x80 ne passeront pas !
Avec de la persévérance on finit toujours par y arriver, mais je ne comprends pas encore pourquoi on ne trouve pas cette information facilement sur internet...
franck