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

Posted

技术标签:

【中文标题】功率计 - Modbus RS485 - 5 到 6 小时后,设备不再响应【英文标题】:Power Meter - Modbus RS485 - After 5 to 6 hours, the device doesn't answer anymore 【发布时间】:2021-11-14 10:35:49 【问题描述】:

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

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

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

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

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

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

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

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

【问题讨论】:

“我重新启动了系统/我重新启动了 Polier...但没有任何改变” - 那么是什么让事情再次正常运行呢? 没有线索...我只是在睡个好觉后重新启动程序... :) 所以重新启动应用程序确实可以暂时解决问题,但稍后又会再次出现? (这很重要,因为它指向您的应用程序的问题,而不是设备的问题)。如果您想对此进行测试,请尝试让一个已知良好的应用程序(例如 modpoll 或 mbpoll)运行,看看它是否会在一天左右后停止。 这里是场景:我使用 modpoll,设备回答得很好。我启动我的程序,它可以工作 5 到 6 个小时。然后设备没有应答。我重用了 modpoll,但设备没有响应……我等了一夜,modpoll 或我的程序再次工作!!! 重启两台设备都无法解决这样的问题似乎很不寻常(我假设你切断了电源?)。我的猜测是硬件问题。也许尝试从不同的机器轮询功率计以尝试隔离问题组件(Modbus设备锁定和被看门狗重置的问题,但这通常发生得相当快)。 【参考方案1】:

有几个可能的原因,

    轮询过快会导致设备出现流量控制或溢出 设备进入睡眠模式 波特率因晶体/石英相移而改变

你可以试试串口监控工具调试底层通信,看看异常期间到底发生了什么。

【讨论】:

以上是关于功率计 - Modbus RS485 - 5 到 6 小时后,设备不再响应的主要内容,如果未能解决你的问题,请参考以下文章

RS485 Modbus(转)

485通讯协议和modbus协议区别

RS485 MODBUS RTU通信协议

Profinet转RS485Modbus网关M2AC系列伺服驱动器配置方法

Profinet转RS485Modbus网关M2AC系列伺服驱动器配置方法

python linux 上 RS485通信 Modbus协议