断开连接后,MODBUS RTU与设备的连接出现问题&重新连接RS232。该系统以以下方式构建:
- 带有A+&B-夹子(没有可用的C=GND,例如电表SDM120,但问题也出现在其他设备类型上(
- RS485电线A&B
- 适配器RS232->基于SP485EE芯片的RS485 DA-70161
- 带DSUB9连接器的RS232电缆
- UART连接的MAX3243芯片,用于带CTS/RTS的RS232
- libmodbus软件,使用为9600baud 8N1配置的/dev/ttymxc0(适合设备默认值(
- Linux内核4.4.0嵌入式ARM CPU
总的来说,即使在几周内,这也能很好地工作。但是,一旦断开RS232电缆并在几秒钟(或几分钟或几小时(后重新连接,libmodbus在每次访问MODBUS设备时都会出现超时错误。这很烦人,因为很难让它重新开始工作。只有RS232-RS485-Adapter两端的大量进一步断开连接,才能在几分钟和最多10次重试后将其恢复。
知道是什么导致了这个问题吗?
有什么帮助吗?如何防止这种情况发生,并在重新连接RS232电缆后立即工作?
(是的,一种可能的解决方案是简单地让RS232电缆始终连接。但有时有人需要做点什么,却忘记了后果——我认为这不是一个现实的选择(
在mikrocontroller.net论坛的帮助下,我有了一个解决方案:
使用另一个RS232→RS485适配器DeLock 62919,通过专用电源在夹具上用+5V供电,完成了任务!
现在通信再次出现,即使在RS232断开并重新插入之后