Je suis sur un problème concernant le modbus TCP, et je ne trouve absolument rien pour m'aider sur Internet, donc je demande ici, peut être que quelqu'un pourra me sauver la vie.
Nous avons une installation avec 3 automates Modicon M221 et 3 IHM Magelis. Deux des armoires automates/IHM servent à contrôler des systèmes de production (unité de distillation), et la troisième, implantée il y a quelques années, sert de supervision et à avoir un contrôle déporté.
Les IHM communiquent avec leurs automates en liaison Modbus RTU, mais on a aussi une communication Ethernet entre les deux automates de contrôle et l'IHM de supervision.
Quand on a installé la supervision, on a aussi procédé à une instrumentation pour pouvoir récupérer toutes les données (pressions, débits, températures, durées de cycles, consignes et ouvertures des actionneurs etc...) sauf qu'actuellement les données ne sont pas exploitées.
Mon objectif à terme est de faire remonter ces données sur le serveur de l'entreprise, pour les intégrer à la base de données de l'ERP de la boite, dans laquelle je vais coder un module en Python permettant la journalisation des données et leur exploitation sous forme de courbe, graphes, etc...
Là ou je bloque c'est sur la communication en Modbus TCP/IP.
Pour l'instant, j'ai modifié le programme de l'IHM de supervision (avec Vijeo Designer), et les programmes de mes deux automates (avec Machine Expert Basic) pour ajouter la partie communication Modbus, l'acquisition des données (chaque automate gère deux unités de distillation, et ils fonctionnent de manière indépendante, chacun d'entre eux doit pouvoir faire remonter ses données en Modbus TCP).
Je réalise actuellement mes tests avec un des deux automates, et le but de ce test est de récupérer les données sur le PC.
L'automate est configuré comme ceci :


Ensuite, j'utilise le bloc fonction WriteVar, qui doit pouvoir me permettre d'aller écrire des variables dans l'appareil cible ayant l'adresse IP configuré à mon Index 1 comme ci dessus :

J'ai créé une tempo qui active mon bloc toutes les 10 secondes (on peut moduler la durée sur l'IHM de supervision au besoin), et j'ai enregistré mes données à exploiter dans des variables dédiées à la communication, comme celles ci :

J'ai globalement suivi la procédure que j'ai trouvé dans cette vidéo :
https://www.youtube.com/watch?v=aRDmRZIe1gg
Ensuite vient le moment ou ça pèche :
Pour tester tout ça, je me met avec un PC portable connecté en USB à mon automate pour surveiller ce qu'il se passe avec le mode "Mise en service" de Machine Expert Basic, et un autre connecté avec l'adresse IP 192.168.10.14 à mon switch.
Je test le ping avec l'adresse 192.168.10.13, celle de mon automate, et tout est OK.
Je check sur l'automate, j'ai bien mon cycle de 10 secondes, et les données partent.
Et c'est à partir de là que je galère
Je ne comprends pas ou est ce que l'automate est censé envoyer les données, quand je surveille avec WireShark mes trames ressemblent à ça :

Le PC a bien l'air de recevoir des trames, mais de ce que j'ai compris il reçoit simplement une demande de communication de la part de l'automate, à laquelle il est incapable de répondre. Et en plus la communication semble envoyer en Ethernet TCP mais pas en Modbus TCP. J'ai essayé plein d'utilitaires de scrutateurs ou scans modbus (Easy Modbus TCP, ICC Modbus Master Tool...) mais je n'arrive à rien.
Est ce qu'il y a quelqu'un qui s'y connait ici parce que je patauge, ça sort clairement de mon domaine de compétences, et je n'ait aucune idée de comment faire l'acquisition de ces données, ni même de comment fonctionne réellement le Modbus TCP visiblement (je suis supposé être en mode Client mais je peux quand même envoyer des données ?) enfin bref je crois que vous avez compris l'idée
Merci d'avance aux personnes qui prendront le temps de me répondre !


