ModbusTcpClient不能将source_address作为pymodbus模块中的参数

时间:2017-02-28 11:11:15

标签: python modbus

想要使用下一个代码为我的ModbusClient指定源地址:

from pymodbus.client.sync import ModbusTcpClient
client = ModbusTcpClient('x.x.x.x', port=502, source_address=1)

但收到下一个错误:

Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    client = ModbusTcpClient('x.x.x.x', port=502, source_address=1)
TypeError: __init__() got an unexpected keyword argument 'source_address'

documentation中定义了这种可能性以及类使用**kwargs它应该采用任何参数。

2 个答案:

答案 0 :(得分:1)

搜索源代码我看到他们像这样获取source_address:

self.source_address = kwargs.get('source_address', ('', 0))

答案 1 :(得分:1)

请注意,根据文档,source_address应该是一个元组,你给它的数字1.这个source_address然后用于socket.create_connection,所以我们可以查看python文档,看看它应该是什么:

  在连接之前,

source_address必须是要绑定到套接字的套接字的2元组(主机,端口)作为其源地址。如果主机或端口分别为'或0,则将使用操作系统默认行为。

     

- https://docs.python.org/2/library/socket.html#socket.create_connection