如何使用pymodbus写入PLC输入寄存器
How to write to PLC input registers using pymodbus
我想使用 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)
但我仍然没有找到任何方法如何向它们写入任何值。我感谢任何帮助。谢谢。
输入寄存器是只读的。您可以写入保持寄存器,使用 Modbus 函数写入单个寄存器或写入多个寄存器(pymodbus 中的 ModbusTcpClient.write_register 或 ModbusTcpClient.write_registers)。
PLC 有一组专用寄存器供您读取和一组供您写入。写入寄存器组因 PLC 而异。您读取寄存器,例如可以从寄存器“1”开始。您从“1”读取但不写入。您必须查找 PLC 的 modbus 寄存器映射。
我对 Python 的了解很少,但您似乎正在尝试读取最多 5 个寄存器,从 1 个开始?要编写,您可能需要使用
reg = client.write_output_registers(?,??)
我通常使用Wago 880。我可以写入寄存器0-999 并读取1000-1999。我假设 Python 会为您处理函数代码。
使用 Festo 的示例 MODBUS/TCP:
# First digital input address
address = 40003
# Written value
value = 255
# It will send '11111111' to the output
client.write_register(address, value)
根据文档:
http://pymodbus.readthedocs.org/en/latest/library/sync-client.html
//函数
write_register(地址,值)
// 参数
地址——要写入的起始地址
value – 写入指定地址的值
我想使用 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)
但我仍然没有找到任何方法如何向它们写入任何值。我感谢任何帮助。谢谢。
输入寄存器是只读的。您可以写入保持寄存器,使用 Modbus 函数写入单个寄存器或写入多个寄存器(pymodbus 中的 ModbusTcpClient.write_register 或 ModbusTcpClient.write_registers)。
PLC 有一组专用寄存器供您读取和一组供您写入。写入寄存器组因 PLC 而异。您读取寄存器,例如可以从寄存器“1”开始。您从“1”读取但不写入。您必须查找 PLC 的 modbus 寄存器映射。
我对 Python 的了解很少,但您似乎正在尝试读取最多 5 个寄存器,从 1 个开始?要编写,您可能需要使用
reg = client.write_output_registers(?,??)
我通常使用Wago 880。我可以写入寄存器0-999 并读取1000-1999。我假设 Python 会为您处理函数代码。
使用 Festo 的示例 MODBUS/TCP:
# First digital input address
address = 40003
# Written value
value = 255
# It will send '11111111' to the output
client.write_register(address, value)
根据文档:
http://pymodbus.readthedocs.org/en/latest/library/sync-client.html
//函数
write_register(地址,值)
// 参数
地址——要写入的起始地址
value – 写入指定地址的值