在断开和重新连接 RS232 后,我遇到了与设备的 MODBUS RTU 连接问题。该系统是通过以下方式构建的:
- 带 A+ 和 B- 夹的 MODBUS RTU 设备(没有可用的 C = GND,例如电表 SDM120,但问题也出现在其他设备类型上)
- RS485 线 A 和 B
- 适配器 RS232 -> 基于 SP485EE 芯片的 RS485 DA-70161
- 带 DSUB9 连接器的 RS232 电缆
- UART 连接 MAX3243 芯片用于 RS232 与 CTS/RTS
- 使用为 9600baud 8N1 配置的 /dev/ttymxc0 的 libmodbus 软件(适合设备默认值)
- Linux kernel 4.4.0 嵌入式ARM CPU
一般来说,这工作得很好,甚至超过几周。但是一旦断开 RS232 电缆并在几秒钟(或几分钟或几小时)后重新连接,libmodbus 在每次访问 MODBUS 设备时都会出现超时错误。这很烦人,因为很难让它重新开始工作。在几分钟和最多 10 次重试后,只有进一步断开 RS232-RS485 适配器两端的连接才能将其恢复。
知道什么可能导致这个问题吗?
在重新连接 RS232 电缆后如何防止这种情况并立即工作有什么帮助吗?
(是的,一种可能的解决方案是简单地让 RS232 电缆始终连接。但有时有人需要做某事而忘记了后果 - 我认为这不是一个现实的选择)