python - ConnectionException: Modbus Error: [Connection] 无法连接 ModbusTcpClient
问题描述
我一直在尝试使用 pymodbus 通过 Modbus TCP 从 Modbus(此处为树莓派)读取数据。我不断收到无法连接的错误。这是产生此错误的代码片段。
from pymodbus.client.sync import ModbusTcpClient
#modbus connection
client = ModbusTcpClient('192.168.137.238')
connection = client.connect()
#read register
request = client.read_input_registers(1008,3)
result = request.registers
print(result)
我在 pi 上本地运行它。我使用 ifconfig 得到以下信息,并使用 ModbusTcpClient 尝试了所有 IP 地址。我不确定我在这里缺少什么。
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.137.238 netmask 255.255.255.0 broadcast 192.168.137.255
inet6 fe80::7ce5:23eb:968f:59de prefixlen 64 scopeid 0x20<link>
ether dc:a6:32:46:d3:1e txqueuelen 1000 (Ethernet)
RX packets 438 bytes 46776 (45.6 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 330 bytes 31566 (30.8 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 1847 bytes 149291 (145.7 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1847 bytes 149291 (145.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.1.1.199 netmask 255.255.255.0 broadcast 10.1.1.255
inet6 fe80::7f47:6c9f:f1c:1274 prefixlen 64 scopeid 0x20<link>
inet6 fd9d:fbd1:372:0:7a9c:777b:a806:2350 prefixlen 64 scopeid 0x0<global>
ether dc:a6:32:46:d3:21 txqueuelen 1000 (Ethernet)
RX packets 208 bytes 16783 (16.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 53 bytes 7372 (7.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
我已经看过这个Question 1和Question 2。此外,带有 pi 的 pymodbus 在 RTU 上工作。
解决方案
正如我所看到的 - 你想从 RPi 获取数据吗?但在我看来,您的设置是让 RPi从具有自己 IP 的“客户端”获取数据。我相信您需要先设置一个 Modbus 从站才能使用 Modbus TCP 呈现数据。
推荐阅读
- css - 如何在不破坏行的情况下给行的元素边距?
- django - .env 无法与主管一起使用 Django
- android - 如何从 recyclerView 适配器访问密封类的内部数据类
- python - Python 2.7.16 - ImportError:没有名为 etree.ElementTree 的模块
- ms-access - 三个选项 - 根据输入和记录值启用/禁用
- c - 如何在C中吞下printf中的参数
- java - 字符串的二叉搜索树 (BST) 搜索方法
- android - 如何向 FindAutocompletePredictionsRequest 添加两个以上的 TypeFilter?
- excel - 根据另一列中的最后一行复制列中的值
- rest - 放心:为什么我会得到 IllegalStateException 异常?