我有一些在pymodbus 1.2下编写的modbus TCP代码 相关代码是
result = modbus_client.read_holding_registers(40093, 3)
更新到pymodbus 1.4.0之后,直到我将新的单元参数输入到函数调用中才会起作用(例如,所有单元都是单位= 1) 它们):
result = modbus_client.read_holding_registers(40093, 3, unit=1)
pymodbus read_ holding_registers()中的unit参数是什么意思? 我似乎无法在任何地方找到解释。 消息来源说:“:param unit:此请求所针对的奴隶单位”, 但是我不明白这意味着什么,也不知道除了1之外的其他选择。
答案 0 :(得分:2)
Modbus协议最初是在TCP / IP流行之前很久才开发的(我认为是70年代后期)。它主要用于串行连接。某些串行硬件协议(如RS485)允许菊花链。 modbus主站(在您的情况下是Python)可以在单个串行端口上轮询许多从站。只有被请求的从站才会响应。在这种情况下,从站的地址是Unit。一旦Modbus适应TCP / IP,协议允许这个"单元地址"用于在单个IP地址后面创建多个从站。大多数情况下,如果使用TCP / IP,则单个地址为1.在维基百科上,他们将此称为"站地址。"
我不确定为什么你需要在方法调用中包含它,因为它是一个默认为1的kwarg。