如何使用pymodbus写入PLC输入寄存器

时间:2015-08-10 05:58:22

标签: python modbus plc

我想用pymodbus写入PLC输入寄存器。我能读懂它们:

from pymodbus.client.sync import ModbusTcpClient
client = ModbusTcpClient('10.10.10.32')
client.connect()
reg = client.read_input_registers(1,5)
print(reg.registers)

但我仍然没有找到任何方法如何写任何值给他们。我感谢任何帮助。谢谢。

3 个答案:

答案 0 :(得分:3)

输入寄存器是只读的。您可以使用Modbus功能写入单个寄存器或写入多个寄存器(pymodbus中的ModbusTcpClient.write_register或ModbusTcpClient.write_registers)写入保持寄存器。

答案 1 :(得分:2)

使用Festo MODBUS / TCP的示例:

nowPlayingInfo

根据文件:
http://pymodbus.readthedocs.org/en/latest/library/sync-client.html

//功能
write_register(地址,值)
//参数
address - 要写入的起始地址 value - 要写入指定地址的值

答案 2 :(得分:1)

PLC有一套专用的寄存器供您阅读,一套供您阅读。写寄存器组因PLC而异。你读寄存器,例如可以从寄存器" 1"开始。你读了" 1"但不写。您必须查找PLC的modbus寄存器映射。

我对Python的了解很少,但看起来你试图读取最多5个寄存器,从1开始?要编写,您可能需要使用

reg = client.write_output_registers(?,??)

我通常使用Wago 880.我可以写入寄存器0-999并从1000-1999读取。我假设Python会为你处理功能代码。