pymodbus "unit" 参数是什么意思?
What does the pymodbus "unit" parameter mean?
我有一些在 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 以外的其他选择。
Modbus 协议最初是在 TCP/IP 流行之前很久开发的(我认为是 70 年代后期)。它主要用于串行连接。一些串行硬件协议(如 RS485)允许菊花链。 modbus 主机(在您的情况下 Python)可以在单个串行端口上轮询多个从机。只有被请求的从机才会响应。在这种情况下,从站的地址是单元。一旦 Modbus 适应 TCP/IP,该协议就允许使用此 "unit address" 在单个 IP 地址后面创建多个从站。大多数时候,如果使用 TCP/IP,则只有一个地址 1。在维基百科上,他们将其称为 "Station address."
我不确定为什么您需要在方法调用中包含它,因为无论如何它都是默认为 1 的 kwarg。
我有一些在 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 以外的其他选择。
Modbus 协议最初是在 TCP/IP 流行之前很久开发的(我认为是 70 年代后期)。它主要用于串行连接。一些串行硬件协议(如 RS485)允许菊花链。 modbus 主机(在您的情况下 Python)可以在单个串行端口上轮询多个从机。只有被请求的从机才会响应。在这种情况下,从站的地址是单元。一旦 Modbus 适应 TCP/IP,该协议就允许使用此 "unit address" 在单个 IP 地址后面创建多个从站。大多数时候,如果使用 TCP/IP,则只有一个地址 1。在维基百科上,他们将其称为 "Station address."
我不确定为什么您需要在方法调用中包含它,因为无论如何它都是默认为 1 的 kwarg。