问题标签 [minimalmodbus]

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 回答
76 浏览

python - Rotronic Temp/Humidity probe 使用 minimummodbus 和 python 锁定到“无通信”状态

编辑:无论出于何种原因,这整个问题(现在)都通过仅包含 time.sleep(1) 的 finally 语句解决了。为什么这会在我的程序中起作用没有任何意义,但确实如此。感谢用户英国人的推荐。

我正在使用 Python 和 minimummodbus 包开发传感器测试软件。我已经让其他五个传感器与 minimummodbus 一起工作,没有任何问题。我在使用 Rotronic 的这个传感器时遇到问题(带有 modbus 附件):https ://www.rotronic.com/en-us/rms-hcd-s.html 。这是手册:https ://service.rotronic.com/manual/?_ga=2.154508728.1456734610.1628031858-1559765634.1628031858 。Navigation: 硬件概述 > 传感器和探头 > HCD-Sx > MODBUS

解释这个问题有点困难,但我会尽力而为。我可以成功地从设备轮询几次,没有任何问题。定期我会得到一个“无通信错误”,看起来像这样,打开了最小的modbus调试:

然后,我会定期连续收到两个校验和错误:

这些错误不会破坏任何东西,很容易用异常语句修复,但真正的问题是设备完全停止响应。我专门写了一个小脚本来显示这个问题:

在传感器停止响应之前,此脚本可以运行 1 分钟到 6 分钟不等。这是调试输出和诊断脚本:

除非循环中断,否则无响应错误将无限重复。传感器进入锁定状态,只有在拔下并重新插入时才能重新连接。当传感器处于锁定状态时,它甚至不会与另一个程序(KurySoft 的 ModbusReader)通信。我只使用 ModbusReader 没有遇到这个传感器的任何问题,所以它让我相信这是我没有足够的知识来理解的最小 modbus 的不兼容。

“太短的 Modbus 响应”错误并不总是导致传感器锁定状态,它并不总是继续进行。有时没有其他错误会导致“无通信”错误。它只是停止通信而没有任何警告。

我也在联系传感器的开发人员,但他们对理解这个问题不太感兴趣。我认为我发送的任何内容都不会导致传感器锁定,因此我想声明这是一个传感器问题并将其发回,但我无法用另一个程序复制该问题。

如果有一种方法可以编辑我的代码或 minimummodbus 库来解决这个问题,我会很高兴得到帮助。谢谢你。

0 投票
1 回答
96 浏览

python - 功率计 - Modbus RS485 - 5 到 6 小时后,设备不再响应

使用 Raspberry PI,我在 Python 中编写了一个循环,使用 waveshare 2-ch rs485 hat 每 15 秒读取一次 Polier MTR5LMOD 的 6 个寄存器。

该程序在 5 到 6 小时内工作(有时更少,有时更多)......突然......设备不再响应(无响应)!

我重新启动系统/我重新启动 Polier ......但没有任何变化。

为了进一步测试,我使用modpoll成功检查了通讯。我启动我的程序,它可以工作 5 到 6 个小时。然后设备没有应答。我重用 modpoll 并且设备没有应答。在将所有内容放置一夜之后,modpoll 和我的程序都再次工作。

我尝试了不同的库:UMODBUS 或 MinimalModBus 或 PyModBus。

我检查了几次我的接线和硬件:电缆小于 10m,两侧电阻为 120 欧姆。

设备有时会重新启动,例如后天,但没有采取任何措施......

有没有人遇到过这种情况并找到了根本原因?

0 投票
0 回答
35 浏览

python - 一个从站 (RPi) 和多个从站 (UNO 和 MEGA) 之间的 Minimalmodbus

我有一个使用半双工 RS 485 通信(2 条双绞线)连接的设置

  1. 一个使用 minimummodbus 运行 python 脚本的 Master RPi
  2. 一个 arduino ONU 作为 1 号从机,带有一些代码(它只发送一些 int)
  3. 一个 arduino MEGA 作为 2 号从机,带有一些代码(它只发送一些与 uno 不同的 int)

以下是代码:

python中的大师:

ONU从机:

超级奴隶:

所以你知道,我尝试了更快的波特率,但选择了更慢的速度来更快地访问成功的项目......不幸的是,它没有按计划工作。

这是问题所在,当我从主机端运行 python 脚本时,它会从其中一个从属设备读取数组,然后另一个总是会导致:

然后,当一切仍在运行时,我断开工作的从站,另一个开始通信。如果我重新连接断开的一个,它将无法通信(因为另一个正在通信):

换句话说,它是一个或另一个有效。如果我想切换正在工作的那个,我必须拔掉正在工作的那个......

我确信这是一个愚蠢的错误,但我没有看到它......我真的希望你们中的一些人能够指导我解决这个问题。

提前致谢!

0 投票
0 回答
47 浏览

python-3.x - MinimalModbus 导入错误 => AttributeError:模块 'serial' 没有属性 'Serial'

我正在尝试使用 minimummodbus 库,但我无法导入它,因为我收到错误

我已经通过 pip3 install minimummodbus 安装了它。我正在使用 python 3.7.3 并且不知道我能做什么,如果重要的话我有 pyserial 版本 3.4

0 投票
0 回答
105 浏览

python - Minimalmodbus 非法地址

我是 modbus 的新手,我正在尝试用于 python 的 minimummodbus 库。我连接了一个设备并尝试了 minimummobus 文档提供的示例,我收到以下错误:

我的代码很简单,它遵循提供的示例

我知道 4 号寄存器是一个很好的寄存器,因为当我使用随设备提供的 Labview 示例时,我从中得到了读数。如果有人可以向我提供有关 minimummodbus 错误及其确切含义的更深入信息,我将不胜感激。

0 投票
1 回答
185 浏览

python - 在 RPI 上使用 modbus RTU 读取 kWh 电表 (PM5100)

我的目标是使用 modbus rtu 在树莓派上使用 Python 脚本从 Schneider 读出 PM5100。
我已经能够使用 modbus 为另一个仪表(SDM220)做到这一点,它工作得很好,但我似乎无法在这个仪表上做到这一点。

PM5100 我配置为:
slave adr:1
波特:19200
奇偶校验:无

我认为布线应该没问题,GND 和屏蔽没有连接,但 D1 和 D0 带有 RS485 到 USB 连接器。

简单代码:

这会生成错误 InvalidResponseError:

那么,我做错了什么?

  1. 不确定我是否使用了正确的寄存器,但它也不适用于其他号码。
  2. 错误的图书馆?会很奇怪,因为它适用于其他仪表(SDM220)
  3. 我尝试更改为“read_register”并更改参数但没有运气

欢迎有任何经验、提示、猜测或答案的人回复。谢谢!

来源:
PM5100:https
://www.se.com/be/nl/product/METSEPM5100/pm5100-meetcentrale---tot-15de-h---1do-33-alarmen--paneelmontage/ 注册列表:https: //www.se.com/ww/en/download/document/PM5100-PM5300_PublicRegisterList/
RS485 转 USB:https ://www.bol.com/be/nl/p/usb-to-rs485-485-converter- adapter-support-win7-xp-vista-linux-mac-os-wince5-0/9300000012988342/?Referrer=ADVNLGOO002013-G-120928976848-S-1076696512011-9300000012988342&gclid=Cj0KCQiAsqOMBhDFARIsAFBTN3epmK66KNj2IufWmjeGY_nkGep_roirDZxfyLu0H3UaVYvewlDRMx4aAhgwEALw_wcB
minimalModbus: https://minimalmodbus.readthedocs.io/ zh/stable/readme.html

0 投票
3 回答
183 浏览

python - Raspberry Pi与SHT20传感器(XY MD02)的Minimalmodbus RTU连接问题

我一直在尝试使用 Minimalmodbus 构建一个简单的温度测量系统。组件如下;

  1. RPi(树莓派零)与 python 版本。3.7.3
  2. USB 转 RS-485 适配器
  3. 温湿度传感器:XY-MD02(SHT20)

Modbus RTU库(Minimalmodbus)很好地安装在RPi上,可以通过Arduino Modbus库(smarmengol)与Arduino Uno成功通信 连接PC(windows10)时,使用modbus主模拟软件“Modbus Poll”确认传感器工作)。但是当这个传感器通过 USB 到 RS-485 适配器连接到 RPi 时,我无法获得任何数据。我看不出它的电路有什么问题。当我在调试模式下运行它以读取寄存器时,这表明读取查询已按照其手册所述正确释放。错误消息只是说“无响应错误”。甚至任何评论都将不胜感激。请参考python代码和调试&错误信息如下;

<调试和错误信息>

0 投票
0 回答
65 浏览

minimalmodbus - Python minimummodbus,如何读取 MODBUS RTU

对不起,我的英语不好。

我正在尝试通过 Modbus RTU 方法(库:minimalmodbus)读取数据,但有问题。

这是我的“Modbus Poll”显示。 在此处输入图像描述

我想使用最小的modbus读取数据。

但是,我一直失败。有人可以帮助我如何读取数据吗?

0 投票
0 回答
216 浏览

python - minimummodbus:没有与仪器通信(无应答)ModBus RTU

我尝试使用python库在质量流量控制器和 pc之间建立连接。根据设备文档,我必须将通信端口设置为:minimalmodbus

我试图通过在 Windows 上使用该库创建一个奴隶,COM4但没有成功。我使用一个简单的代码来建立/测试连接:

注:定义:仪器(端口:str,slaveaddress:int,模式:str=MODE_RTU,close_port_after_each_call:bool=False,调试:bool=False)

输出是

和:

到目前为止我已经尝试过:

  1. close_port_after_each_call = 真
  2. 启用本地回声
  3. 使用另一个 COM 端口
  4. 检查设备管理器中的 COM 属性并按照上面的描述进行设置
  5. 更改从机地址、超时、时间停止等参数
  6. 不,没有其他设备使用 COM4。并且可以使用公司自己的软件通过COM4建立与质量流量控制器的连接。
  7. 启用 xonxoff

这也是print(minbus._get_diagnostic_string())

任何建议将不胜感激

0 投票
2 回答
39 浏览

python - 如何使用最小的 Modbus 写入寄存器写入前两个字节?

我试图弄清楚如何使用 minimumModbus 写入寄存器命令写入前两个字节。寄存器大小 - 240(无符号 8 位 int 数组),我使用 write.registers 命令并将值作为数组传递,但写入值发生在第 2 和第 4 字节中。

示例:00 03 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0 0 00 00 0 0 0 0 00 00 0 0 0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0

相反,我希望结果为 03 01 后跟其他字节。请给一些建议