From f3cfadd3e882df6e240f7609b72f72415726da69 Mon Sep 17 00:00:00 2001 From: hxy7yx <1595670487@qq.com> Date: Tue, 23 Jul 2024 16:47:28 +0800 Subject: [PATCH] fix(modbus):reconnect when recv error messages --- plugins/modbus/modbus_req.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/plugins/modbus/modbus_req.c b/plugins/modbus/modbus_req.c index 152b02fe..3801e6c6 100644 --- a/plugins/modbus/modbus_req.c +++ b/plugins/modbus/modbus_req.c @@ -206,6 +206,8 @@ int modbus_group_timer(neu_plugin_t *plugin, neu_plugin_group_t *group, "modbus message error, skip, %hhu!%hu", gd->cmd_sort->cmd[i].slave_id, gd->cmd_sort->cmd[i].start_address); + rtt = NEU_METRIC_LAST_RTT_MS_MAX; + neu_conn_disconnect(plugin->conn); } else if (ret_buf == -2) { modbus_value_handle( plugin, gd->cmd_sort->cmd[i].slave_id, 0, @@ -216,8 +218,8 @@ int modbus_group_timer(neu_plugin_t *plugin, neu_plugin_group_t *group, "%hhu!%hu", gd->cmd_sort->cmd[i].slave_id, gd->cmd_sort->cmd[i].start_address); + rtt = neu_time_ms() - read_tms; } - rtt = neu_time_ms() - read_tms; break; } } else { @@ -246,6 +248,8 @@ int modbus_group_timer(neu_plugin_t *plugin, neu_plugin_group_t *group, plog_error(plugin, "modbus message error, skip, %hhu!%hu", gd->cmd_sort->cmd[i].slave_id, gd->cmd_sort->cmd[i].start_address); + rtt = NEU_METRIC_LAST_RTT_MS_MAX; + neu_conn_disconnect(plugin->conn); } else if (ret_buf == -2) { modbus_value_handle(plugin, gd->cmd_sort->cmd[i].slave_id, 0, NULL, NEU_ERR_PLUGIN_READ_FAILURE); @@ -253,8 +257,8 @@ int modbus_group_timer(neu_plugin_t *plugin, neu_plugin_group_t *group, "modbus device response error, skip, %hhu!%hu", gd->cmd_sort->cmd[i].slave_id, gd->cmd_sort->cmd[i].start_address); + rtt = neu_time_ms() - read_tms; } - rtt = neu_time_ms() - read_tms; } } else { for (uint16_t j = 0; j < plugin->max_retries; j++) { @@ -275,6 +279,8 @@ int modbus_group_timer(neu_plugin_t *plugin, neu_plugin_group_t *group, "modbus message error, skip, %hhu!%hu", gd->cmd_sort->cmd[i].slave_id, gd->cmd_sort->cmd[i].start_address); + rtt = NEU_METRIC_LAST_RTT_MS_MAX; + neu_conn_disconnect(plugin->conn); } else if (ret_buf == -2) { modbus_value_handle( plugin, gd->cmd_sort->cmd[i].slave_id, 0, NULL, @@ -284,8 +290,8 @@ int modbus_group_timer(neu_plugin_t *plugin, neu_plugin_group_t *group, "%hhu!%hu", gd->cmd_sort->cmd[i].slave_id, gd->cmd_sort->cmd[i].start_address); + rtt = neu_time_ms() - read_tms; } - rtt = neu_time_ms() - read_tms; break; } else if (ret_buf == 0) { modbus_value_handle(