IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Fonction 4 du protocole MODBUS/JBUS


Sujet :

C

  1. #1
    Membre confirmé

    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    532
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2011
    Messages : 532
    Points : 604
    Points
    604
    Par défaut Fonction 4 du protocole MODBUS/JBUS
    Bonjour a toutes et tous, je ne suis pas sur d'être au bon endroit mais étant donné que mon programme est développé en C, je tente ma chance ici.

    Voila donc mon problème: j'écris un programme en C qui formate des ordres sous protocole MODBUS/JBUS pour faire de la communication série. Pour faire de la lecture, j'utilise la fonction 4 (Lecture de N mots) qui me permet de lire N mots de 2 octets donc pour faire la demande,, voici par exemple ce que j'envois:

    02 04 00 00 00 09 30 3F
    où 02 = numéro esclave, 04 = code fonction, 00 00 = adresse du premier mot, 00 09 = nombre de mots, 30 3F = CRC16
    Ici donc je veux lire 6 mots de 2 octets dont le premier mot est à l'adresse 0000.

    Le problème est que lorsque je visualise la réponse (grâce au logiciel ComTools), la réponse est trop longue: il semblerait que je lis plus de mots que ce que j'ai demandé (sachant que le nombre de mots lu est aléatoire et n'est jamais en dessous de 9), donc avez-vous une idée du pourquoi ?

    Cordialement,
    Clairet
    Si vous voulez suivre les différents championnats de football américain en France, en Europe et dans le Monde (en tout 32 pays différents), c'est sur www.fandefootus.fr

  2. #2
    Membre expérimenté

    Homme Profil pro
    Collégien
    Inscrit en
    Juillet 2010
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Afghanistan

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Juillet 2010
    Messages : 545
    Points : 1 429
    Points
    1 429
    Par défaut
    En modbus TCP:
    Il te manque l'identifiant de transmission et de protocole soit 4 octets en tête de trame.
    L’identifiant de transmission est incrémenté à chaque nouvelle trame
    Il n'y a pas de cRC

    0x0000 0x0000 0x0006 0x02 0x04 0x0000 0x0009
    TRID PRID LENF UID FCTID ADDR NWORD

    En modbus RTU
    0x02 0x04 0x0000 0x0009 0x0CRC
    UID FCTID ADDR NWORD CRC

    Ta trame semble correcte...

    La reponse sera

    0x02 0x04 0x12 0xDATA0xDATA0xDATA0xDATA0xDATA0xDATA0xDATA0xDATA0xDATA 0xCRC
    UID FCTID NBYTE CRC

  3. #3
    Membre éclairé
    Inscrit en
    Décembre 2010
    Messages
    290
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 290
    Points : 719
    Points
    719
    Par défaut
    Tu pourrais nous donner la réponse que tu reçois ??
    Quelle est sa longueur ?

  4. #4
    Membre confirmé

    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    532
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2011
    Messages : 532
    Points : 604
    Points
    604
    Par défaut
    Citation Envoyé par phi1981 Voir le message
    Tu pourrais nous donner la réponse que tu reçois ??
    Quelle est sa longueur ?
    Je ne peux hélas pas trop renseigner ce sujet et c'est bien la le problème parce que je n'ai pas une "reponse standard mais fausse". Actuellement au lieu avoir 9 mots de 2 octets dans la réponse, j'en ai une fois 10, une fois 12, une fois 11, une fois 12, etc ... le nombre de mots reçu dans la réponse change constamment alors que normalement (du moins comme je l'ai écris dans ma trame) je ne devrais en avoir que 9.
    Si vous voulez suivre les différents championnats de football américain en France, en Europe et dans le Monde (en tout 32 pays différents), c'est sur www.fandefootus.fr

  5. #5
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 371
    Points : 23 626
    Points
    23 626
    Par défaut
    As-tu pu vérifier qu'il ne s'agissait pas d'un problème au niveau de la communication série elle-même ?

    Ça peut arriver parfois si, par exemple, un des pairs ne tient pas compte des bits de start/stop/parité envoyé par l'autre, mais également quand il n'existe pas de dispositif de contrôle de flux (en gros, un signal qui nous indique clairement quand un nouveau mot est arrivé). Il arrive alors parfois que l'on lise plusieurs fois le même mot, avant que l'interface ne reçoive le suivant et mette à jour son registre.

  6. #6
    Membre confirmé

    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    532
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2011
    Messages : 532
    Points : 604
    Points
    604
    Par défaut
    Problème résolu: en faite dans la configuration termios que j'avais récupérer il y avait un ECHO valide d'office, il m'a fallu alors le désactiver et cela marche maintenant
    Si vous voulez suivre les différents championnats de football américain en France, en Europe et dans le Monde (en tout 32 pays différents), c'est sur www.fandefootus.fr

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Envoi caractère 0x00 pour Protocole MODBUS/TCP
    Par nanar06 dans le forum C++
    Réponses: 3
    Dernier message: 31/08/2009, 13h59
  2. [FTP] Fonction ftp_connect et protocole correspondant
    Par gazelle dans le forum Langage
    Réponses: 1
    Dernier message: 21/04/2008, 12h03
  3. protocol modbus
    Par greatboy dans le forum Développement
    Réponses: 7
    Dernier message: 21/01/2008, 10h58
  4. Aide pour la prise en main du Protocole MODBUS/JBUS
    Par homeostasie dans le forum MFC
    Réponses: 24
    Dernier message: 20/05/2006, 15h56
  5. protocole MODBUS et bibliothèque ?
    Par lucky dans le forum MFC
    Réponses: 4
    Dernier message: 04/03/2005, 11h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo