python - pyModbusTCP Raspberry Pi 到 PC 连接 eth0
问题描述
故事到此为止。我使用非常有用的 Johannes YouTube 教程设置了服务器和客户端,最初我在 Raspberry Pi 上使用“localhost”没有任何问题。
https://github.com/Johannes4Linux/Simple-ModbusTCP-Server/blob/master/Simple_ModbusServer.py
然后我尝试使用以太网端口在我的 Windows PC 上设置客户端并连接到服务器 (Pi)。
我使用了 Pi 中“ifconfig”命令中的“inet”IP 地址,而不是 Windows 中“ipconfig”中的地址(它们不同)。
client = ModbusClient(host="192.168.0.16", port=502, debug=True)
client.open()
connect error
False
我试图从 Windows ping 此地址“cmd”,但连接超时。
ping 168.168.0.16
Pinging 168.168.0.16 with 32 bytes of data:
Request timed out.
感觉就像我错过了一些非常明显的东西。如果有人能够帮助我,我将不胜感激。
解决方案
好吧,事实证明我有点笨拙。我的实现中缺少许多关键概念。
使用调试问题ipconfig/all
发现ipV4 = 192.168.4.180(重复)
我已经在 PC 和 Pi 上设置了 IP 地址,我忘记了我已经更改了 dchpcd.conf 文件。因此,这些设备试图在网络子网中获取相同的地址。
以下实现对我有用:
在 Pi 上设置
from pyModbusTCP.server import ModbusServer, DataBank
server = ModbusServer(host="192.168.4.181", port=502, no_block=True)
在 PC 上设置
from pyModbusTCP.client import ModbusClient
client = ModbusClient(host="192.168.4.181", port=502)
client.open()
我发现本指南在我的网络复习咒语中非常有用:https://www.ionos.co.uk/digitalguide/server/configuration/provide-raspberry-pi-with-a-static-ip-address/#:~: text=To%20assign%20an%20IP%20address,with%20the%20IPv4%20address%20192.168。
我很高兴删除它,但我想我会把它留在这里,以防有人有评论或发现它有用。像往常一样,我回答我自己的问题,但有时只是将我自己的无知形式化为黑白是有用的。
推荐阅读
- firebase - 没有为“用户”类型定义“然后”方法(firebase_auth:^0.18.4+1)
- kotlin - Kotlin:如何检查序列中的所有值是否具有相同的值
- django - 为列 social_auth_usersocialauth.created 创建表的 social-auth-app-django 错误不存在
- pandas - 查询完成前 Pyodbc 连接关闭
- filter - 安装 twilio 视频应用程序对强过滤器做出反应
- stm32 - 重建 USB CDC 流
- java - Java程序不读取开关功能内的输入
- android - 在 Kotlin 中使用单表达式 fun 与 var 有什么区别?
- postgresql - 无法获取我的 URL 参数以匹配我对 postgres 的 API 调用
- python - 如何使用本地化的千位和小数分隔符打印数字?