问题标签 [pymodbus3]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
56 浏览

python - 使用 Python 的 PI 上的 Modbus 可以工作,但只有空结果

在我在 PI 上进行的第一次 Modbus 实验中,我可以连接到设备。但是我返回的所有值都是零。正如您从我的代码中看到的那样,我对此并不陌生。我究竟做错了什么?

0 投票
0 回答
341 浏览

python - 主尝试在树莓派中使用 python 通过 modbus 串行控制台读取几个寄存器时出现问题

我正在使用通过串行控制台连接到其他系统的 RasPi。我的另一个系统正在运行 modbus master,而 Raspi 正在充当 modbus slave。Raspi 已写入一些寄存器值,并且 master 不断要求一些寄存器值。

下面是奴隶的代码

在 Raspi 上获取日志为

在 Master 上,无法检索某些寄存器。有时它能够读取寄存器,下一次读取成功。

任何人都知道我在这里做错了什么

0 投票
1 回答
201 浏览

python - 如何摆脱 Python 代码中的 LoopingCall

我正在使用Modbuspymodbus 库中的服务器示例代码来制作数据转发器(读取一些串行数据,格式化然后将数据分配给 modbus 寄存器以供 Modbus 主设备读取)。我的问题是串行延迟(从 6 个不同的设备读取,每个设备有 5 秒的延迟,但它是随机的,它们不会同时发送数据)。在此示例中,他们使用 LoopingCall,这对我的计时不利。我如何摆脱它,所以我可以自己调用函数?

我试图摆脱:

并简单地调用:

但显然我错过了一些论点:

我的部分代码:

0 投票
1 回答
1621 浏览

pymodbus3 - Modbus TCP 客户端无法连接

背景资料:

我正在尝试从我的能量计中读取数据。我已将 gprs 调制解调器连接到仪表(通过 rs485)端口。该调制解调器通过 tcp-ip 协议将数据发送到指定的服务器和端口。在服务器(aws ec2 实例)上,我可以看到来自设备的连接。

问题:

当我尝试使用 PyModbus 连接到此设备时,我无法打开连接。

响应始终是“未连接”。

我已确保 a) 端口已打开。b) ip 地址在服务器上被列入白名单

为什么我无法连接?我在这里想念什么?

0 投票
1 回答
5658 浏览

python - Python 通过 TCP 读取 modbus

我有一个 modbus 设备,并将 modbus RTU 连接到以太网转换器(而不是 modbus RTU 到 modbus TCP 转换器)。

我遇到的所有模块都可以读取普通的 Modbus RTU、Modbus TCP、Modbus ASCII。但我还没有看到任何模块通过以太网端口读取 modbus。

当我使用 测试ModScan时,我选择时可以看到数据Remote TELNET Server

有没有办法可以使用 python 读取这些数据?

0 投票
1 回答
1018 浏览

python - 没有互联网连接时停止 python 脚本中止

我有一个在使用 Azure IOT SDK 的 revPi 上运行的 python 脚本。该脚本基本上接受来自 .json 文件的一堆 modbus 寄存器,添加一些属性并将其发送到 Azure IOT 中心进行分析。

该脚本目前过于依赖网络连接,并且由于基础设施限制,连接不可靠,并且经常导致脚本经常死机/中止。如何使脚本在这个糟糕的互联网连接上运行?使用的主要库是 pymodbus 和 iothub_client。

0 投票
1 回答
1972 浏览

pymodbus3 - pyModBus : 检查线圈是真还是假

我正在尝试学习如何通过 python ModBus 模块向 PLC 引入值我目前正在尝试做的只是读取线圈 1 的值以检查它是真还是 ,所以我正在使用

我得到这个作为响应ReadBitResponse(8)我怎样才能从读取线圈中获得“真”值

0 投票
0 回答
49 浏览

pyserial - 从十六进制 pyModBus 中删除尾随位

我想构建一个函数,将请求从 ModBus 发送到十六进制的串行。我或多或少有一个工作功能,但有两个问题。

第一期

我无法使用.split('\r \n')方法删除这部分 b'\r', b'\n' ,因为它不是字符串。

问题 2 从持有寄存器 40 (33) 获取值时,我尝试使用.to_bytes()方法,我不断得到 b'\x00!', b'\r' 并且我期待 b'\x21'

我的功能是生成我的请求并通过 pyserial 发送。

作为一个额外的问题,这是正确的做事方式吗?

0 投票
0 回答
1099 浏览

pymodbus - 如何在pymodbus中实现带有自定义功能代码的消息?

我目前正在尝试实现具有自定义功能代码的 modbus 请求。实现基于这个例子:custom_message.py

该请求按预期工作。我可以在网络层看到正确的响应。但是我无法解析结果。Pymodbus 抛出以下错误:

该示例指出,在这种情况下,我必须:

如果您实现了当前未实现的新方法,则必须向 ClientDecoder 工厂注册请求和响应。

有没有一种优雅的方法可以在不修补库的情况下做到这一点?

0 投票
1 回答
755 浏览

python - 连接2个modbus slave pymodbus时出错

我正在研究pymodbus。尝试从多个单元(多个从站)读取数据它给了我数据,但是当其中的 1 个从站没有响应或关闭时,其他从站也会在一段时间后显示错误。请帮忙。谢谢