Problème communication Modbus TCP entre M221 et PC

Forum traitant des automates industriels de marque Schneider - Telemecanique
Répondre
leal
Apprend le binaire
Apprend le binaire
Messages : 3
Enregistré le : 07 mai 2024, 09:10

Problème communication Modbus TCP entre M221 et PC

Message par leal »

Bonjour à tous,

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 :

Image

Image

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 :

Image

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 :

Image

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 :lol:

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 :

Image

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 !
philou77
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 2081
Enregistré le : 21 oct. 2015, 10:00
Localisation : Ile de France

Re: Problème communication Modbus TCP entre M221 et PC

Message par philou77 »

Salut.

Modbus est un protocole client / server.
Donc ton automate est client vu qu’il écrit.
Il te faut un server modbus dans ton pc qui pourra communiquer avec l’automate.
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D
MiGaNuTs
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 1042
Enregistré le : 12 nov. 2015, 21:02
Localisation : 45 - Loiret
Contact :

Re: Problème communication Modbus TCP entre M221 et PC

Message par MiGaNuTs »

A partir du moment ou les automates font serveur et qu'ils centralisent les informations que tu veux archiver, je comprends pas l’intérêt d'aller modifier les programmes de quoi que ce soit.
Il faut juste voire les tables d’échange et aller lire ce que tu a besoin depuis ta SCADA.
leal
Apprend le binaire
Apprend le binaire
Messages : 3
Enregistré le : 07 mai 2024, 09:10

Re: Problème communication Modbus TCP entre M221 et PC

Message par leal »

MiGaNuTs a écrit : 07 mai 2024, 11:49 A partir du moment ou les automates font serveur et qu'ils centralisent les informations que tu veux archiver, je comprends pas l’intérêt d'aller modifier les programmes de quoi que ce soit.
Il faut juste voire les tables d’échange et aller lire ce que tu a besoin depuis ta SCADA.
Bonjour,

Le problème c'est que nous n'utilisons pas de logiciel de SCADA. L'ERP de l'entreprise est fait avec Odoo, et l'idée c'est d'aller écrire les valeurs dans la base de données du serveur de l'entreprise toutes les X secondes pour les stocker, et ensuite de développer un module maison en Python pour y avoir accès, pouvoir les manipuler, les recouper avec les autres données de production (durée d'extraction, quantité et qualité de la matière extraite etc...) dans un but d'amélioration des process de fabrication, on est pas vraiment sur de la supervision et c'est vraiment un projet hybride entre de l'informatique pure et de l'automatisme.
leal
Apprend le binaire
Apprend le binaire
Messages : 3
Enregistré le : 07 mai 2024, 09:10

Re: Problème communication Modbus TCP entre M221 et PC

Message par leal »

philou77 a écrit : 07 mai 2024, 10:22 Salut.

Modbus est un protocole client / server.
Donc ton automate est client vu qu’il écrit.
Il te faut un server modbus dans ton pc qui pourra communiquer avec l’automate.
Merci, j'avais déjà essayé avec Easy Modbus Server Simulator, sans résultats, et je me suis rendu compte que j'avais un problème de pare-feu avec Kaspersky, pare feu que je ne peux évidemment pas désactiver sans être admin réseau, j'ai fini par aller chercher un vieux bouzin sous Windows 7 qui trainait et j'ai pu faire l'acquisition des données, tout à l'air de fonctionner comme ça devrait, à un détail près :

La communication se fait correctement, je peux acquérir les données, mais ma sortie "Error" sur le WriteVar s'active à la fin de chaque envoi de données, même si tout à l'air de se passer correctement. C'est pas très grave, mais si quelqu'un a une idée...
Avatar du membre
Bruce33
Créateur de langage
Créateur de langage
Messages : 734
Enregistré le : 28 oct. 2015, 06:54
Localisation : Pas-de-Calais

Re: Problème communication Modbus TCP entre M221 et PC

Message par Bruce33 »

Bonjour,

Il faut favoriser les opérations de lecture et éviter autant que possible les écritures.
C'est très dangereux quand le destinataire n'est pas sécurisé.
Si vous vous trompez dans l'écriture de l'adresse, que va-t-il se passer ? (roulette russe...)

Si je comprends bien, avec l'instruction WRITE_VAR, vous souhaitez que l'automate envoie des données au PC. C'est bien ça ? Mais il écrit où dans votre PC ? Où se trouve la zone de registres Modbus de votre PC ? C'est normal que le bloc WRITE_VAR indique une erreur puisque votre PC n'est pas serveur Modbus et n'envoie pas d'accusé de réception à l'automate.
Il n'y a pas besoin d'instruction dans l'automate pour aller lire ses variables depuis le PC.

Je pense que vous avez pris le problème à l'envers.
Il vous faut un logiciel capable d'envoyer des requêtes Modbus TCP pour lire les valeurs de l'automate et capable d'écrire ces informations dans une base de données. Éventuellement vous pouvez faire tout cela en Python.
Le M221 ne peut pas écrire directement dans la base de données informatique.
MiGaNuTs
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 1042
Enregistré le : 12 nov. 2015, 21:02
Localisation : 45 - Loiret
Contact :

Re: Problème communication Modbus TCP entre M221 et PC

Message par MiGaNuTs »

je plussoie, tu fait les choses a l'envers.

Ton script doit interroger l'automate puis pousser le résultat qu'il a obtenu dans ta base de données.
Pour peu que ton script aille également chercher dans une base de données la liste des informations qu'il doit lire dans l'automate, bravo, tu a un script qui fait la moitié du travail d'un système SCADA.

A vrai dire ca fait un moment que j'en cherche un qui serait a la fois opensource, pas trop merdique et facile a prendre en main.
Je pense que y'a moyen de faire des trucs avec home assistant, mais je n'ai pas creusé plus que ca l'idée.
Y'a pleins d'autres trucs qui existe, mais y'en a peu qui sont user-friendly.
Répondre