TCP/IP Modbus pour Automate

snakzbenjy Messages postés 32 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 23 avril 2009 - 7 juin 2007 à 10:33
 ujyh_cc - 26 août 2015 à 11:14
Bonjour à tous,
Alors voilà je suis en stage (BAC+2) et celà fait plusieurs jours que je m'arrache les cheveux.

Je doit faire un petit programme en Visual Basic (d'où mon post ici ) qui doit envoyer une trame modbus sur mon automate TWIDO. Avec "winsock" j'arrive a envoyer sur mon port ETHERNET. Je le vois grâce à ethereal. Mais imposible de trouver la synthaxe modbus à envoyer. Je pense avoir compris que en ETHERNET il n'y a pas de CRC?

Exemple je veut envoyer la valeur "10" dans le mot %MW25 celà donne :

iput = 01 + 06+ 00 19 + 00 10 
Winsock1.SendData iput

Pouvez-vous m'aider merci d'avance

Cordialement Benjamin

16 réponses

cs_akim77 Messages postés 73 Date d'inscription lundi 12 avril 2004 Statut Membre Dernière intervention 17 septembre 2008 4
8 juin 2007 à 08:13
Salut,

2 solutions à ton problème:

1) Utiliser un simulateur modbus par exemple ModbusPoll et analyser les trames avec    Ethereal

2) Tatonner
J'ai trouvé quelques infos ici:
http://www.codeproject.com/cs/library/Modbus_TCP_class.asp
c'est en csharp mais en interprétant çà pourrait donner ça:

La trame doit avoir le format doit être : Le header sur 12 bytes + les donneés à écrire

data(0) = 0;    ' Slave id high byte
data(1) = 1;    ' Slave id low byte+
data(4) = 0;    ' Complete message size in bytes
data(5) = ?????;    'Complete message size in bytes
data(6) = 0;    'Slave address
data(7) = 6;    ' Function code
data(8) = 0;    ' Start address
data(9) = 25;    ' Start address
'les 3 bytes suivants pour écrire dans plusieurs mots
data(10) = 0;    ' Number of bytes
data(11) = 0;    ' Number of bytes
data(12) = 0;
data(13) = 0;
data(14) = 10;

Cà ne fontionnera certainement pas du premier coup mais c'est une base de travail

Bon courage A +
Akim
1