Browse Source

优化水冷控温

master
zhaohe 8 months ago
parent
commit
cec84d1510
  1. 12
      sdk/components/water_cooling_temperature_control_module/water_cooling_temperature_control_module.cpp
  2. 11
      sdk/components/water_cooling_temperature_control_module/water_cooling_temperature_control_module.hpp

12
sdk/components/water_cooling_temperature_control_module/water_cooling_temperature_control_module.cpp

@ -72,7 +72,7 @@ int32_t WaterCoolingTemperatureControlModule::pri_module_xxx_reg(int32_t param_i
PROCESS_REG(kreg_water_cooling_tmp_controler_pid_target, REG_GET_FLOAT(m_target_temperature, 0.1), REG_SET_FLOAT(m_target_temperature, 0.1));
PROCESS_REG(kreg_water_cooling_tmp_controler_pid_nowoutput, REG_GET(m_pidmodule.get_output()), ACTION_NONE);
PROCESS_REG(kreg_water_cooling_tmp_controler_pid_feedbackval, REG_GET(read_pid_temperature()), ACTION_NONE);
PROCESS_REG(kreg_water_cooling_tmp_controler_pid_feedbackval, REG_GET(read_pid_temperature_from_upper()), ACTION_NONE);
PROCESS_REG(kreg_water_cooling_tmp_controler_temp0, REG_GET(getTemperatureSensorVal(0) * 10 + 0.5), ACTION_NONE);
PROCESS_REG(kreg_water_cooling_tmp_controler_temp1, REG_GET(getTemperatureSensorVal(1) * 10 + 0.5), ACTION_NONE);
@ -166,7 +166,8 @@ void WaterCoolingTemperatureControlModule::workloop() {
m_thread.sleep(m_cfg.pidcompute_periodms);
float val = read_pid_temperature();
float val = read_pid_temperature();
m_feedbak_temperature = val;
float error = m_target_temperature - val;
float out = 0;
@ -232,6 +233,13 @@ int32_t WaterCoolingTemperatureControlModule::checkdevice() {
/*******************************************************************************
* BASIC *
*******************************************************************************/
float WaterCoolingTemperatureControlModule::read_pid_temperature_from_upper() {
if (creg.module_status == 1) {
return m_feedbak_temperature;
} else {
return read_pid_temperature();
}
}
float WaterCoolingTemperatureControlModule::read_pid_temperature() {
zlock_guard lock(m_temperature_sensor_mutex);

11
sdk/components/water_cooling_temperature_control_module/water_cooling_temperature_control_module.hpp

@ -68,14 +68,15 @@ class WaterCoolingTemperatureControlModule : public ZIModule, public ZI_WaterCoo
PidModule m_pidmodule;
ZThread m_thread;
int32_t m_enable_log = 0;
float m_target_temperature = 0;
int32_t m_enable_log = 0;
float m_target_temperature = 0;
float m_feedbak_temperature = 0;
zmutex m_temperature_sensor_mutex;
public:
WaterCoolingTemperatureControlModule(){};
virtual ~WaterCoolingTemperatureControlModule(){};
WaterCoolingTemperatureControlModule() {};
virtual ~WaterCoolingTemperatureControlModule() {};
static void createDefaultConfig(config_t* cfg);
@ -110,6 +111,8 @@ class WaterCoolingTemperatureControlModule : public ZIModule, public ZI_WaterCoo
private:
int32_t gettemperature_sensor_state(int32_t& state);
float getTemperatureSensorVal(int32_t index);
float read_pid_temperature_from_upper();
};
} // namespace iflytop
Loading…
Cancel
Save