Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1481 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  PHP et Modbus/TCP

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

PHP et Modbus/TCP

n°1692600
pedro001
Posté le 26-02-2008 à 10:02:07  profilanswer
 

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 :
  1. $idtransaction = 0x00;
  2. $idtransaction2 = 0x00;
  3. $idprotocole = 0x00;
  4. $idprotocole2 = 0x00;
  5. $esclave = 0x01;
  6. $longueur = 0x00;
  7. $longueur2 = 0x05;
  8. $fonction = 0x06;
  9. $adressemot = 0x00;
  10. //$comptemot = 0x01;
  11. //$compteoctet = 0x02;
  12. $valeur = 0x0f;
  13. $req = $idtransaction.$idtransaction2.$idprotocole.$idprotocole2.$esclave.$longueur.$longueur2.$fonction.$adressemot.$valeur;
  14. echo '<br> Requete Modbus : '.$req;
  15. $write_len=strlen($req);
  16. 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 !!  
 

mood
Publicité
Posté le 26-02-2008 à 10:02:07  profilanswer
 

n°1692680
leflos5
On est ou on est pas :)
Posté le 26-02-2008 à 11:54:20  profilanswer
 

Et avant de partir ça semble bon :??:
Ca coincerait pas au niveau du socket (son type/protocole utilisé) :??:

n°1692759
pedro001
Posté le 26-02-2008 à 13:12:10  profilanswer
 

Alors pour ce qui est do socket, le domaine est AF_INET, le type est sock_stream, le tout sur le protocole tcp...J'pense que c'est bon non?

n°1737310
B-NeT
Posté le 26-05-2008 à 17:02:52  profilanswer
 

Salut je réalise exactement la même chose sauf que je le fait en C et je bloque comme toi...
 
En fait mon soucis viens du fait que lorsque je regarde sous Ethereal l'état des informations qui circule sur le réseau entre mon automate et mon pc superviseur, il m'indique qu'il rencontre des erreurs de checksum alors qu'en MODBUS TCP la partie CRC n'a pas besoin d'être gérer car la couche TCP "s'occupe" des erreurs de transmissions  :whistle:  
 
Ensuite j'aimerais savoir si il n'y aurait pas une méthode qui me permettrais de m'assurer  que je suis bel et bien connecté à mon socket et au port 502 (port utilisé pour les communication avec MODBUS) ?
 
Voilà merci  :pt1cable:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  PHP et Modbus/TCP

 

Sujets relatifs
Script PHP / uploadinclude PHP: garder le chemin du module intégré
[PHP] Demande de script[PHP] Récupérer les noms de tous les fichiers
[PHP][MAIL] Envoyer un message d'échec de distribution[Résolu de par moi-même][PHP] Récupérer l'url d'une image uploadée
[PHP] La redéfinition est-elle possible ou pas ?indentation d'un flux XML - script PHP ?
Upload PHP ok mais fichier déplacé = 0 octets 
Plus de sujets relatifs à : PHP et Modbus/TCP


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR