19/09/2014, 07:39:20
Alors, il faut commencer par installer la librairie pymodbus. Sous debian :
$ sudo apt-get install python-pymodbus
Ensuite, voici quelques exemples. Leplus simple est d'utiliser le shell ipython, qui est vraiment super pratique.
Il y a une ou deux autres méthodes à la classe ModbusTcpClient, pour lire/écrire plusieurs registres à la fois. Pour les connaître, dans ipython, tu fais (une fois la variable client créée) :
Pour savoir un peu ce que les fonctions retournent, tu fais de même avec la variable result. Tu peux aussi le faire sur les fonctions d'écriture, pour voir ce que ça retourne (je n'ai pas de machine sur laquelle envoyer des commandes sous la main).
Voili. Après, tout dépendra de ce que tu veux faire. Commence par faire mumuse, et on verra ensuite si tu veux intégrer ça dans pKNyX pour mapper certains paramètres sur le bus
$ sudo apt-get install python-pymodbus
Ensuite, voici quelques exemples. Leplus simple est d'utiliser le shell ipython, qui est vraiment super pratique.
Code :
from pymodbus.client.sync import ModbusTcpClient
client = ModbusTcpClient(host=<ip_de_ta_vmc>, port=502)
# lecture paramètres VERSION (descrete input)
result = client.read_coils(address=1, count=1)
print result.bits[0]
# lecture puis modification paramètre BATTERIE PRE-CHAUFFAGE (coils)
result = client.read_coils(address=1, count=1)
print result.bits[0]
client.write_coil(adresse=1, value=1)
# lecture VERSION LOGICIEL UNITE CENTRALE (input registers)
result = client.read_input_registers(address=1, count=1)
print result.registers[0]
# lecture puis modification SELECTION DEPHASAGE DEBIT (holding registers)
result = client.read_holding_registers(address=1, count=1)
print result.registers[0]
client.write_register(address=1, value=5)
client.close()
Il y a une ou deux autres méthodes à la classe ModbusTcpClient, pour lire/écrire plusieurs registres à la fois. Pour les connaître, dans ipython, tu fais (une fois la variable client créée) :
Code :
In [5]: client.<TAB> <<<<<<<<<< ici, ça veut dire cliquer sur la touche TAB ; ipython te montrera toutes les méthodes dispos
client.close client.port client.readwrite_registers client.write_register
client.connect client.read_coils client.socket client.write_registers
client.execute client.read_discrete_inputs client.transaction
client.framer client.read_holding_registers client.write_coil
client.host client.read_input_registers client.write_coils
In [5]: client.write_coils?
Type: instancemethod
String form: <bound method ModbusTcpClient.write_coils of <pymodbus.client.sync.ModbusTcpClient object at 0x7f11326d0c10>>
File: /usr/lib/python2.7/dist-packages/pymodbus/client/common.py
Definition: client.write_coils(self, address, values, **kwargs)
Docstring:
:param address: The starting address to write to
:param values: The values to write to the specified address
:param unit: The slave unit this request is targeting
:returns: A deferred response handle
In [6]:
Pour savoir un peu ce que les fonctions retournent, tu fais de même avec la variable result. Tu peux aussi le faire sur les fonctions d'écriture, pour voir ce que ça retourne (je n'ai pas de machine sur laquelle envoyer des commandes sous la main).
Voili. Après, tout dépendra de ce que tu veux faire. Commence par faire mumuse, et on verra ensuite si tu veux intégrer ça dans pKNyX pour mapper certains paramètres sur le bus