Page 2 sur 2

Re: [M221] Puis-je contrôler le Schneider Electric M221 avec python ?

Posté : 04 juil. 2023, 11:29
par Charles2a
Bruce33 a écrit : 04 juil. 2023, 08:06 Bonjour,
Charles2a a écrit : 03 juil. 2023, 14:47
itasoft a écrit : 03 juil. 2023, 14:43 NON
Au moins ça a le mérite d'être clair :lol:
Itasoft est notre Schtroumpf grognon ! ;)

D'abord il faut charger une configuration adéquate dans l'automate M221 : définir une adresse IP et un masque cohérent, cocher le paramètre de sécurité "Serveur Modbus activé" sur le port Ethernet, allouer les bits de mémoire et les mots mémoire en mode "manuel" avec la quantité que vous souhaitez...

Ensuite un test avec un client Modbus est conseillé. ModPoll ou Modbus Doctor ou d'autres... Cela permet de vérifier rapidement le fonctionnement et de tester différents paramètres.
Normalement vous constaterez que l'adresse "Unit ID" est 255 (et non 1).
Ensuite vous vérifierez le décalage d'adresse : le registre 1 correspond à %MW0...
Puis il faut savoir quelle zone de données est utilisée par chaque fonction Modbus (read_holding_register, read_coils, etc.) A priori, sur le M221, on ne peut pas accéder directement aux entrées %I et aux sorties %Q, mais uniquement aux mémoires %M et %MW.

Enfin, en passant à la programmation avec Python, commencez par une seule instruction de lecture avant de tester l'écriture !
Ne pouvez-vous pas paramétrer unit_id au niveau de l'initialisation de ModbusClient plutôt qu'à chaque appel de fonction de lecture/écriture ?
Merci pour cette super réponse ! Je vais tester tout ça dans l'après midi.

Pour ce qui est de l'unit_id, c'est possible de la passer en paramètre à l'initialisation de la classe ModbusClient donc je vais faire comme ça ce sera plus propre.

Re: [M221] Puis-je contrôler le Schneider Electric M221 avec python ?

Posté : 04 juil. 2023, 11:40
par Charles2a
MiGaNuTs a écrit : 04 juil. 2023, 10:07 Enfin bon, la seule chose que tu peut faire c'est lire ou/et écrire des trucs dans une partie de sa mémoire, si l'automate t'y autorise.
Tu le fait en python comme tu pourrait le faire avec n'importe quel autre langage, et avec un M221 comme tu pourrait avoir n'importe quel autre automate (a condition qu'il supporte le MODBUS(Et les fonctions read/write register)).
A aucun moment tu contrôle ce que l'automate en fait. (et encore heureux).
Du coup on en est toujours au même point :
itasoft a écrit : 03 juil. 2023, 14:43 NON
Si tu veux piloter directement les sorties du M221 sans mettre de programme dedans, c'est possible, mais pas en modbus.
Il faut le faire en EtherNet/IP. Y'a le fichier eds qui est fourni directement avec le M221.(mais c'est un peu relou de le récupérer via son serveur web intégré).
Après, comment on exploite un fichier .eds en Python, j'en ai pas la moindre idée. Je suis pas persuadé que ce soit plus simple que de programmer directement l'automate pour qu'il fasse ce dont on a besoin. Par contre je suis a peu près sûr que c'est plus lent et moins fiable.
Donc je pourrais à la limite lire l'état des sorties de mon automate mais pas le contrôler en gros ?

Re: [M221] Puis-je contrôler le Schneider Electric M221 avec python ?

Posté : 04 juil. 2023, 13:37
par MiGaNuTs
Charles2a a écrit : 04 juil. 2023, 11:40 Donc je pourrais à la limite lire l'état des sorties de mon automate mais pas le contrôler en gros ?
Lire l’état des sorties c'est possible en EtherNet/IP, mais pas en Modbus.
"Contrôler" l'automate, ça dépends ce que tu veux dire par "contrôler".
Si tu fait un ping et qu'il réponds, tu a contrôlé qu'il est bien raccordé au réseau et sous tension.

Re: [M221] Puis-je contrôler le Schneider Electric M221 avec python ?

Posté : 25 août 2023, 14:37
par tuscaonline