Trame RS485 vers trame Modbus
Répondre à la discussion
Affichage des résultats 1 à 12 sur 12

Trame RS485 vers trame Modbus



  1. #1
    La-Banane

    Lightbulb Trame RS485 vers trame Modbus


    ------

    Bonjour,

    Je suis en ce moment face à un problème de taille ... Je souhaite mettre en place la surveillance automatisée d'une pompe qui fonctionne avec une interface RS485. En envoyant une requête dédiée et en utilisant un soft fournit par le fabricant je peux récupérer la "réponse" de ma pompe dans un fichier log.

    Mon système d'automatisation fonctionne en Modbus over TCP/IP et voici ce que je reçois dans mon fichier log :
    TX:#000STA
    RX:#000,001100,000000,000000,0 4800,0582,000,031,000,08308

    Ceci n'est donc pas du tout une trame Modbus ... J'aimerai donc la convertir et la rendre disponible sur le réseau.

    Je dispose de toute les infos concernant le protocole (vitesse, parité etc ...) et la trame reste fixe
    #adr,tttttt,pppppp,bbbbbb,aaaa a,hhh,ddd,sss,xxxxx

    Où adr correspond à l'adresse de la pompe.

    Mes connaissances en réseau étant limitées j'ai assez de mal à trouver un moyen adapté. Par contre j'ai pas mal de connaissance en programmation notamment en C et je maitrise assez bien LabView.

    Il ne me semble pas avoir vu un post correspondant donc ...

    Merci d'avance !

    -----

  2. #2
    La-Banane

    Re : Trame RS485 vers trame Modbus

    Je pense avoir oublié une précision, mon but est de "séparer" les valeur qui constituent, dans le message précédent, une trame unique et ensuite de les rendre disponible en Modbus.

    J'espère que je suis assez claire ...

    Merci !

  3. #3
    grosmatou75001

    Re : Trame RS485 vers trame Modbus

    Bonsoir et bienvenue sur fs.

    J'espère que je suis assez claire ...
    Pas pour moi en tout cas... Où est la question?

  4. #4
    La-Banane

    Re : Trame RS485 vers trame Modbus

    Merci d'avoir répondu et désolée ...

    D'un côté j'ai une pompe qui communique en RS485 de l'autre un PC sur lequel je récupère des datas de différents API par Ethernet.

    Comment puis-je faire pour rendre disponible les datas du port RS485 afin de les traiter comme si elle venait d'un de mes API ?

    C'est à dire "séparer" cette trame (message précédent) que je reçois en une seule fois par Hyperterminal.

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

    Re : Trame RS485 vers trame Modbus

    Ca doit être moi... Ton soucis c'est le raccordement électrique de la pompe sur le PC c'est-à-dire que tu cherches un composant pour ça ou (vu le forum) le soucis c'est la partie programmation en C ou autre? Dans le deuxième cas regarde la fonction strtok() du string.h.
    Dernière modification par grosmatou75001 ; 22/10/2013 à 19h01.

  7. #6
    La-Banane

    Re : Trame RS485 vers trame Modbus

    Oui on m'a déjà parler de cette fonction je pense que c'est ce qu'il me faut.

    Je vais utiliser ce petit programme (en pièce jointe) que j'ai trouvé sur le Web pour récupérer la trame dans une variable "string" et ensuite la séparer grâce à strtok().

    Mais quelques chose me dérange encore, lorsque j'envoie la commande #000STA à la pompe celle-ci renvoie directement la trame.
    Dans ce programme on voit 2 fonctions : une pour recevoir et une pour envoyer à partir/du port série, mais je n'ai pas besoin de "recevoir" car la pompe renvoie automatiquement les données, celles-ci seront alors stockées dans une mémoire "tampon" jusqu'à ce que j'envoie la commande recevoir ?

    Pour faire la conversion RS485/Ethernet je vais utiliser un "convertisseur RS485/Ethernet" (datasheet en PJ) qui fonctionne en créant un port série virtuel.
    N'y connaissant rien en port virtuel, vais-je pouvoir l'utiliser comme un port série normal et utiliser les fonctions du programme précédent ?

    Dernière chose :
    Comment faire pour exporter mes données une fois misent en forme ? Suis-je obligée de les stocker dans un fichier binaire ou Texte ? Est-il possible de créer d'autres formats ? Ou de les stocker directement dans la base de données ?

    Je pense qu'il faut que je me renseigne un peu plus sur la partie réseau car c'est encore flou, si vous avez de bons tuto à proposer je suis preuneuse.

    En tout cas merci de votre attention
    Fichiers attachés Fichiers attachés
    Dernière modification par La-Banane ; 24/10/2013 à 13h56.

  8. #7
    La-Banane

    Re : Trame RS485 vers trame Modbus

    Je ne sais pas si j'ai bien gérer les pièces jointes merci de me dire si vous pouvez les ouvrir ou non. Si non me dire comment faire pour que "pièces jointes en cours de validation" n'apparaisse plus.

    Bonne journée =D

  9. #8
    grosmatou75001

    Re : Trame RS485 vers trame Modbus

    C'est bon pour les PJ, un modérateur les a validées.


    Désolé, je n'ai pas encore compris... Tu as une liaison RS485 entre une pompe et le machin convertisseur (ADAM45...) qui est rélié au PC par ethernet et qui permet - à travers un port série virtuel - d'envoyer et de recevoir des données sur le RS485 (donc à la pompe). C'est bien ça? Mais où est le Modbus la-dedans? Et ces données que tu veux séparer, ils viennent d'où et vont où? Et quel est leur format? Je suis vraiment désolé, je veux bien aider mais si je n'ai pas compris le truc ça risque d'être dur... Peut-être avec un schéma?

    Si j'ai (enfin!) compris je répondrais à tes questions concernant le port série virtuel avec ses buffers etc. Juste une chose, en language C tu en est où?

  10. #9
    grosmatou75001

    Re : Trame RS485 vers trame Modbus

    Bon, je vais quand même essayer de répondre histoire d'avancer un peu...

    Dans ce programme on voit 2 fonctions : une pour recevoir et une pour envoyer à partir/du port série, mais je n'ai pas besoin de "recevoir" car la pompe renvoie automatiquement les données, celles-ci seront alors stockées dans une mémoire "tampon" jusqu'à ce que j'envoie la commande recevoir ?
    Alors: Un port série a en effet une mémoire tampon pour l'envoi et une pour la réception. Pour l'envoi tu écrits tes données d'un seul coup dans cette mémoire et le circuit intégré (il y a longtemps c'était vraiment une puce dédiée au RS232, aujourd'hui ça doit être intégré dans jenesaisquel composant de la carte mère, peu importe) se charge d'envoyer les données octet par octet. Si tu recois plusieurs octets à la suite ils seront stockées dans la mémoire tampon jusqu'à ce que tu viennes les chercher. Par contre attention, cette mémoire tampon a une taille limitée, il faut donc aller récupérer les données avant que la mémoire ne s'épuise en cas de réception de beaucoup de données. Le soucis est justement de savoir quand est-ce qu'il faut y aller pour récupérer la trame de données en entier. Imaginons que tu as un composant qui envoye "BONJOUR123" en boucle à l'ordi, selon le moment des lectures de la mémoire tampon tu peux p.ex. te retrouver avec "UR123B" ou "ONJO" ou "JOUR123" ou autre chose. Tu vois le problème? Ces histoires de lectures de port série ça peut vraiment être très casse-pieds!! (BTDT...)

    N'y connaissant rien en port virtuel, vais-je pouvoir l'utiliser comme un port série normal et utiliser les fonctions du programme précédent ?
    En principe oui, il faut juste faire attention, les mémoires tampons peuvent être plus petits ou plus grands que sur un port normal. Mais de manière générale tu peux utiliser le port virtuel comme n'importe quel autre port (réel).

    Comment faire pour exporter mes données une fois misent en forme ? Suis-je obligée de les stocker dans un fichier binaire ou Texte ? Est-il possible de créer d'autres formats ? Ou de les stocker directement dans la base de données ?
    La sans avoir compris l'ensemble difficile de répondre. D'une manière générale tu peux théoriquement fabriquer n'importe quel format de fichiers avec du C, du simple fichier .txt au .docx ou même .bmp et autre. Je dis bien théoriquement, parce que si on veux p.ex. écrire un docx juste avec du ASCII-C il y a beaucoup de boulot! Pour les bases de données je n'y connais rien mais il doit bien y avoir des librairies C qui permettent de s'y connecter et d'échanger des données.

  11. #10
    bisou10

    Re : Trame RS485 vers trame Modbus

    Ah le port série. Avec la lecture via certaines APIs qui vident le buffer après lecture, et l'inévitable concatenation de la trame qui s'en suivait (de mémoire sous VB6..)

  12. #11
    La-Banane

    Re : Trame RS485 vers trame Modbus

    Merci pour toutes ces réponses ça m'aide beaucoup !

    Et pour répondre à la question du "pourquoi Modbus il vient faire quoi ici ?"

    J'ai un logiciel (suite logicielle ou système d'exploitation je sais pas trop) qui gère le réseau et stocke les données dans des registres pour ensuite les rendre disponible dans un logiciel de visualisation de graphes ET QUI fonctionne avec un protocole Modbus, donc si je veux visualiser mes graphes avec ce même logiciel j'ai besoin d'avoir une trame Modbus.

    Effectivement un schéma s'impose !

    Nom : AdixenACP40_1.gif
Affichages : 135
Taille : 56,4 Ko

    Merci !
    "L'imagination est plus importante que le savoir." A.E.

  13. #12
    La-Banane

    Re : Trame RS485 vers trame Modbus

    Sinon j'ai un assez bon niveau en C puisque je suis en école d'ingénieur électronique et informatique industrielle, enfin j'espère. Notre dernier projet était une IA, mais je ne sais toujours pas "mélanger" les langages ni utiliser des données "hors application" (USB, port série, base de données ...).

    N'ayant pour l'instant aucune connaissance en réseau j'ai du mal à comprendre comment passer du RS485 de ces pompes à un Modbus standard, est-ce que le convertisseur de protocole seul suffira ? Est-ce que j'aurai besoin de drivers spéciaux pour "décoder" cette fameuse trame ? Avez-vous une idée plus simple qui permettrai de surveiller ces pompes ?

    Merci de votre attention !
    "L'imagination est plus importante que le savoir." A.E.

Discussions similaires

  1. modbus, rs485 et rj45
    Par vincent-pimousse dans le forum Électronique
    Réponses: 5
    Dernier message: 06/06/2012, 14h16
  2. envoyer trame modbus par modem gsm
    Par invite13ffbfac dans le forum Internet - Réseau - Sécurité générale
    Réponses: 0
    Dernier message: 14/05/2012, 16h17
  3. Convertisseur de trame RS485
    Par invite976e6cb2 dans le forum Électronique
    Réponses: 41
    Dernier message: 26/02/2010, 15h43
  4. Envoi d'une trame vers un Conv. USB-I2C
    Par invitef0bed263 dans le forum Électronique
    Réponses: 3
    Dernier message: 04/02/2010, 13h47
  5. trame dmx
    Par ti7bo7 dans le forum Électronique
    Réponses: 2
    Dernier message: 02/06/2008, 10h20
Découvrez nos comparatifs produits sur l'informatique et les technologies.