#connection #automatic #failure #modbus #robust #layer #reconnect

modbus-robust

在失败时自动重新连接的tokio-modbus的层

1个不稳定版本

0.1.0 2023年12月25日

#8#reconnect


2 个crate中使用

GPL-3.0-or-later

16KB
267

使tokio-modbus在连接丢失时更加健壮

这个库是tokio-modbus的层。当modbus调用失败时,它会自动丢弃当前连接并重新连接。这使得它能够应对TCP连接故障,例如,可能由重启mbusd引起。

这并不是一个完整的重试机制。例如,如果重新连接失败,调用将失败,而不是进行进一步的连接尝试。如果需要多次重试,可以将它们叠加在这个库之上,无需担心重新建立失败的连接,因为每次调用都会自动尝试这样做。

它也不实现任何形式的超时;同样,这也应该叠加。

最后,请注意,一个调用可能会被modbus设备实际接收两次。例如,可能是命令成功接收,但回复未能送达。因此,这个库应该只在调用幂等时使用。

用法

对于简单用例,可以使用TCP/IP的new_tcp_slave或串行的new_rtu_slave。后者是仅在需要设置串行端口的设备路径和波特率时的快捷方式。如果需要更改其他选项(例如奇偶校验),请使用new_sync:它接受一个生产连接的工厂函数。它仅适用于同步连接函数。

对于更复杂的用例,实现SyncConnector trait来指定如何建立连接(异步)。然后将其实现传递给RobustClient::new_context

依赖

~6–18MB
~202K SLoC