问题标签 [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.
c# - pyModbus 的 C# 等效项
我想开发一个 C# 应用程序来使用 modbus 监控 Sick PLC。我有一个用 Python 编写并使用模块 pyModbus 与 PLC 交谈的示例程序。是否有与 pyModbus 具有相同功能的 C# nugget 包?
python - PyModbus 效率与乱序寄存器和不同的功能
我最近开始使用 PyModbus,发现使用他们的 ModbusTCPClient 和 read_holding_registers 函数进行基本轮询非常容易。
我现在对构建更复杂记录器的最佳方法感兴趣 - 非连续寄存器、不同的功能代码、不同的 Endian 编码等。
例如 - 为了避免对设备的每个标签进行单独的“read_holding_registers”调用,我构建了一个函数,将所有连续的标签寄存器分组以减少调用次数。
我计划为 BinaryPayloadDecoders 实现类似的东西 - 按具有相同字节顺序和字序的寄存器分组,以减少解码器实例的数量。
这一切都不是非常复杂 - 似乎在某个地方已经有一个公认的标准或模板,我似乎在他们的任何在线文档中都找不到。
python - pymodbus 连接有时没有响应?
我正在使用“pymodbus”库来连接 PLC 设备。该设备使用基于 TCP 的 Modbus RTU,设备将返回环境的温度和湿度。
地图地址列表
- 0001:温度
- 0002:湿度
我执行一次以获得价值,它可以成功。但我使用 while 循环有时会出错。我不知道为什么。
代码:
输出:
我们可以看到,有时结果正常,有时结果不完整,有时结果不可用。
我应该怎么做才能解决这个问题,我想监控这个设备。谢谢你。
python - 将 Modbus TCP 数据转换为可读格式
我正在尝试通过我的 AWS 云 EC2 实例读取 Modbus TCP 数据。因为我有一台机器正在生成 MODBUS TCP(从)数据并将其发送到云端。在云端,我正在使用使用套接字用 python 编写的 TCP 服务器程序接收数据。以下是我在 EC2 实例上运行的接收代码:
这是我在运行上面的代码后收到的:
期望的输出是:
现在我想以可读格式解析这条消息并分离出寄存器数据。我现在尝试的是python struct unpack,
但是在上面的代码中,我收到了这个错误:
然后我尝试了pymodbus消息解析器和minimalmodbus解码方法。我尝试了许多可能的解决方案,但无法获取一个。或者可能是我做错了。
那么我该如何实现呢?对此有什么可能的解决方案?
python - 将值分配给 TCP 服务器寄存器的 pymodbus 语法是什么?
我正在尝试使用Synchronous Server Example实现一个简单的同步 TCP 服务器。但是,我不理解文档中的语法解释。该示例包括以下代码块:
假设我想存储152
to address 的值和 to Input Register (ir)
address的30001
值?我应该如何调整上面的代码?276
30002
python - from pymodbus.constants import Endian 抛出错误
我正在尝试使用 pyModbus 学习和编程。我有一个运行良好的示例程序。它有这个代码来导入 ModbusClient
这工作正常。
现在我正在尝试运行并理解一个具有以下代码的 pyModbus 网站示例:
这个在第一行引发错误
from pymodbus.constants import Endian ImportError: No module name pymodbus.constants
这可能是一个幼稚的用户问题,因为我对 Python 对象的经验很薄弱。但是你能帮忙吗?...RDK
python - 如何在 Web 系统上集成不同的 modbus 设备?
我有两个 PLC Modbus 设备。这两家是不同的公司。
第一个是A会返回温度和湿度。第二个是 B 将返回五个值。在这两种设备中,连接都是 modbus TCP。
一个问题是可以连接相同的测试软件,但无法连接另一个。一台设备可以使用 连接pyModbus
,但另一台设备不工作。
我还测试了一些软件和 python 库。清单如下
设备 A
- 软件
- Python库
- pyModbus(好的)
- EasyModbus(否)
设备 B
- 软件
- Python库
- pyModbus(否)
- EasyModbus(好的)
我不知道这两种设备之间的区别。
我想把这两个集成到web系统中进行监控,以后可以添加新的设备。
如果有第三台设备,我必须重新测试连接以查看哪个Python lib
可用。
我该如何实施?
了解更多关于 PLC 设备的通信格式?为所有设备编写一组 Python 库?
谢谢你。
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
python - pymodbus输入寄存器中的负数应该如何表示?
我想为 pymodbus 异步服务器中的输入寄存器分配负数。我有一个名为 PQV 的 5 元素数组,其中包含大小范围从 0 到 300 的数字,但有些元素是负数
PQV=[145, -210, 54, 187, -10]
我使用下面的代码将 PQV 分配给从地址 0 开始的输入寄存器(寄存器 4)。我尝试将 65536 添加到所有负数,但没有奏效。
如何调节数组 PQV 的负元素以使 pymodbus 可以接受?
python - 如何从 Modbus Slave 读取所有保持寄存器?
我正在使用支持 modbus232 通信的 Delta PLC。
包含数据的保持寄存器不是连续的。
因此,要读取每个寄存器,我需要单独请求。
如果我想读取超过 200 个寄存器,这是一项相当艰巨的任务。
有没有办法一次读取所有保持寄存器,以 json 或任何其他格式提供所有寄存器及其数据?