Modbus tcp .... besoin d'aide !

Signaler
Messages postés
2
Date d'inscription
samedi 28 avril 2007
Statut
Membre
Dernière intervention
7 janvier 2009
-
Messages postés
28
Date d'inscription
mardi 14 octobre 2008
Statut
Membre
Dernière intervention
15 avril 2011
-
Bonjour,

  Je suis en BTS (IRIS 2nd année), pour mon projet j'aurai besoin d'information sur le protocole modbus TCP.

Si vous avez des exemples de code (C++), je suis preneur !   

j'ai commencé à développer en utilisant les sockets, mais pour la trame du protocole modbus TCP, c'est pas très clair ....  

   Toute les informations seront les bien venu .... 

5 réponses

Messages postés
75
Date d'inscription
samedi 3 décembre 2005
Statut
Membre
Dernière intervention
30 juin 2013

bonjour,
bien que votre post dans ce forum n'est pas sussiter beaucoup de réponse, je me permet de poster ici dans l'espoir que vous receviez ce message et que vous acceptiez de m'aider, car je me trouve aujourd'hui dans la même situation que vous le 10 mars 2008.

je suis en 2eme année de bts informatique et mon projet de bts consiste a programmer un serveur sur windows CE et un client sur une machine du reseau, le tout communiquant par Modbus/TCP.

ma requête est simple: avez vous dans vos archives des exemples de programmes qui gére la communication Modbus/tcp a me transmettre?
A l'attention de 7piccolo7 et de tout le monde sur ce forum!
merci d'avance.
Messages postés
2
Date d'inscription
samedi 28 avril 2007
Statut
Membre
Dernière intervention
7 janvier 2009

Salut !

Bon c'est vrais que ce post est carrément vieux (je l'avais zappé complet)!
Depuis j'ai réussi a me sortir de la m***e !

Bien sur je peut te donner des exemples de code (c'est opensource  ) tu en feras ce que tu veux.
Fait moi savoir si tu es toujours intéressé. Je te répondrai dans les plus bref délais.

Enfin voila,

By

PS : Au fait entre temps j'ai eu mon BTS et j'ai pas trop mal réussi en info ! 
Messages postés
75
Date d'inscription
samedi 3 décembre 2005
Statut
Membre
Dernière intervention
30 juin 2013

et oui quand on post sur des forums il arrive qu'on soit surpris lontemps aprés! en tout cas merci de me répondre.
 Si t'a des exemples de code qui sont ou peuvent être mis en ligne, en cas si t'as la motive de mettre les liens sur le forum, mais sinon je t'es envoyer un message privé avec mes coordonnées electronique.
Cdt
Messages postés
4
Date d'inscription
jeudi 1 février 2007
Statut
Membre
Dernière intervention
21 janvier 2009

voila

a mon tour de passer le bts iris

et comme vous je dois utiliser le modbus tcp,je n'arrive pas a envoyer des trames correct pour qu'il me reponde petit exemple de code :
-------------------------------------------------------------------------------------------------------
#include <winsock2.h> // pour les fonctions socket
#pragma comment(lib,"ws2_32.lib") //pour l'ajout de la librairie au projet
#include <stdio.h>

void main()
{

// Initialisation
    WSADATA Struct;
    SOCKET ID;
    SOCKADDR_IN SocketInf;

    int TailleSocket=sizeof(SocketInf);
       char Trame[8]={0x01,0x03,0x00,0x02,0x00,0x01,0x25,0xCA};
    char buffer[8000];

    int Start=WSAStartup(MAKEWORD(2,2),&Struct);

    if(!Start)
    {
        printf("Initialisation de la socket ok!\n");

    // Creation de la socket
        ID=socket(AF_INET,SOCK_STREAM,0);
   
        if(ID==INVALID_SOCKET)
            printf("Probleme de creation de la socket\n");
        else
        {   

            printf("Creation de la Socket ok !\n");
        //Liaison de la socket avec un port et une adresse ip
            SocketInf.sin_family=AF_INET;
            SocketInf.sin_addr.s_addr=inet_addr("172.16.4.5");// ip de l'automate
            SocketInf.sin_port=htons(502);// port protocole modbus
 
    if(connect(ID,(sockaddr*)&SocketInf,sizeof(SocketInf))==INVALID_SOCKET)
                printf("Pb Liaison !\n");
    else
        printf("Liaison ok !\n");

    // Envoi   
        if(send(ID,Trame,8,0))
            printf("Message Envoyer : %s\n",Trame);

        // Recevoir
        // le programme s'arrete ici il attend une réponse ...

        if(recv(ID,buffer,8000,0))
        {
            printf("Reception message : %x\n",buffer[0]);
            printf("Reception message : %x\n",buffer[1]);
            printf("Reception message : %x\n",buffer[2]);
            printf("Reception message : %x\n",buffer[3]);
            printf("Reception message : %x\n",buffer[4]);
        }
   
            //fermeture de la socket
            if(!closesocket(ID))
                printf("Socket de communication Ferme\n");
            else
                printf("Socket de communication ouvert\n");
           
            if(!WSACleanup())
                printf("DLL Fermer\n");
            else
                printf("Socket de communication ouvert\n");
           
        }
    }   

}

----------------------------------------------------------------------------------------------------------------------
autre code pour calculer le crc que j'ai developper depuis l'algo du site :http://thierry.coten.free.fr/modbus.html
------------------------------------------------------------------------------------
#include "stdio.h"

void main()
{
    //char TrameSansCrc[6]={0x01,0x03,0x00,0x02,0x00,0x01};
   
    int crc=0xFFFF;
    int flag=0;    int    i=0;

    int    n=0;

    do
    {
        crc = (crc^TrameSansCrc[i]); // XOR entre le crc et l'octet
        n=1; // n a 1
        do
        {
                flag=(crc & 0x0001);// Récupere le dernier bit
                crc=crc>>1;// Décalage a droite,perte du bit de droite qui a était récupéré dans flag

                if (flag) // Si le bit contenu dans flag vaut 1
                    crc=crc^0xA001; // Alors on fait un Xor avec le polynome A001                // Polynôme 2^15 + 2^13 + 2^0 0xA001.
       
            n=n+1;

        }while(!(n>8));// Parcour les bits de l'octet

        i++;
    }while(i!=5); // Parcour la trame

    printf("Crc obtenu sans inversion PF pf :  %x\n",crc);
}

voila si qqun pourrait m'aider svp
merci
Messages postés
28
Date d'inscription
mardi 14 octobre 2008
Statut
Membre
Dernière intervention
15 avril 2011

Bonjour 7Piccolo7,

Peux-tu m'envoyer tes sources pour le dialogue Modbus/tcp svp ?

Cordialement.