我想用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)
但我仍然没有找到任何方法如何写任何值给他们。我感谢任何帮助。谢谢。
答案 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会为你处理功能代码。