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