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 752d8f0..6a34fe8 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 @@ -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); 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 a18f0a0..d96f958 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 @@ -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