Merci pour cette super réponse ! Je vais tester tout ça dans l'après midi.Bruce33 a écrit : ↑04 juil. 2023, 08:06 Bonjour,
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 ?
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.


