问题标签 [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 投票
0 回答
946 浏览

python - “client.read_holding_registers”问题 RTU pymodbus

我正在尝试使用 pymodbus 从 PLC 读取温度值,但它不工作。

这是我的代码:

我尝试使用地址 40001 和 1,但都有效。我不断收到这条消息:

0 投票
1 回答
514 浏览

iot - 如何解决太阳能逆变器上的modbus错误?

我目前正在使用 Growatt 逆变器之一,5 KVA 住宅逆变器,它有两个端口,一个是 RS-485 我已经连接了一个智能电能表来控制流向电网的反向功率,另一个端口 Growatt wifi 设备正在工作,我想使用自己的平台,我使用了这个协议 Growatt PV Inverter Modbus RS-485 RTU 协议,然后用树莓派将电线连接到 RS-232 以读取数据并将其发送回我的服务器。现在问题来了,只要两个设备开始工作,逆变器就会开始显示错误。我不明白为什么它没有与 Growatt 设备一起使用。有什么解决办法吗?

0 投票
1 回答
1043 浏览

python-3.x - 如何根据zmq订阅的消息更新pymodbus tcp server的值?

我是新手。我现在的项目是当当前端决定启动modbus服务时,我会为modbus服务创建一个进程。然后在父进程中获取值,通过ZeroMQPUB/SUB传值,我现在想在modbus服务进程中更新modbus寄存器的值。

我尝试了 update_server.py 提供的 pymodbus 提到的方法twisted.internet.task.LoopingCall()更新了寄存器的值,但这将使我无法通过客户端连接到我的服务器。我不知道为什么?

用于LoopingCall()建立服务器,客户端连接时的日志。

/home/xiaohe/图片/Selection_050.png

然后我尝试将uploading和startTCPserver都放在async循环中,但是启动后第一次才进入update,然后就没有进入。

目前,我正在使用LoopingCall()来处理更新,但我认为这不是一个好方法。

这是我初始化 PUB 和所有可以读取标签的标签的代码。

这是为了获取设备标签值并发布它。

modbus 服务器导入

这是我为 modbus 进程创建的代码。

这是 Docker 运行的命令。

这是 Docker 配置文件/etc/scout.cfg

我希望能够在有来自 ZeroMQ 的消息时触发 modbus 值更新功能,并且它将被正确更新。

0 投票
1 回答
3372 浏览

python - AttributeError:“ModbusIOException”对象没有属性“寄存器”

我在尝试使用以下代码从设备获取信息时遇到了一些麻烦:

它显示了我在标题中输入的错误。根据0x0000手册,地址应该是小时日等。 在这里您可以看到手册中出现的小时地址

谢谢,我希望能找到解决我问题的方法。

0 投票
1 回答
2650 浏览

python - 读取/写入时 modbus 错误无法连接到 ModbusTcpClient

最近我的任务是一个涉及读取 Modbus 数据的项目,特别是 pymodbus 包。在深入研究这个项目之前,我想用 python 模拟一些 Modbus 数据的读写(无需使用机器)。使用他们主页上的示例数据,我尝试使用客户端编写但遇到 Modbus 错误

我试过调查此事,看看我能挖掘出什么,想知道我是否需要一个服务器来写或读。但是,我不确定根据我在套接字和串行方面的经验,我只需要建立与正确端口的连接即可简单地写入(但我知道 Modbus 是不同的)。

这是代码

这是我的错误“pymodbus.exceptions.ConnectionException:Modbus错误:[连接]无法连接[ModbusTcpClient(localhost:502)]”

我希望输出只是简单地编写 Modbus 而不需要任何东西,不一定在另一端监听,但是在尝试连接/写入时我不断收到错误消息。(对不起,如果这很难理解,我的大脑到处都是,而且我对 Modbus 非常陌生)。

0 投票
1 回答
631 浏览

python-3.x - 无法与 Pymodbus TCPserver 建立连接

我正在设置一个通过以太网 TCP/IP modbus 连接到客户端的新 TCP 服务器,并且应该每隔几秒将某些值推送到给定的 modbus 寄存器(hr = 6022)。我没有看到脚本引发的任何异常/错误,但客户端没有收到任何数据。使用 StartTCPserver 命令,我希望看到任何网络流量(至少是握手),但我在 Wireshark 上看不到任何流量。下一个可能的诊断可能是什么?

我尝试在本地运行类似的脚本(没有外部以太网连接);一个充当客户端,另一个充当服务器,并且确实看到客户端寄存器上的值更新。

0 投票
1 回答
849 浏览

python - 使用 RS485 和 Modbus(Python 或 LabView)从温度控制器读取和写入数据

我有一个问题,对于习惯使用串行接口的人来说似乎很容易,但对我来说这是第一次。

我们想通过使用温度控制器(RKC Instruments 的 CB100 / CB400 / CB500 / CB700 / CB900 系列:https ://www.rkcinst.co.jp/english/download-center/?dc_cat =15#)。控制器连接到主戴尔 OptiPlex5060 小型塔式机 ( https://www.dell.com/en-us/work/shop/desktops-all-in-one-pcs/optiplex-5060-small-form-factor/ spd/optiplex-5060-desktop/cto01o5060sffus)通过 RS485 转 USB 适配器运行 Windows 10 Pro(版本 1903,内部版本 18362.267)。

该设备出现在设备管理器(“COM3”端口)中,希望安装了正确的驱动程序(参见此屏幕截图)。此外,控制器和主计算机之间的设备设置与以下值匹配(设备管理器中的端口设置):

  1. 波特率 = 9600;
  2. 位大小 = 8;
  3. 奇偶校验 = 无;
  4. 停止位 = 1

我想我通过使用带有以下代码的 pymodbus 库正确连接了设备:

连接到 RS485 设备 - pymodbus

但是,当我尝试使用此代码读取它时(设备的地址是 001Hex):

我收到此错误:

Modbus 错误:[输入/输出] Modbus 错误:[无效消息] 收到不完整的消息,预计至少 5 个字节(已收到 1 个)。

谁能帮忙提出错误在哪里?使 modbus 工作的最小工作代码是什么?为什么似乎很难找到快速的在线资源?

非常感谢,任何帮助都非常感谢!

0 投票
0 回答
173 浏览

python-3.x - 一次不能读取超过 13 个寄存器

这是我的代码:

我收到以下错误:

但如果读取最多 13 个寄存器,我不会收到任何错误。我通过使用以下代码发现:

输出:

0 投票
0 回答
50 浏览

python - Pymodbus:TypeError:字符串索引必须是整数

我正在尝试在 pymodbus 中使用modbus_mapper,但遇到以下问题

回溯(最近一次通话最后):

代码如下:

打印 print(mapping) & print(block.values()) 我收到以下输出:

40001
dict_values(['40001', 'int', 'Pac'])

请帮我解决这个问题

0 投票
0 回答
221 浏览

python - 使用 Pymodbus 从 SMA 集群控制器获取数据

我正在尝试使用 pymodbus 从 SMA 集群控制器获取数据,但没有得到任何响应。例如,文档说地址 30005 中的请求带有 2 个寄存器和单元 1 我将获得集群控制器的序列号,我得到以下信息:

“ModbusIOException”对象没有属性“寄存器”

我正在使用的代码: