问题标签 [pymodbus]

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 投票
2 回答
148 浏览

c# - pyModbus 的 C# 等效项

我想开发一个 C# 应用程序来使用 modbus 监控 Sick PLC。我有一个用 Python 编写并使用模块 pyModbus 与 PLC 交谈的示例程序。是否有与 pyModbus 具有相同功能的 C# nugget 包?

0 投票
0 回答
82 浏览

python - PyModbus 效率与乱序寄存器和不同的功能

我最近开始使用 PyModbus,发现使用他们的 ModbusTCPClient 和 read_holding_registers 函数进行基本轮询非常容易。

我现在对构建更复杂记录器的最佳方法感兴趣 - 非连续寄存器、不同的功能代码、不同的 Endian 编码等。

例如 - 为了避免对设备的每个标签进行单独的“read_holding_registers”调用,我构建了一个函数,将所有连续的标签寄存器分组以减少调用次数。

我计划为 BinaryPayloadDecoders 实现类似的东西 - 按具有相同字节顺序和字序的寄存器分组,以减少解码器实例的数量。

这一切都不是非常复杂 - 似乎在某个地方已经有一个公认的标准或模板,我似乎在他们的任何在线文档中都找不到。

0 投票
2 回答
1992 浏览

python - pymodbus 连接有时没有响应?

我正在使用“pymodbus”库来连接 PLC 设备。该设备使用基于 TCP 的 Modbus RTU,设备将返回环境的温度和湿度。

地图地址列表

  • 0001:温度
  • 0002:湿度

我执行一次以获得价值,它可以成功。但我使用 while 循环有时会出错。我不知道为什么。

代码:

输出:

我们可以看到,有时结果正常,有时结果不完整,有时结果不可用。

我应该怎么做才能解决这个问题,我想监控这个设备。谢谢你。

0 投票
0 回答
569 浏览

python - 将 Modbus TCP 数据转换为可读格式

我正在尝试通过我的 AWS 云 EC2 实例读取 Modbus TCP 数据。因为我有一台机器正在生成 MODBUS TCP(从)数据并将其发送到云端。在云端,我正在使用使用套接字用 python 编写的 TCP 服务器程序接收数据。以下是我在 EC2 实例上运行的接收代码:

这是我在运行上面的代码后收到的:

期望的输出是:

现在我想以可读格式解析这条消息并分离出寄存器数据。我现在尝试的是python struct unpack,

但是在上面的代码中,我收到了这个错误:

然后我尝试了pymodbus消息解析器和minimalmodbus解码方法。我尝试了许多可能的解决方案,但无法获取一个。或者可能是我做错了。

那么我该如何实现呢?对此有什么可能的解决方案?

0 投票
2 回答
2610 浏览

python - 将值分配给 TCP 服务器寄存器的 pymodbus 语法是什么?

我正在尝试使用Synchronous Server Example实现一个简单的同步 TCP 服务器。但是,我不理解文档中的语法解释。该示例包括以下代码块:

假设我想存储152to address 的值和 to Input Register (ir)address的30001值?我应该如何调整上面的代码?27630002

0 投票
0 回答
520 浏览

python - from pymodbus.constants import Endian 抛出错误

我正在尝试使用 pyModbus 学习和编程。我有一个运行良好的示例程序。它有这个代码来导入 ModbusClient

这工作正常。

现在我正在尝试运行并理解一个具有以下代码的 pyModbus 网站示例:

这个在第一行引发错误

from pymodbus.constants import Endian ImportError: No module name pymodbus.constants

这可能是一个幼稚的用户问题,因为我对 Python 对象的经验很薄弱。但是你能帮忙吗?...RDK

0 投票
2 回答
89 浏览

python - 如何在 Web 系统上集成不同的 modbus 设备?

我有两个 PLC Modbus 设备。这两家是不同的公司。

第一个是A会返回温度和湿度。第二个是 B 将返回五个值。在这两种设备中,连接都是 modbus TCP。

一个问题是可以连接相同的测试软件,但无法连接另一个。一台设备可以使用 连接pyModbus,但另一台设备不工作。

我还测试了一些软件和 python 库。清单如下

设备 A

设备 B

我不知道这两种设备之间的区别。

我想把这两个集成到web系统中进行监控,以后可以添加新的设备。

如果有第三台设备,我必须重新测试连接以查看哪个Python lib可用。

我该如何实施?

了解更多关于 PLC 设备的通信格式?为所有设备编写一组 Python 库?

谢谢你。

0 投票
0 回答
106 浏览

python - 为什么要引入 zero_mode,为什么 default 是 False?

我不知道为什么 pymodbus 需要 zero_mode 参数?有什么用例吗?似乎通常我们想要得到我们设置的东西。

-

任何人都可以分享一个链接,规范的第 4.4 节在哪里? https://pymodbus.readthedocs.io/en/v1.3.2/examples/synchronous-server.html?highlight=zero_mode

0 投票
1 回答
972 浏览

python - pymodbus输入寄存器中的负数应该如何表示?

我想为 pymodbus 异步服务器中的输入寄存器分配负数。我有一个名为 PQV 的 5 元素数组,其中包含大小范围从 0 到 300 的数字,但有些元素是负数

PQV=[145, -210, 54, 187, -10]

我使用下面的代码将 PQV 分配给从地址 0 开始的输入寄存器(寄存器 4)。我尝试将 65536 添加到所有负数,但没有奏效。

如何调节数组 PQV 的负元素以使 pymodbus 可以接受?

0 投票
2 回答
836 浏览

python - 如何从 Modbus Slave 读取所有保持寄存器?

我正在使用支持 modbus232 通信的 Delta PLC。

包含数据的保持寄存器不是连续的。

因此,要读取每个寄存器,我需要单独请求。

如果我想读取超过 200 个寄存器,这是一项相当艰巨的任务。

有没有办法一次读取所有保持寄存器,以 json 或任何其他格式提供所有寄存器及其数据?