python - 读取/写入时 modbus 错误无法连接到 ModbusTcpClient
问题描述
最近我的任务是一个涉及读取 Modbus 数据的项目,特别是 pymodbus 包。在深入研究这个项目之前,我想用 python 模拟一些 Modbus 数据的读写(无需使用机器)。使用他们主页上的示例数据,我尝试使用客户端编写但遇到 Modbus 错误
我试过调查此事,看看我能挖掘出什么,想知道我是否需要一个服务器来写或读。但是,我不确定根据我在套接字和串行方面的经验,我只需要建立与正确端口的连接即可简单地写入(但我知道 Modbus 是不同的)。
这是代码
client = ModbusTcpClient('localhost')
client.write_coil(1, True)
result = client.read_coils(1,1)
print(result.bits[0])
client.close()
这是我的错误“pymodbus.exceptions.ConnectionException:Modbus错误:[连接]无法连接[ModbusTcpClient(localhost:502)]”
我希望输出只是简单地编写 Modbus 而不需要任何东西,不一定在另一端监听,但是在尝试连接/写入时我不断收到错误消息。(对不起,如果这很难理解,我的大脑到处都是,而且我对 Modbus 非常陌生)。
解决方案
如果你想发送 Modbus 查询并且你没有任何 Modbus 硬件,你需要在你的计算机上运行一个虚拟的 Modbus 服务器。
你可以看看例子。
您可能还需要在防火墙中为端口 502 添加规则。如果您使用的是 Linux,您可以将端口切换到更高的端口号,例如两端的 5020,以避免此问题。
推荐阅读
- regression - catboost 回归/CatBoostRegressor 上的销售预测错误
- mysql - 在 MySQL 中使用名称空间创建表
- php - Ajax 返回状态码 0 但脚本仍在工作
- java - 如何使用 JAXBContext 和 Marshaller 在 Web 浏览器上显示 XML
- regex - Prometheus 警报 - 按百分比而不是绝对请求
- python - Pandas 将单列数据框与另一个多列数据框合并
- php - Laravel 8,异常,无法调试
- excel - Excel 公式 - 通过忽略另一列中的重复值来聚合行
- java - 方法参考适用于 Comparator.comparing 方法,而 lambda 表达式不起作用
- c - C中贪心算法的输出没有给我任何输出