Salut tout le monde!!
J'suis actuellement en 2ème année de BTS info et réseaux et pour mon projet de fin d'année, de dois réaliser uen application capable de piloter un système automatisé en modbus tcp via un programme php.
J'ai fait pas mal de recherches pour trouver comment se construisait la trame, mais là je sèche.
J'ai donc ce code (je vous passe l'étape création/connexion du socket) :
Code :
- $idtransaction = 0x00;
- $idtransaction2 = 0x00;
- $idprotocole = 0x00;
- $idprotocole2 = 0x00;
- $esclave = 0x01;
- $longueur = 0x00;
- $longueur2 = 0x05;
- $fonction = 0x06;
- $adressemot = 0x00;
- //$comptemot = 0x01;
- //$compteoctet = 0x02;
- $valeur = 0x0f;
- $req = $idtransaction.$idtransaction2.$idprotocole.$idprotocole2.$esclave.$longueur.$longueur2.$fonction.$adressemot.$valeur;
- echo '<br> Requete Modbus : '.$req;
- $write_len=strlen($req);
- socket_write($sock,$req,$write_len);
|
En sachant qu'une trame modbus tcp se construit de cette façon :
id_transaction (2 octets) | id-protocole (2 octets) | longueur (2 octets) | identifiant (1 octet) | puis les données modbus
Je devrais être pas mal!
Seulement quand j'analyse les trames avec ethereal, mon id_transaction se transforme en 0x30 0x30, idem pour le protocole, la longueur en 0x31 0x30, mon identifiant en 0x35 et la fonction modbus en 0x36...
Du coup aucun chance que la trame fonctionne !
J'aimerai donc avoir un peu d'aide s'il vous plait, par pitié pour mes cheveux !!