Communication modbus sur Ethernet
Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

Communication modbus sur Ethernet



  1. #1
    mayonaise

    Communication modbus sur Ethernet


    ------

    Bonjour à tous,

    Je suis en train d'essayer de faire dialoguer un serveur web avec un automate. Mon automate communique grâce au protocole modbus tcp/ip. J'ai trouve un code php sur google code qui permet de dialoguer via une classe php avec des équipements communicants en modbus sur Ethernet, mais cette classe est limitée à modbus udp/ip. je suis donc à la recherche d'une solution parmi ces deux : une passerelle convertissant les données transmises en UDP en TCP et vice versa ou une classe php permettant de dialoguer en modbus tcp/ip. Je précise que si je m'embête à trouver une solution modbus sur Ethernet, c'est pour ne pas avoir un pc qui tourne en permanence avec un résident, donc, les solutions impliquant cette contrainte sont à exclure. Je ne cherche qu'à lire et écrire de multiples registres.

    Merci d'avance pour votre aide si tant est que ce sujet vous parle

    Bonne journée,
    Mayonaise

    -----
    Impose ta chance, serre ton bonheur, va vers ton risque.
    A te regarder ils s'habitueront. ♂

  2. #2
    Fred des montagnes

    Re : Communication modbus sur Ethernet

    Salut,

    Tu pourrais passer par une socket en php?? Je connais pas trop le php, mais... J'ai communiqué en C/C++ avec un automate en Modbus TCP/IP via une socket (port 502). Après il "suffit" d'envoyer tes trames ( écrire des bit(s), lires des bit(s), écrire des entiers, etc...) selon ton applications... Voici quelques liens utiles:

    Format d'une trame (wikipedia)
    Introduction au modbus (voir page 6 pour les fonctions)

    Voici un exemple d'une trame modbus (en C/C++) pour lire un registre:

    Code:
    //-----------------------------------------------------------
    //  Création de la trame modbus (demande de registre)
    //-----------------------------------------------------------
    	
            char trame[12] = {0}; //buffer de la trame
    
    	char LoAdd; //LSB de l'adresse
    	char HiAdd; //MSB de l'adresse
    
    	LoAdd = (adresse & 0x000000FF); //LSB de l'adresse
    	HiAdd = (adresse & 0x0000FF00) >> 8; //MSB de l'adresse
    
    	char LoNbre; //LSB du nb de mots à lire
    	char HiNbre; //MSB du nb de mots à lire
    
    	LoNbre= (nombre & 0x000000FF); //LSB du nombre
    	HiNbre= (nombre & 0x0000FF00) >> 8; //MSB du nombre
    
    	char LoCountRR; //LSB identifiant de la trame
    	char HiCountRR; //MSB identifiant de la trame
    
    	LoCountRR= (count & 0x000000FF); //LSB de l'identifiant
    	HiCountRR= (count & 0x0000FF00) >> 8; //MSB de l'identifiant
    
    		//transaction id
    		trame[0]=HiCountRR; 
    		trame[1]=LoCountRR;
    		//type de protocole 0 = Modbus tcp
    		trame[2]=0x00;
    		trame[3]=0x00;
    		//taille restante du message
    		trame[4]=0x00;
    		trame[5]=0x06;
    		//adresse modbus de l'automate
    		trame[6]=0x01;
    		//code de fonction (3 = lire un registre)
    		trame[7]=03;
    		//adresse de début de lecture (difference depuis le premier registre)
    		trame[8]=HiAdd;
    		trame[9]=LoAdd;
    		//nombre de bytes à lire
    		trame[10]=HiNbre;
    		trame[11]=LoNbre;
    Dernière modification par Fred des montagnes ; 19/10/2011 à 11h27.

  3. #3
    mayonaise

    Re : Communication modbus sur Ethernet

    Salut Fred des montagnes,

    Merci pour ta participation. J'ai vu que le C était un outil parfaitement adapté à la communication modbus, mais malheureusement, il me semble qu'il impliquerai dans mon cas de laisser tourner un résident en permanence sur un PC, or, je souhaiterai un bout de code exécutable sur un serveur web (typiquement, du php). J'ai trouvé ça qui a l'air intéressant, mais la question reste ouverte au cas ou quelqu'un connaitrait d'autres calsses php capables de communiquer par le protocole modbus tcp/ip (et pas exclusivement en modbus udp/ip comme phpmodbus par exemple).

    Je vous tiendrai au courant des avancées et interrêts de la classe en lien.

    Bonne journée,
    Merci encore,

    Mayonaise
    Impose ta chance, serre ton bonheur, va vers ton risque.
    A te regarder ils s'habitueront. ♂

  4. #4
    Fred des montagnes

    Re : Communication modbus sur Ethernet

    Re salut,

    J'avais compris que tu voulais une application web, j'ai posté le code en C pour montrer à un plus bas niveau comment on code une trame modbus TCP-IP. Après je pense que c'est "relativement facile" de transposer le code en php, mais le php, je connais que moyennement, on va dire. Mais du moment qu'on peut envoyer et recevoir un tableau de char sur une socket (port 502 et ip de l'automate), le tour est joué. Après il reste plus qu'à traiter les données (convertir des registres 16 bits (ou plus) répartis sur plusieurs bytes, etc..)

  5. A voir en vidéo sur Futura
  6. #5
    mayonaise

    Re : Communication modbus sur Ethernet

    Re-salut Fred des montagnes,

    je comprends mieux ta démarche et t'en remercie. Je ne connais pas bien le C et c'est quelque-chose qui m'a toujours paru "barbare" du fait que ce soit un langage de bas niveau et je m'attendais à voire quelquechose de très proche de l'assembleur, mais je me rends compte que si tu arrive à pondre un code envoyant une requette modbus TCP en 25 lignes, c'est que c'est plus évolué que je ne voulais bien l'imaginer...

    Le php étant vraisemblablement assez proche du C dans son écriture, c'est du coup très intéressant.

    Merci pour le coup de main !

    A bientôt sur le forum,
    Mayonaise
    Impose ta chance, serre ton bonheur, va vers ton risque.
    A te regarder ils s'habitueront. ♂

  7. #6
    Benny59

    Re : Communication modbus sur Ethernet

    Salut Mayonaise

    Je suis exactement dans la meme recherche que toi à savoir communiquer en PHP avec un automate TSX Micro en modbus TCP/IP.

    J’ai déjà une com avec un PC et un serveur I/O pour avoir une supervision mais ça oblige d’avoir le soft sur le PC ou d’en laisser allumer un pour modifier à distance des variables de l’automate.

    Pour le moment je n’ai pas encore trouvé, si de ton coté tu trouves merci de me communiquer ta façon de faire

    A bientot

  8. #7
    mayonaise

    Re : Communication modbus sur Ethernet

    Salut Benny59

    Tout ce que j'ai trouvé c'est ça : http://code.google.com/p/phpmodbus/ et ça ne fonctionne qu'en modbus UDP, mon automate étant en modbus TCP, j'ai arrêté là. Si tu as du neuf, fais le moi savoir, ça m'intéresse. Apparemment, ce code est développé par Wago qui ne se presse pas pour le rendre interopérable avec ses concurrents...

    A+
    Impose ta chance, serre ton bonheur, va vers ton risque.
    A te regarder ils s'habitueront. ♂

Discussions similaires

  1. Envoi d'informations sur MODBUS avec un PIC
    Par jorg1n dans le forum Électronique
    Réponses: 58
    Dernier message: 16/08/2012, 15h23
  2. Communication entre un modem RS232 et un modem Ethernet
    Par invite266cb2e6 dans le forum Internet - Réseau - Sécurité générale
    Réponses: 0
    Dernier message: 11/05/2011, 11h40
  3. Système avec communication Ethernet via TCP/IP
    Par jorg1n dans le forum Électronique
    Réponses: 11
    Dernier message: 03/12/2010, 14h12
  4. adressage modbus sur liaison serie
    Par invitea25c69bb dans le forum Électronique
    Réponses: 3
    Dernier message: 20/10/2009, 19h27
  5. Modbus Protocol Communication
    Par invitec782be84 dans le forum Électronique
    Réponses: 1
    Dernier message: 27/02/2008, 19h40
Découvrez nos comparatifs produits sur l'informatique et les technologies.