Browse Source

v1216| 优化温度控制逻辑

master
zhaohe 2 weeks ago
parent
commit
700248ef81
  1. 14
      sdk/components/water_cooling_temperature_control_module/water_cooling_temperature_control_module.cpp
  2. 7
      sdk/components/water_cooling_temperature_control_module/water_cooling_temperature_control_module.hpp
  3. 2
      usrc/a8000_protocol/protocol/reg_index.cpp
  4. 3
      usrc/a8000_protocol/protocol/reg_index.hpp
  5. 2
      usrc/version.c

14
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) {

7
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};

2
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),

3
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
/*******************************************************************************
* *

2
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; }
Loading…
Cancel
Save