From 700248ef81172dbde1bc4ce66e566c6545ac14a4 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Mon, 21 Jul 2025 21:46:34 +0800 Subject: [PATCH] =?UTF-8?q?v1216|=20=E4=BC=98=E5=8C=96=E6=B8=A9=E5=BA=A6?= =?UTF-8?q?=E6=8E=A7=E5=88=B6=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../water_cooling_temperature_control_module.cpp | 14 +++++++++++++- .../water_cooling_temperature_control_module.hpp | 7 ++++--- usrc/a8000_protocol/protocol/reg_index.cpp | 2 ++ usrc/a8000_protocol/protocol/reg_index.hpp | 3 ++- usrc/version.c | 2 +- 5 files changed, 22 insertions(+), 6 deletions(-) diff --git a/sdk/components/water_cooling_temperature_control_module/water_cooling_temperature_control_module.cpp b/sdk/components/water_cooling_temperature_control_module/water_cooling_temperature_control_module.cpp index f23cfb4..8eb6937 100644 --- a/sdk/components/water_cooling_temperature_control_module/water_cooling_temperature_control_module.cpp +++ b/sdk/components/water_cooling_temperature_control_module/water_cooling_temperature_control_module.cpp @@ -107,7 +107,9 @@ int32_t WaterCoolingTemperatureControlModule::module_set_reg(int32_t regindex, i MODULE_REG_CASE__SET_REG_FLOAT(kreg_water_cooling_tmp_controler_temp1_offset, m_temperature_sensor_offset[1], 0.1); MODULE_REG_CASE__SET_REG_FLOAT(kreg_water_cooling_tmp_controler_temp2_offset, m_temperature_sensor_offset[2], 0.1); MODULE_REG_CASE__SET_REG_FLOAT(kreg_water_cooling_tmp_controler_temp3_offset, m_temperature_sensor_offset[3], 0.1); - MODULE_REG_CASE__SET_REG_FLOAT(kreg_water_cooling_tmp_controler_fanlevel_coefficient, m_fanlevel_coefficient,0.01); + MODULE_REG_CASE__SET_REG_FLOAT(kreg_water_cooling_tmp_controler_fanlevel_coefficient, m_fanlevel_coefficient, 0.01); + + MODULE_REG_CASE__SET_REG_FLOAT(kreg_water_cooling_tmp_controler_first_approach_target_dval_threshold, m_first_approach_target_d_val_threshold, 0.1); default: return err::kmodule_not_find_reg; @@ -147,6 +149,8 @@ int32_t WaterCoolingTemperatureControlModule::module_get_reg(int32_t regindex, i MODULE_CFG_CASE__GET_REG_FLOAT(kreg_water_cooling_tmp_controler_temp3_offset, (m_temperature_sensor_offset[3]), 0.1); MODULE_CFG_CASE__GET_REG_FLOAT(kreg_water_cooling_tmp_controler_fanlevel_coefficient, m_fanlevel_coefficient, 0.01); + MODULE_CFG_CASE__GET_REG_FLOAT(kreg_water_cooling_tmp_controler_first_approach_target_dval_threshold, m_first_approach_target_d_val_threshold, 0.1); + default: return err::kmodule_not_find_reg; break; @@ -217,6 +221,8 @@ void WaterCoolingTemperatureControlModule::workloop() { fan_start(m_cfg.fanlevel); int32_t i = 0; uint32_t startticket = zos_get_tick(); + m_pidmodule.set_integral_err(0); + bool firstApproachTarget = true; #if 1 while (!m_thread.getExitFlag()) { if (zos_haspassedms(startticket) > 1000) { @@ -233,6 +239,12 @@ void WaterCoolingTemperatureControlModule::workloop() { float error = m_target_temperature - val; float out = 0; + + if (firstApproachTarget && abs(error) <= m_first_approach_target_d_val_threshold) { + firstApproachTarget = false; + m_pidmodule.set_integral_err(0); // 重置积分误差 + } + m_pidmodule.compute(error, &out); // if (m_enable_log) { diff --git a/sdk/components/water_cooling_temperature_control_module/water_cooling_temperature_control_module.hpp b/sdk/components/water_cooling_temperature_control_module/water_cooling_temperature_control_module.hpp index 2325f45..6e92aa0 100644 --- a/sdk/components/water_cooling_temperature_control_module/water_cooling_temperature_control_module.hpp +++ b/sdk/components/water_cooling_temperature_control_module/water_cooling_temperature_control_module.hpp @@ -70,9 +70,10 @@ class WaterCoolingTemperatureControlModule : public ZIModule { ZThread m_thread; ZThread m_sensor_update_thread; - int32_t m_enable_log = 0; - float m_target_temperature = 0; - int32_t m_output = 0; + int32_t m_enable_log = 0; + float m_target_temperature = 0; + float m_first_approach_target_d_val_threshold = 2; + int32_t m_output = 0; float m_feedbak_temperature = 0; float m_temperature_sensor_cache[4] = {0}; diff --git a/usrc/a8000_protocol/protocol/reg_index.cpp b/usrc/a8000_protocol/protocol/reg_index.cpp index ef6a9b8..9ffa4c4 100644 --- a/usrc/a8000_protocol/protocol/reg_index.cpp +++ b/usrc/a8000_protocol/protocol/reg_index.cpp @@ -41,6 +41,8 @@ static reginfo_t table[] = { REG_ITERM(kreg_water_cooling_tmp_controler_temp3_offset), REG_ITERM(kreg_water_cooling_tmp_controler_fanlevel_coefficient), + REG_ITERM(kreg_water_cooling_tmp_controler_first_approach_target_dval_threshold), + REG_ITERM(kreg_pipette_pos_nl), REG_ITERM(kreg_pipette_capactitance_val), diff --git a/usrc/a8000_protocol/protocol/reg_index.hpp b/usrc/a8000_protocol/protocol/reg_index.hpp index 662d65b..9b2c598 100644 --- a/usrc/a8000_protocol/protocol/reg_index.hpp +++ b/usrc/a8000_protocol/protocol/reg_index.hpp @@ -47,7 +47,8 @@ typedef enum { kreg_water_cooling_tmp_controler_temp2_offset = 3062, // 温度2 偏移 kreg_water_cooling_tmp_controler_temp3_offset = 3063, // 温度3 偏移 - kreg_water_cooling_tmp_controler_fanlevel_coefficient = 3070, // 风扇转速系数0.1 + kreg_water_cooling_tmp_controler_fanlevel_coefficient = 3070, // 风扇转速系数0.1 + kreg_water_cooling_tmp_controler_first_approach_target_dval_threshold = 3071, // 0.1 /******************************************************************************* * 移液枪状态 * diff --git a/usrc/version.c b/usrc/version.c index d77148e..673bc3f 100644 --- a/usrc/version.c +++ b/usrc/version.c @@ -1,5 +1,5 @@ #include "version.h" -int32_t APP_VERSION = 1215; +int32_t APP_VERSION = 1216; int32_t get_app_version() { return APP_VERSION; }