Puis-je contrôler le Schneider Electric M221 avec python ?
-
Charles2a
le 03/07/2023 à 14:09 Citer ce message
Je suis en train de mettre en place un laboratoire de pentest d'automates industriels.
Il s'agit d'un feu tricolore contrôlé par un M221 en ModbusTCP.
Chaque sortie numérique contrôle une couleur (Q0.0 -> vert, Q0.1 -> orange, Q0.2 -> rouge).
Tout fonctionne correctement lorsque j'utilise le logiciel fourni par Schneider Electric, mais j'ai créé une interface graphique en Python et j'aimerais pouvoir contrôler mon feu avec celle-ci sans avoir besoin du logiciel de base.
J'ai testé plusieurs choses, notamment la bibliothèque pymodbustcp, mais je ne pense pas réussir à faire mon adressage correctement car rien ne change lorsque j'utilise la fonction write de la bibliothèque.
Je peux parler au contrôleur, mais je ne sais pas si j'envoie les bonnes informations au M221 ou si je les envoie à la bonne adresse, la documentation n'est pas explicite sur la façon de le contrôler avec autre chose que leur solution, cependant j'ai vu des tutoriels de personnes qui ont réussi à le faire mais cela ne fonctionne pas de mon côté et je ne comprends pas pourquoi.
Avez-vous des conseils pour savoir quelle adresse utiliser dans mon code ?
Si cela peut vous aider, voici mon code :
from pymodbus.client.sync import ModbusTcpClient as ModbusClient
#M221 IP address
PLC_IP = '192.168.1.4'
PLC_PORT = 502
client = ModbusClient(PLC_IP,PLC_PORT)
client.connect()
UNIT = 0x1
print('connected')
write = client.write_register(2, 1, unit=UNIT)
read = client.read_holding_registers(2, 1, unit=UNIT)
read1 = client.write_coil(0, True, unit=UNIT)
read2 = client.read_coils(0, 1, unit=UNIT)
print("Read value from PLC=", read.registers[0])
print("Read bit from PLC=", read2.bits)
client.close()
Répondre à ce message