Browse Source

update

master
zhaohe 2 years ago
parent
commit
8d85f36ae3
  1. 2
      components/ti/drv8710.cpp
  2. 2
      components/water_cooling_temperature_control_module/pwm_ctrl_module.cpp
  3. 96
      components/water_cooling_temperature_control_module/water_cooling_temperature_control_module.cpp
  4. 27
      components/water_cooling_temperature_control_module/water_cooling_temperature_control_module.hpp

2
components/ti/drv8710.cpp

@ -1,7 +1,7 @@
#include "drv8710.hpp"
using namespace iflytop;
void DRV8710::initialize(hardware_cfg_t* cfg) { //
void DRV8710::initialize(config_t* cfg) { //
m_cfg = *cfg;
m_pwmCtrl.initialize(cfg->tim, 10 * 000, false);

2
components/water_cooling_temperature_control_module/pwm_ctrl_module.cpp

@ -3,7 +3,7 @@
#include "sdk\components\zprotocols\zcancmder_v2\api\errorcode.hpp"
using namespace iflytop;
void PWMSpeedCtrlModule::initialize(fangroup_device_cfg_t* pcfg, bool enablefbcheck) {
void PWMSpeedCtrlModule::initialize(config_t* pcfg, bool enablefbcheck) {
ZASSERT(pcfg);
ZASSERT(pcfg->fanCtrlTim);
cfg = *pcfg;

96
components/water_cooling_temperature_control_module/water_cooling_temperature_control_module.cpp

@ -7,34 +7,60 @@ using namespace iflytop;
#define TAG "WaterCoolingTemperatureControlModule"
void WaterCoolingTemperatureControlModule::initialize(config_t* cfg, //
ZITemperatureSensor** temperature_sensor, int32_t ntemperature, //
DRV8710** m_peltier_ctrl, int32_t m_peltier_ctrl_num, //
PWMSpeedCtrlModule** fan, int32_t nfan, //
PWMSpeedCtrlModule* pump //
) {
ZASSERT(ntemperature < 4);
m_n_temperature_sensor = ntemperature;
m_fanNum = nfan;
for (int32_t i = 0; i < ntemperature; i++) {
m_temperature_sensor[i] = temperature_sensor[i];
ZASSERT(m_temperature_sensor[i]);
void WaterCoolingTemperatureControlModule::initialize(int32_t id, config_t* cfg, hardwared_config_t* hardwaredconfig) {
#if 0
ZITemperatureSensor* temperature_sensor[4];
PWMSpeedCtrlModule* fanTable[4];
PWMSpeedCtrlModule* pump;
DRV8710* peltier_ctrl[2];
ZGPIO::OutputGpioCfg_t ext_input[10];
ZGPIO::InputGpioCfg_t ext_output[10];
#endif
for (int32_t i = 0; i < ZARRAY_SIZE(hardwaredconfig->temperature_sensor); i++) {
if (!hardwaredconfig->temperature_sensor[i]) break;
m_temperature_sensor[i] = hardwaredconfig->temperature_sensor[i];
m_n_temperature_sensor++;
}
for (int32_t i = 0; i < ZARRAY_SIZE(hardwaredconfig->fanTable); i++) {
if (!hardwaredconfig->fanTable[i]) break;
m_fanTable[i] = hardwaredconfig->fanTable[i];
m_fanNum++;
}
for (int32_t i = 0; i < nfan; i++) {
m_fanTable[i] = fan[i];
ZASSERT(m_fanTable[i]);
m_pump = hardwaredconfig->pump;
for (int32_t i = 0; i < ZARRAY_SIZE(hardwaredconfig->peltier_ctrl); i++) {
if (!hardwaredconfig->peltier_ctrl[i]) break;
m_peltier_ctrl[i] = hardwaredconfig->peltier_ctrl[i];
m_peltier_ctrl_num++;
}
for (int32_t i = 0; i < ZARRAY_SIZE(hardwaredconfig->ext_input); i++) {
if (hardwaredconfig->ext_input[i].pin == PinNull) break;
ZGPIO::InputGpioCfg_t* incfg = &hardwaredconfig->ext_input[i];
m_ext_input[i].initAsInput(incfg->pin, incfg->mode, incfg->irqtype, incfg->mirror);
m_n_ext_input++;
}
m_pump = pump;
for (int32_t i = 0; i < ZARRAY_SIZE(hardwaredconfig->ext_output); i++) {
if (hardwaredconfig->ext_output[i].pin == PinNull) break;
ZGPIO::OutputGpioCfg_t* outcfg = &hardwaredconfig->ext_output[i];
m_ext_output[i].initAsOutput(outcfg->pin, outcfg->mode, outcfg->mirror, outcfg->initLevel);
m_n_ext_output++;
}
m_pidmodule.initialize(&cfg->pid_cfg);
m_thread.init("WaterCoolingTemperatureControlModule");
ZLOGI(TAG, "WaterCoolingTemperatureControlModule initialized...");
}
int32_t WaterCoolingTemperatureControlModule::getid(int32_t* id) {
*id = m_id;
return 0;
}
void WaterCoolingTemperatureControlModule::createDefaultConfig(config_t* cfg) {
cfg->fanlevel = 90;
@ -58,23 +84,6 @@ void WaterCoolingTemperatureControlModule::createDefaultConfig(config_t* cfg) {
*param_value = modulereg / precision; \
break;
#if 0
kreg_pid_kp = REG_INDEX(3000, 0), // kp
kreg_pid_ki = REG_INDEX(3000, 1), // ki
kreg_pid_kd = REG_INDEX(3000, 2), // kd
kreg_pid_max_output = REG_INDEX(3000, 3), // 最大输出
kreg_pid_min_output = REG_INDEX(3000, 4), // 最小输出
kreg_pid_max_integral = REG_INDEX(3000, 5), // 最大积分
kreg_pid_min_integral = REG_INDEX(3000, 6), // 最小积分
kreg_error_limit = REG_INDEX(3000, 7), // 误差限制
kreg_compute_interval = REG_INDEX(3000, 8), // 计算间隔
kreg_pid_target = REG_INDEX(3050, 0), // 目标数值
kreg_pid_nowoutput = REG_INDEX(3050, 1), // 当前输出
kreg_pid_feedbackval = REG_INDEX(3050, 2), // 当前输出
#endif
int32_t WaterCoolingTemperatureControlModule::module_set_reg(int32_t param_id, int32_t param_value) {
switch (param_id) {
SET_REG(kreg_pid_kp, m_cfg.pid_cfg.kp, 0.01);
@ -271,3 +280,20 @@ float WaterCoolingTemperatureControlModule::getTemperatureSensorVal(int32_t inde
}
return m_temperature_sensor[index]->getTemperature();
}
int32_t WaterCoolingTemperatureControlModule::module_readio(int32_t* io) {
uint32_t iostate = 0;
for (int32_t i = 0; i < m_n_ext_input; i++) {
iostate |= m_ext_input[i].getStateUint32() << i;
}
*io = (int32_t)iostate;
return 0;
}
int32_t WaterCoolingTemperatureControlModule::module_writeio(int32_t idindex, int32_t io) {
if (idindex < 0 || idindex >= m_n_ext_output) {
return err::kparam_out_of_range;
}
m_ext_output[idindex].setState(io);
return 0;
}

27
components/water_cooling_temperature_control_module/water_cooling_temperature_control_module.hpp

@ -38,10 +38,26 @@ class WaterCoolingTemperatureControlModule : public ZIModule {
int32_t pidcompute_periodms;
} config_t;
typedef struct {
ZITemperatureSensor* temperature_sensor[4];
PWMSpeedCtrlModule* fanTable[4];
PWMSpeedCtrlModule* pump;
DRV8710* peltier_ctrl[2];
ZGPIO::InputGpioCfg_t ext_input[10];
ZGPIO::OutputGpioCfg_t ext_output[10];
} hardwared_config_t;
private:
config_t m_cfg;
int32_t m_id = 1;
ZGPIO m_ext_input[10];
int32_t m_n_ext_input = 0;
ZGPIO m_ext_output[10];
int32_t m_n_ext_output = 0;
// ζȴ«¸ÐÆ÷
ZITemperatureSensor* m_temperature_sensor[4] = {0};
int32_t m_n_temperature_sensor = 0;
@ -65,15 +81,11 @@ class WaterCoolingTemperatureControlModule : public ZIModule {
public:
WaterCoolingTemperatureControlModule(){};
virtual ~WaterCoolingTemperatureControlModule(){};
static void createDefaultConfig(config_t* cfg);
void initialize(config_t* cfg, //
ZITemperatureSensor** temperature_sensor, int32_t ntemperature, //
DRV8710** m_peltier_ctrl, int32_t m_peltier_ctrl_num, //
PWMSpeedCtrlModule** fan, int32_t nfan, //
PWMSpeedCtrlModule* pump //
);
void initialize(int32_t id, config_t* cfg, hardwared_config_t* hardwaredconfig);
virtual int32_t getid(int32_t* id) override;
@ -88,6 +100,9 @@ class WaterCoolingTemperatureControlModule : public ZIModule {
virtual int32_t module_start() override;
virtual int32_t module_break() override;
virtual int32_t module_readio(int32_t* io) override;
virtual int32_t module_writeio(int32_t idindex, int32_t io) override;
private:
void workloop();

Loading…
Cancel
Save