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 欧姆。
设备有时会重新启动,例如后天,但没有采取任何措施......
有没有人遇到过这种情况并找到了根本原因?
解决方案
有几个可能的原因,
- 轮询过快导致设备上的流量控制或溢出
- 设备进入睡眠模式
- 波特率因晶体/石英相移而改变
您可以尝试使用串口监控工具来调试底层通信,检查异常期间究竟发生了什么。
推荐阅读
- sql - Redshift SQL:如何在不按名称引用组的情况下将每个组的值获取到函数中?
- docker - kubernetes 如何识别 docker 是要使用的容器平台
- django - 获取 sqlite3.OperationalError: no such column: REFERRED.id 当我尝试迁移时
- c# - 由于系统中打开的文件过多,ASP.NET core 2.2 崩溃
- javascript - 有人可以帮我解决这个语法错误吗?
- snowflake-cloud-data-platform - Sql Nul 值在 Snowflake 上错误加载为 0x0 [Square]
- typescript - Vue Typescript 组件类属性初始化器的最佳实践
- python - 没有名为“后端”的模块 [pytest 覆盖率]
- javascript - TypeError:无法读取未定义反应命中的属性“标题”
- java - 数组对象数组