723 lines
27 KiB
C
723 lines
27 KiB
C
|
/*****************************************************************************
|
|||
|
* @copyright 2024-202, . POWER SUPPLY CO., LTD.
|
|||
|
* @file logic_tempCtrl.c
|
|||
|
* @brief xxxx
|
|||
|
* @author Gary
|
|||
|
* @date 2024/11/26
|
|||
|
* @remark 初修订
|
|||
|
*****************************************************************************/
|
|||
|
#include "logic_tempCtrl.h"
|
|||
|
|
|||
|
temp_judge_mod_e logicTempState[MAX_NUM_CABINT] = {0};
|
|||
|
logic_pthread_t stTemp = {0};
|
|||
|
|
|||
|
logicTempEquip tempEquipCall[kTemperature_ctrl_end] =
|
|||
|
{
|
|||
|
Logic_Temp_Select_AC,
|
|||
|
Logic_Temp_Select_LC,
|
|||
|
Logic_Temp_Select_AC_Auto,
|
|||
|
Logic_Temp_Select_LC_Auto
|
|||
|
};
|
|||
|
|
|||
|
logicTempExe tempFunCall[kTemperature_ctrl_end][kTemp_Judge_end] = {
|
|||
|
// kTemperature_ctrl_Ac
|
|||
|
{
|
|||
|
kAC_Normal_Callback,
|
|||
|
kAC_OverTemp_Callback,
|
|||
|
kAC_OverLock_Callback,
|
|||
|
kAC_UnderTemp_Callback,
|
|||
|
kAC_UnderLock_Callback,
|
|||
|
kAC_Close_Callback
|
|||
|
},
|
|||
|
// kTemperature_ctrl_Lc
|
|||
|
{
|
|||
|
kLC_Normal_Callback,
|
|||
|
kLC_OverTemp_Callback,
|
|||
|
kLC_OverLock_Callback,
|
|||
|
kLC_UnderTemp_Callback,
|
|||
|
kLC_UnderLock_Callback,
|
|||
|
kLC_Close_Callback
|
|||
|
},
|
|||
|
// kTemperature_auto_Ac
|
|||
|
{
|
|||
|
kAC_Auto_Callback,
|
|||
|
},
|
|||
|
// kTemperature_auto_Lc
|
|||
|
{
|
|||
|
kLC_Auto_Callback,
|
|||
|
}
|
|||
|
};
|
|||
|
|
|||
|
/*****************************************************************************
|
|||
|
* @brief 初始化温度控制参数
|
|||
|
* @return None
|
|||
|
*****************************************************************************/
|
|||
|
static void Logic_Temp_initParam(temp_ctrl_algorithm_t* sqlPara,temp_params_t *para)
|
|||
|
{
|
|||
|
for (u_int16_t i = 0; i < MAX_NUM_CABINT; i++)
|
|||
|
{
|
|||
|
logicTempState[i] = kTemp_Judge_Normal;
|
|||
|
}
|
|||
|
|
|||
|
para->mod = sqlPara->mod;
|
|||
|
para->workTemp.coolTrigTemp = sqlPara->workCoolTrigTemp;
|
|||
|
para->workTemp.coolHys = sqlPara->workCoolHys;
|
|||
|
para->workTemp.heatTrigTemp = sqlPara->workHeatTrigTemp;
|
|||
|
para->workTemp.heatHys = sqlPara->workHeatHys;
|
|||
|
|
|||
|
para->standByTemp.coolTrigTemp = sqlPara->standbyCoolTrigTemp;
|
|||
|
para->standByTemp.coolHys = sqlPara->standbyCoolHys;
|
|||
|
para->standByTemp.heatTrigTemp = sqlPara->standbyHeatTrigTemp;
|
|||
|
para->standByTemp.heatHys = sqlPara->standbyHeatHys;
|
|||
|
|
|||
|
para->standByLimit.maxlimit = sqlPara->standbyMaxLimit;
|
|||
|
para->standByLimit.minlimit = sqlPara->standbyMinLimit;
|
|||
|
para->standByLimit.maxbacklimit = sqlPara->standbyMaxbackLimit;
|
|||
|
para->standByLimit.minbacklimit = sqlPara->standbyMinbackLimit;
|
|||
|
|
|||
|
para->tempCmd_normal = sqlPara->tempCmdNormal;
|
|||
|
para->tempCmd_heat = sqlPara->tempCmdHeat;
|
|||
|
para->tempCmd_cold = sqlPara->tempCmdCold;
|
|||
|
para->tempCmdOpen = sqlPara->tempCmdOpen;
|
|||
|
para->tempCmdClose = sqlPara->tempCmdClose;
|
|||
|
}
|
|||
|
|
|||
|
/*****************************************************************************
|
|||
|
* @brief 收集温度控制参数
|
|||
|
* @param[in] para 指向温度参数结构体的指针,用于存储收集到的参数
|
|||
|
* @return None
|
|||
|
*****************************************************************************/
|
|||
|
void Logic_Temp_Collect(temp_params_t *para)
|
|||
|
{
|
|||
|
logic_getValue(e_Logic_nowBmsPower, para->pcsPower, Float32);
|
|||
|
logic_getValue(e_Logic_bsuMaxCellTemp, para->maxCellTemp, Float32);
|
|||
|
logic_getValue(e_Logic_bsuMinCellTemp, para->minCellTemp, Float32);
|
|||
|
|
|||
|
// para->pcsPower[0] = 6;
|
|||
|
|
|||
|
// printf("请输入最大单元温度: ");
|
|||
|
// scanf("%f", ¶->maxCellTemp[0]); // 输入最大单元温度
|
|||
|
|
|||
|
// printf("请输入最小单元温度: ");
|
|||
|
// scanf("%f", ¶->minCellTemp[0]); // 输入最小单元温度
|
|||
|
|
|||
|
// para->maxCellTemp[0] = 41;
|
|||
|
// para->minCellTemp[0] = 25;
|
|||
|
}
|
|||
|
|
|||
|
/*****************************************************************************
|
|||
|
* @brief 初始化温控设备
|
|||
|
* @return None
|
|||
|
*****************************************************************************/
|
|||
|
static void Logic_Temp_initEquip(temp_params_t *para)
|
|||
|
{
|
|||
|
// 创建一个临时副本,防止修改影响原始数据
|
|||
|
temp_params_t temppara = *para; // 进行浅拷贝,副本和原始数据不同
|
|||
|
Logic_Temp_Collect(&temppara); // 使用副本进行操作
|
|||
|
|
|||
|
for (u_int16_t i = 0; i < gStDevTypeNum[kDev_Type_AirCond_LiquidCool]; i++)
|
|||
|
{
|
|||
|
switch (temppara.mod)
|
|||
|
{
|
|||
|
default:
|
|||
|
break;
|
|||
|
|
|||
|
case kTemperature_ctrl_Ac:
|
|||
|
// 判断是否需要开机
|
|||
|
// if (para->maxCellTemp[i] - temppara.workTemp.coolTrigTemp > EPSILON
|
|||
|
// || temppara.workTemp.heatTrigTemp - para->minCellTemp[i] < EPSILON)
|
|||
|
// {
|
|||
|
// setRtdbPointValue(Rtdb_ShMem, kDev_Type_AirCond_LiquidCool, i, kAcLiquidMac_SetOnOff, temppara.tempCmdOpen);
|
|||
|
// }
|
|||
|
if (temppara.tempCmdClose == getRtdbPointValue(Rtdb_ShMem, kDev_Type_AirCond_LiquidCool, i, kAcLiquidMac_SetOnOff))
|
|||
|
{
|
|||
|
setRtdbPointValue(Rtdb_ShMem, kDev_Type_AirCond_LiquidCool, i, kAcLiquidMac_SetOnOff, temppara.tempCmdOpen);
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case kTemperature_ctrl_Lc:
|
|||
|
if (para->maxCellTemp[i] - temppara.standByLimit.maxlimit > EPSILON
|
|||
|
|| temppara.standByLimit.minlimit - para->minCellTemp[i] < EPSILON)
|
|||
|
{
|
|||
|
kLC_Normal_Callback((void *)&temppara , (void *)&i);
|
|||
|
setRtdbPointValue(Rtdb_ShMem, kDev_Type_AirCond_LiquidCool, i, kAcLiquidMac_Lc_RunTemp, TEMP_AC_TEMP);
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case kTemperature_auto_Ac:
|
|||
|
setRtdbPointValue(Rtdb_ShMem, kDev_Type_AirCond_LiquidCool, i, kAcLiquidMac_SetOnOff, temppara.tempCmdOpen);
|
|||
|
setRtdbPointValue(Rtdb_ShMem, kDev_Type_AirCond_LiquidCool, i, kAcLiquidMac_SetCoolTemp, temppara.workTemp.coolTrigTemp);
|
|||
|
setRtdbPointValue(Rtdb_ShMem, kDev_Type_AirCond_LiquidCool, i, kAcLiquidMac_SetHeatTemp, temppara.workTemp.heatTrigTemp);
|
|||
|
setRtdbPointValue(Rtdb_ShMem, kDev_Type_AirCond_LiquidCool, i, kAcLiquidMac_SetCoolDiff, temppara.workTemp.coolHys);
|
|||
|
// setRtdbPointValue(Rtdb_ShMem, kDev_Type_AirCond_LiquidCool, i, kAcLiquidMac_SetHeatDiff, temppara.workTemp.heatHys);
|
|||
|
break;
|
|||
|
|
|||
|
case kTemperature_auto_Lc:
|
|||
|
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/*****************************************************************************
|
|||
|
* @brief 选择当前温控设备状态
|
|||
|
* @param[in] para 指向温度参数结构体的指针,包含当前温度、功率等信息
|
|||
|
* @param[in] No 参数编号,用于选择特定的温度控制对象
|
|||
|
* @return 无返回值
|
|||
|
*
|
|||
|
* @note 该函数通过温度参数来判断当前设备是否处于过温、欠温或正常工作状态,
|
|||
|
* 并根据不同的温度值和功率值进行状态切换。
|
|||
|
*****************************************************************************/
|
|||
|
void Logic_Temp_Select_LC(temp_params_t *para, u_int16_t No)
|
|||
|
{
|
|||
|
// 检查参数编号是否合法
|
|||
|
if (No >= MAX_NUM_CABINT)
|
|||
|
{
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
temp_limit_t temp_limit;
|
|||
|
|
|||
|
// 错误数据
|
|||
|
if (fabs(para->maxCellTemp[No]) > 255.0f || fabs(para->minCellTemp[No]) > 255.0f)
|
|||
|
{
|
|||
|
logicTempState[No] = kTemp_Judge_Close;
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
// 没有电池温度,关机
|
|||
|
if (para->maxCellTemp[No] < EPSILON && para->minCellTemp[No] < EPSILON)
|
|||
|
{
|
|||
|
logicTempState[No] = kTemp_Judge_Close;
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
// 根据当前功率判断使用待机温度或工作温度
|
|||
|
if (abs(para->pcsPower[No]) < TEMP_WORKPOWER)
|
|||
|
{
|
|||
|
temp_limit = para->standByTemp; // 使用待机温度
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
temp_limit = para->workTemp; // 使用工作温度
|
|||
|
}
|
|||
|
|
|||
|
// 判断是否需要触发制冷或制热
|
|||
|
if (para->maxCellTemp[No] - temp_limit.coolTrigTemp > -EPSILON)
|
|||
|
{
|
|||
|
// 过温状态
|
|||
|
logicTempState[No] = kTemp_Judge_OverTemp;
|
|||
|
return;
|
|||
|
}
|
|||
|
else if (temp_limit.heatTrigTemp - para->minCellTemp[No] > -EPSILON)
|
|||
|
{
|
|||
|
// 欠温状态
|
|||
|
logicTempState[No] = kTemp_Judge_UnderTemp;
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
// 根据当前温度状态进行判断和状态转换
|
|||
|
switch (logicTempState[No])
|
|||
|
{
|
|||
|
// 过温判断
|
|||
|
case kTemp_Judge_OverTemp:
|
|||
|
case kTemp_Judge_OverLock:
|
|||
|
if (temp_limit.coolTrigTemp - temp_limit.coolHys - para->maxCellTemp[No] > -EPSILON)
|
|||
|
{
|
|||
|
// 恢复正常状态
|
|||
|
logicTempState[No] = kTemp_Judge_Normal;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
// 保持过温锁定状态
|
|||
|
logicTempState[No] = kTemp_Judge_OverLock;
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
// 欠温判断
|
|||
|
case kTemp_Judge_UnderTemp:
|
|||
|
case kTemp_Judge_UnderLock:
|
|||
|
if (temp_limit.heatTrigTemp + temp_limit.heatHys - para->minCellTemp[No] < EPSILON)
|
|||
|
{
|
|||
|
// 恢复正常状态
|
|||
|
logicTempState[No] = kTemp_Judge_Normal;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
// 保持欠温锁定状态
|
|||
|
logicTempState[No] = kTemp_Judge_UnderLock;
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
// 正常循环状态
|
|||
|
case kTemp_Judge_Normal:
|
|||
|
if (abs(para->pcsPower[No]) < TEMP_WORKPOWER)
|
|||
|
{
|
|||
|
// 检查是否符合待机关闭条件
|
|||
|
if (para->maxCellTemp[No] - (para->standByLimit.maxlimit - para->standByLimit.maxbacklimit) <= EPSILON
|
|||
|
&& para->standByLimit.minlimit + para->standByLimit.minbacklimit - para->minCellTemp[No] <= EPSILON)
|
|||
|
{
|
|||
|
logicTempState[No] = kTemp_Judge_Close; // 进入关闭状态
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
// 关机状态
|
|||
|
case kTemp_Judge_Close:
|
|||
|
if (abs(para->pcsPower[No]) < TEMP_WORKPOWER)
|
|||
|
{
|
|||
|
// 检查是否符合恢复正常条件
|
|||
|
if (para->maxCellTemp[No] - para->standByLimit.maxlimit > -EPSILON
|
|||
|
|| para->standByLimit.minlimit - para->minCellTemp[No] > -EPSILON)
|
|||
|
{
|
|||
|
logicTempState[No] = kTemp_Judge_Normal; // 恢复正常状态
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
// 其他状态,保持原有状态
|
|||
|
default:
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/*****************************************************************************
|
|||
|
* @brief 选择当前温控设备状态
|
|||
|
* @param[in] para 指向温度参数结构体的指针,包含当前温度、功率等信息
|
|||
|
* @param[in] No 参数编号,用于选择特定的温度控制对象
|
|||
|
* @return 无返回值
|
|||
|
*
|
|||
|
* @note 该函数通过温度参数来判断当前设备是否处于过温、欠温或正常工作状态,
|
|||
|
* 并根据不同的温度值和功率值进行状态切换。
|
|||
|
*****************************************************************************/
|
|||
|
void Logic_Temp_Select_AC(temp_params_t *para, u_int16_t No)
|
|||
|
{
|
|||
|
// 检查参数编号是否合法
|
|||
|
if (No >= MAX_NUM_CABINT)
|
|||
|
{
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
temp_limit_t temp_limit;
|
|||
|
|
|||
|
temp_limit = para->workTemp; // 使用工作温度
|
|||
|
|
|||
|
// 错误数据
|
|||
|
if (fabs(para->maxCellTemp[No]) > 255.0f || fabs(para->minCellTemp[No]) > 255.0f)
|
|||
|
{
|
|||
|
logicTempState[No] = kTemp_Judge_Close;
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
// 没有电池温度,关机
|
|||
|
if (para->maxCellTemp[No] < EPSILON && para->minCellTemp[No] < EPSILON)
|
|||
|
{
|
|||
|
logicTempState[No] = kTemp_Judge_Close;
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
// 判断是否需要触发制冷或制热
|
|||
|
if (para->maxCellTemp[No] - temp_limit.coolTrigTemp > EPSILON)
|
|||
|
{
|
|||
|
// 过温状态
|
|||
|
logicTempState[No] = kTemp_Judge_OverTemp;
|
|||
|
return;
|
|||
|
}
|
|||
|
else if (temp_limit.heatTrigTemp - para->minCellTemp[No] > EPSILON)
|
|||
|
{
|
|||
|
// 欠温状态
|
|||
|
logicTempState[No] = kTemp_Judge_UnderTemp;
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
// 根据当前温度状态进行判断和状态转换
|
|||
|
switch (logicTempState[No])
|
|||
|
{
|
|||
|
// 过温判断
|
|||
|
case kTemp_Judge_OverTemp:
|
|||
|
case kTemp_Judge_OverLock:
|
|||
|
if (temp_limit.coolTrigTemp - temp_limit.coolHys - para->maxCellTemp[No] > EPSILON)
|
|||
|
{
|
|||
|
// 恢复正常状态
|
|||
|
logicTempState[No] = kTemp_Judge_Normal;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
// 保持过温锁定状态
|
|||
|
logicTempState[No] = kTemp_Judge_OverLock;
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
// 欠温判断
|
|||
|
case kTemp_Judge_UnderTemp:
|
|||
|
case kTemp_Judge_UnderLock:
|
|||
|
if (temp_limit.heatTrigTemp + temp_limit.heatHys - para->minCellTemp[No] < EPSILON)
|
|||
|
{
|
|||
|
// 恢复正常状态
|
|||
|
logicTempState[No] = kTemp_Judge_Normal;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
// 保持欠温锁定状态
|
|||
|
logicTempState[No] = kTemp_Judge_UnderLock;
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
// 其他状态,保持原有状态
|
|||
|
default:
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
void Logic_Temp_Select_AC_Auto(temp_params_t *para, u_int16_t No)
|
|||
|
{
|
|||
|
;
|
|||
|
}
|
|||
|
|
|||
|
void Logic_Temp_Select_LC_Auto(temp_params_t *para, u_int16_t No)
|
|||
|
{
|
|||
|
;
|
|||
|
}
|
|||
|
|
|||
|
/*****************************************************************************
|
|||
|
* @brief 创建温度控制线程
|
|||
|
* @param[in] 无
|
|||
|
* @return 无
|
|||
|
*****************************************************************************/
|
|||
|
void *creatLogicTempThread(void *arg)
|
|||
|
{
|
|||
|
temp_params_t *temp_params_in = (temp_params_t *)arg;
|
|||
|
|
|||
|
while (stTemp.exitTaskFlag == 0)
|
|||
|
{
|
|||
|
// 读取更新信号
|
|||
|
// if(1 == readWebSign(kSign_ShMem, kSign_TempCtrl))
|
|||
|
// {
|
|||
|
// writeWebSign(kSign_ShMem, kSign_TempCtrl, 0);
|
|||
|
|
|||
|
// temp_ctrl_algorithm_t temp_infoFromDB;
|
|||
|
// int ret = kit_get_temp_ctrl_algorithm(&temp_infoFromDB);
|
|||
|
// if (ret != 0) // 判断是否成功
|
|||
|
// {
|
|||
|
// KITLOG(LOG_KIT_EN, ERROR_EN, "读取温控配置失败");
|
|||
|
// stTemp.exitTaskFlag = 1;
|
|||
|
// continue;
|
|||
|
// }
|
|||
|
// Logic_Temp_initParam(&temp_infoFromDB, temp_params_in);
|
|||
|
// }
|
|||
|
|
|||
|
Logic_Temp_Collect(temp_params_in);
|
|||
|
for(u_int16_t i = 0;i < gStDevTypeNum[kDev_Type_AirCond_LiquidCool]; i++)
|
|||
|
{
|
|||
|
tempEquipCall[temp_params_in->mod](temp_params_in, i);
|
|||
|
tempFunCall[temp_params_in->mod][logicTempState[i]](temp_params_in, &i);
|
|||
|
}
|
|||
|
|
|||
|
usleep(1000000); // 1s sleep
|
|||
|
}
|
|||
|
free(temp_params_in); // 线程结束后释放内存
|
|||
|
|
|||
|
pthread_exit(NULL);
|
|||
|
}
|
|||
|
|
|||
|
/*********************************************************************
|
|||
|
* @brief 新建温控的初始化工作
|
|||
|
* @param[in] 无
|
|||
|
* @return 0:sucessful;1:fault
|
|||
|
*********************************************************************/
|
|||
|
int creatLogicTempCtrlEntry()
|
|||
|
{
|
|||
|
if(0 == gStDevTypeNum[kDev_Type_AirCond_LiquidCool])
|
|||
|
{
|
|||
|
return 1;
|
|||
|
}
|
|||
|
|
|||
|
temp_ctrl_algorithm_t temp_infoFromDB;
|
|||
|
temp_params_t *tempPara = (temp_params_t *)malloc(sizeof(temp_params_t));
|
|||
|
|
|||
|
if (tempPara == NULL) // 检查内存分配是否成功
|
|||
|
{
|
|||
|
KITLOG(LOG_KIT_EN, ERROR_EN, "内存分配失败");
|
|||
|
return 1;
|
|||
|
}
|
|||
|
|
|||
|
int ret = kit_get_temp_ctrl_algorithm(&temp_infoFromDB);
|
|||
|
if (ret != 0) // 判断是否成功
|
|||
|
{
|
|||
|
free(tempPara);
|
|||
|
return 1;
|
|||
|
}
|
|||
|
|
|||
|
Logic_Temp_initParam(&temp_infoFromDB, tempPara);
|
|||
|
|
|||
|
Logic_Temp_initEquip(tempPara);
|
|||
|
|
|||
|
if (pthread_create(&stTemp.tfd, NULL, creatLogicTempThread, (void *)tempPara) != 0)
|
|||
|
{
|
|||
|
KITPTF(LOG_LOGIC_EN, ERROR_EN, "temp线程创建失败");
|
|||
|
KITLOG(LOG_LOGIC_EN, ERROR_EN, "temp线程创建失败");
|
|||
|
free(tempPara);
|
|||
|
return 1;
|
|||
|
}
|
|||
|
KITPTF(LOG_LOGIC_EN, INFO_EN, "temp线程创建成功");
|
|||
|
KITLOG(LOG_LOGIC_EN, INFO_EN, "temp线程创建成功");
|
|||
|
|
|||
|
return 0;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/*****************************************************************************
|
|||
|
* @brief 过温回调
|
|||
|
* @param[in] para 指向温度参数结构体的指针,用于存储收集到的参数
|
|||
|
* @param[in] No 序号
|
|||
|
* @return None
|
|||
|
*****************************************************************************/
|
|||
|
void kLC_OverTemp_Callback(void *arg, void *no)
|
|||
|
{
|
|||
|
uint16_t i = *(uint16_t *)no;
|
|||
|
temp_params_t *temp_params_in = (temp_params_t *)arg;
|
|||
|
if (temp_params_in->tempCmdClose == getRtdbPointValue(Rtdb_ShMem, kDev_Type_AirCond_LiquidCool, i, kAcLiquidMac_Lc_Switch))
|
|||
|
{
|
|||
|
setRtdbPointValue(Rtdb_ShMem, kDev_Type_AirCond_LiquidCool, i, kAcLiquidMac_Lc_Switch, temp_params_in->tempCmdOpen);
|
|||
|
}
|
|||
|
if (temp_params_in->tempCmd_cold != getRtdbPointValue(Rtdb_ShMem, kDev_Type_AirCond_LiquidCool, i, kAcLiquidMac_Lc_RunMode))
|
|||
|
{
|
|||
|
setRtdbPointValue(Rtdb_ShMem, kDev_Type_AirCond_LiquidCool, i, kAcLiquidMac_Lc_RunMode, temp_params_in->tempCmd_cold);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/*****************************************************************************
|
|||
|
* @brief 过温自锁回调
|
|||
|
* @param[in] para 指向温度参数结构体的指针,用于存储收集到的参数
|
|||
|
* @param[in] No 序号
|
|||
|
* @return None
|
|||
|
*****************************************************************************/
|
|||
|
void kLC_OverLock_Callback(void *arg, void *no)
|
|||
|
{
|
|||
|
uint16_t i = *(uint16_t *)no;
|
|||
|
temp_params_t *temp_params_in = (temp_params_t *)arg;
|
|||
|
if (temp_params_in->tempCmdClose == getRtdbPointValue(Rtdb_ShMem, kDev_Type_AirCond_LiquidCool, i, kAcLiquidMac_Lc_Switch))
|
|||
|
{
|
|||
|
setRtdbPointValue(Rtdb_ShMem, kDev_Type_AirCond_LiquidCool, i, kAcLiquidMac_Lc_Switch, temp_params_in->tempCmdOpen);
|
|||
|
}
|
|||
|
if (temp_params_in->tempCmd_cold != getRtdbPointValue(Rtdb_ShMem, kDev_Type_AirCond_LiquidCool, i, kAcLiquidMac_Lc_RunMode))
|
|||
|
{
|
|||
|
setRtdbPointValue(Rtdb_ShMem, kDev_Type_AirCond_LiquidCool, i, kAcLiquidMac_Lc_RunMode, temp_params_in->tempCmd_cold);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/*****************************************************************************
|
|||
|
* @brief 自循环回调
|
|||
|
* @param[in] para 指向温度参数结构体的指针,用于存储收集到的参数
|
|||
|
* @param[in] No 序号
|
|||
|
* @return None
|
|||
|
*****************************************************************************/
|
|||
|
void kLC_Normal_Callback(void *arg, void *no)
|
|||
|
{
|
|||
|
uint16_t i = *(uint16_t *)no;
|
|||
|
temp_params_t *temp_params_in = (temp_params_t *)arg;
|
|||
|
if (temp_params_in->tempCmdClose == getRtdbPointValue(Rtdb_ShMem, kDev_Type_AirCond_LiquidCool, i, kAcLiquidMac_Lc_Switch))
|
|||
|
{
|
|||
|
setRtdbPointValue(Rtdb_ShMem, kDev_Type_AirCond_LiquidCool, i, kAcLiquidMac_Lc_Switch, temp_params_in->tempCmdOpen);
|
|||
|
}
|
|||
|
if (temp_params_in->tempCmd_normal != getRtdbPointValue(Rtdb_ShMem, kDev_Type_AirCond_LiquidCool, i, kAcLiquidMac_Lc_RunMode))
|
|||
|
{
|
|||
|
setRtdbPointValue(Rtdb_ShMem, kDev_Type_AirCond_LiquidCool, i, kAcLiquidMac_Lc_RunMode, temp_params_in->tempCmd_normal);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/*****************************************************************************
|
|||
|
* @brief 欠温回调
|
|||
|
* @param[in] para 指向温度参数结构体的指针,用于存储收集到的参数
|
|||
|
* @param[in] No 序号
|
|||
|
* @return None
|
|||
|
*****************************************************************************/
|
|||
|
void kLC_UnderTemp_Callback(void *arg, void *no)
|
|||
|
{
|
|||
|
uint16_t i = *(uint16_t *)no;
|
|||
|
temp_params_t *temp_params_in = (temp_params_t *)arg;
|
|||
|
if (temp_params_in->tempCmdClose == getRtdbPointValue(Rtdb_ShMem, kDev_Type_AirCond_LiquidCool, i, kAcLiquidMac_Lc_Switch))
|
|||
|
{
|
|||
|
setRtdbPointValue(Rtdb_ShMem, kDev_Type_AirCond_LiquidCool, i, kAcLiquidMac_Lc_Switch, temp_params_in->tempCmdOpen);
|
|||
|
}
|
|||
|
if (temp_params_in->tempCmd_heat != getRtdbPointValue(Rtdb_ShMem, kDev_Type_AirCond_LiquidCool, i, kAcLiquidMac_Lc_RunMode))
|
|||
|
{
|
|||
|
setRtdbPointValue(Rtdb_ShMem, kDev_Type_AirCond_LiquidCool, i, kAcLiquidMac_Lc_RunMode, temp_params_in->tempCmd_heat);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/*****************************************************************************
|
|||
|
* @brief 欠温自锁回调
|
|||
|
* @param[in] para 指向温度参数结构体的指针,用于存储收集到的参数
|
|||
|
* @param[in] No 序号
|
|||
|
* @return None
|
|||
|
*****************************************************************************/
|
|||
|
void kLC_UnderLock_Callback(void *arg, void *no)
|
|||
|
{
|
|||
|
uint16_t i = *(uint16_t *)no;
|
|||
|
temp_params_t *temp_params_in = (temp_params_t *)arg;
|
|||
|
if (temp_params_in->tempCmdClose == getRtdbPointValue(Rtdb_ShMem, kDev_Type_AirCond_LiquidCool, i, kAcLiquidMac_Lc_Switch))
|
|||
|
{
|
|||
|
setRtdbPointValue(Rtdb_ShMem, kDev_Type_AirCond_LiquidCool, i, kAcLiquidMac_Lc_Switch, temp_params_in->tempCmdOpen);
|
|||
|
}
|
|||
|
if (temp_params_in->tempCmd_heat != getRtdbPointValue(Rtdb_ShMem, kDev_Type_AirCond_LiquidCool, i, kAcLiquidMac_Lc_RunMode))
|
|||
|
{
|
|||
|
setRtdbPointValue(Rtdb_ShMem, kDev_Type_AirCond_LiquidCool, i, kAcLiquidMac_Lc_RunMode, temp_params_in->tempCmd_heat);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/*****************************************************************************
|
|||
|
* @brief 关机回调
|
|||
|
* @param[in] para 指向温度参数结构体的指针,用于存储收集到的参数
|
|||
|
* @param[in] No 序号
|
|||
|
* @return None
|
|||
|
*****************************************************************************/
|
|||
|
void kLC_Close_Callback(void *arg, void *no)
|
|||
|
{
|
|||
|
uint16_t i = *(uint16_t *)no;
|
|||
|
temp_params_t *temp_params_in = (temp_params_t *)arg;
|
|||
|
if (temp_params_in->tempCmdOpen == getRtdbPointValue(Rtdb_ShMem, kDev_Type_AirCond_LiquidCool, i, kAcLiquidMac_Lc_Switch))
|
|||
|
{
|
|||
|
setRtdbPointValue(Rtdb_ShMem, kDev_Type_AirCond_LiquidCool, i, kAcLiquidMac_Lc_Switch, temp_params_in->tempCmdClose);
|
|||
|
}
|
|||
|
if (temp_params_in->tempCmd_normal != getRtdbPointValue(Rtdb_ShMem, kDev_Type_AirCond_LiquidCool, i, kAcLiquidMac_Lc_RunMode))
|
|||
|
{
|
|||
|
setRtdbPointValue(Rtdb_ShMem, kDev_Type_AirCond_LiquidCool, i, kAcLiquidMac_Lc_RunMode, temp_params_in->tempCmd_normal);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/*****************************************************************************
|
|||
|
* @brief 过温回调
|
|||
|
* @param[in] para 指向温度参数结构体的指针,用于存储收集到的参数
|
|||
|
* @param[in] No 序号
|
|||
|
* @return None
|
|||
|
*****************************************************************************/
|
|||
|
void kAC_OverTemp_Callback(void *arg, void *no)
|
|||
|
{
|
|||
|
uint16_t i = *(uint16_t *)no;
|
|||
|
temp_params_t *temp_params_in = (temp_params_t *)arg;
|
|||
|
if (temp_params_in->tempCmdClose == getRtdbPointValue(Rtdb_ShMem, kDev_Type_AirCond_LiquidCool, i, kAcLiquidMac_SetOnOff))
|
|||
|
{
|
|||
|
setRtdbPointValue(Rtdb_ShMem, kDev_Type_AirCond_LiquidCool, i, kAcLiquidMac_SetOnOff, temp_params_in->tempCmdOpen);
|
|||
|
}
|
|||
|
if (temp_params_in->tempCmd_cold != getRtdbPointValue(Rtdb_ShMem, kDev_Type_AirCond_LiquidCool, i, kAcLiquidMac_SetCoolTemp))
|
|||
|
{
|
|||
|
setRtdbPointValue(Rtdb_ShMem, kDev_Type_AirCond_LiquidCool, i, kAcLiquidMac_SetCoolTemp, TEMP_AC_TEMP);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/*****************************************************************************
|
|||
|
* @brief 过温自锁回调
|
|||
|
* @param[in] para 指向温度参数结构体的指针,用于存储收集到的参数
|
|||
|
* @param[in] No 序号
|
|||
|
* @return None
|
|||
|
*****************************************************************************/
|
|||
|
void kAC_OverLock_Callback(void *arg, void *no)
|
|||
|
{
|
|||
|
uint16_t i = *(uint16_t *)no;
|
|||
|
temp_params_t *temp_params_in = (temp_params_t *)arg;
|
|||
|
if (temp_params_in->tempCmdClose == getRtdbPointValue(Rtdb_ShMem, kDev_Type_AirCond_LiquidCool, i, kAcLiquidMac_SetOnOff))
|
|||
|
{
|
|||
|
setRtdbPointValue(Rtdb_ShMem, kDev_Type_AirCond_LiquidCool, i, kAcLiquidMac_SetOnOff, temp_params_in->tempCmdOpen);
|
|||
|
}
|
|||
|
if (temp_params_in->tempCmd_cold != getRtdbPointValue(Rtdb_ShMem, kDev_Type_AirCond_LiquidCool, i, kAcLiquidMac_SetCoolTemp))
|
|||
|
{
|
|||
|
setRtdbPointValue(Rtdb_ShMem, kDev_Type_AirCond_LiquidCool, i, kAcLiquidMac_SetCoolTemp, TEMP_AC_TEMP);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/*****************************************************************************
|
|||
|
* @brief 自循环回调
|
|||
|
* @param[in] para 指向温度参数结构体的指针,用于存储收集到的参数
|
|||
|
* @param[in] No 序号
|
|||
|
* @return None
|
|||
|
*****************************************************************************/
|
|||
|
void kAC_Normal_Callback(void *arg, void *no)
|
|||
|
{
|
|||
|
uint16_t i = *(uint16_t *)no;
|
|||
|
temp_params_t *temp_params_in = (temp_params_t *)arg;
|
|||
|
if (temp_params_in->tempCmdOpen == getRtdbPointValue(Rtdb_ShMem, kDev_Type_AirCond_LiquidCool, i, kAcLiquidMac_SetOnOff))
|
|||
|
{
|
|||
|
setRtdbPointValue(Rtdb_ShMem, kDev_Type_AirCond_LiquidCool, i, kAcLiquidMac_SetOnOff, temp_params_in->tempCmdClose);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/*****************************************************************************
|
|||
|
* @brief 欠温回调
|
|||
|
* @param[in] para 指向温度参数结构体的指针,用于存储收集到的参数
|
|||
|
* @param[in] No 序号
|
|||
|
* @return None
|
|||
|
*****************************************************************************/
|
|||
|
void kAC_UnderTemp_Callback(void *arg, void *no)
|
|||
|
{
|
|||
|
uint16_t i = *(uint16_t *)no;
|
|||
|
temp_params_t *temp_params_in = (temp_params_t *)arg;
|
|||
|
if (temp_params_in->tempCmdClose == getRtdbPointValue(Rtdb_ShMem, kDev_Type_AirCond_LiquidCool, i, kAcLiquidMac_SetOnOff))
|
|||
|
{
|
|||
|
setRtdbPointValue(Rtdb_ShMem, kDev_Type_AirCond_LiquidCool, i, kAcLiquidMac_SetOnOff, temp_params_in->tempCmdOpen);
|
|||
|
}
|
|||
|
if (temp_params_in->tempCmd_heat != getRtdbPointValue(Rtdb_ShMem, kDev_Type_AirCond_LiquidCool, i, kAcLiquidMac_SetHeatTemp))
|
|||
|
{
|
|||
|
setRtdbPointValue(Rtdb_ShMem, kDev_Type_AirCond_LiquidCool, i, kAcLiquidMac_SetHeatTemp, temp_params_in->tempCmd_heat);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/*****************************************************************************
|
|||
|
* @brief 欠温自锁回调
|
|||
|
* @param[in] para 指向温度参数结构体的指针,用于存储收集到的参数
|
|||
|
* @param[in] No 序号
|
|||
|
* @return None
|
|||
|
*****************************************************************************/
|
|||
|
void kAC_UnderLock_Callback(void *arg, void *no)
|
|||
|
{
|
|||
|
uint16_t i = *(uint16_t *)no;
|
|||
|
temp_params_t *temp_params_in = (temp_params_t *)arg;
|
|||
|
if (temp_params_in->tempCmdClose == getRtdbPointValue(Rtdb_ShMem, kDev_Type_AirCond_LiquidCool, i, kAcLiquidMac_SetOnOff))
|
|||
|
{
|
|||
|
setRtdbPointValue(Rtdb_ShMem, kDev_Type_AirCond_LiquidCool, i, kAcLiquidMac_SetOnOff, temp_params_in->tempCmdOpen);
|
|||
|
}
|
|||
|
if (temp_params_in->tempCmd_heat != getRtdbPointValue(Rtdb_ShMem, kDev_Type_AirCond_LiquidCool, i, kAcLiquidMac_SetHeatTemp))
|
|||
|
{
|
|||
|
setRtdbPointValue(Rtdb_ShMem, kDev_Type_AirCond_LiquidCool, i, kAcLiquidMac_SetHeatTemp, temp_params_in->tempCmd_heat);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/*****************************************************************************
|
|||
|
* @brief 关机回调
|
|||
|
* @param[in] para 指向温度参数结构体的指针,用于存储收集到的参数
|
|||
|
* @param[in] No 序号
|
|||
|
* @return None
|
|||
|
*****************************************************************************/
|
|||
|
void kAC_Close_Callback(void *arg, void *no)
|
|||
|
{
|
|||
|
uint16_t i = *(uint16_t *)no;
|
|||
|
temp_params_t *temp_params_in = (temp_params_t *)arg;
|
|||
|
if (temp_params_in->tempCmdOpen == getRtdbPointValue(Rtdb_ShMem, kDev_Type_AirCond_LiquidCool, i, kAcLiquidMac_SetOnOff))
|
|||
|
{
|
|||
|
setRtdbPointValue(Rtdb_ShMem, kDev_Type_AirCond_LiquidCool, i, kAcLiquidMac_SetOnOff, temp_params_in->tempCmdClose);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/*****************************************************************************
|
|||
|
* @brief 空调自动模式回调
|
|||
|
* @param[in] para 指向温度参数结构体的指针,用于存储收集到的参数
|
|||
|
* @param[in] No 序号
|
|||
|
* @return None
|
|||
|
*****************************************************************************/
|
|||
|
void kAC_Auto_Callback(void *arg, void *no)
|
|||
|
{
|
|||
|
;
|
|||
|
}
|
|||
|
|
|||
|
/*****************************************************************************
|
|||
|
* @brief 液冷自动模式回调
|
|||
|
* @param[in] para 指向温度参数结构体的指针,用于存储收集到的参数
|
|||
|
* @param[in] No 序号
|
|||
|
* @return None
|
|||
|
*****************************************************************************/
|
|||
|
void kLC_Auto_Callback(void *arg, void *no)
|
|||
|
{
|
|||
|
;
|
|||
|
}
|