ems/ems_c/logic/logic_tempCtrl.h

106 lines
3.6 KiB
C

/*****************************************************************************
* @copyright 2024-202, . POWER SUPPLY CO., LTD.
* @file logic_tempCtrl.h
* @brief xxxx
* @author Gary
* @date 2024/09/21
* @remark 初修订
*****************************************************************************/
#ifndef __LOGIC_TEMPCTRL_H__
#define __LOGIC_TEMPCTRL_H__
#include "logic_comm.h"
#define TEMP_WORKPOWER 2
#define TEMP_AC_TEMP 25
// 温控模式
// typedef enum
// {
// kTemp_ctrl_Start, // 无
// kTemp_ctrl_Ac = kTemp_ctrl_Start, // 风冷模式
// kTemp_ctrl_Lc, // 液冷模式
// kTemp_ctrl_end
// } temp_ctrl_mod_e;
typedef enum
{
kTemp_Judge_Start, // 无
kTemp_Judge_Normal = kTemp_Judge_Start, // 正常温度(自循环)
kTemp_Judge_OverTemp, // 高温
kTemp_Judge_OverLock, // 高温自锁
kTemp_Judge_UnderTemp, // 低温
kTemp_Judge_UnderLock, // 低温自锁
kTemp_Judge_Close, // 关机
kTemp_Judge_end
} temp_judge_mod_e;
typedef struct
{
float_t coolTrigTemp; // 制冷触发温度
float_t coolHys; // 制冷回差
float_t heatTrigTemp; // 制热触发温度
float_t heatHys; // 制热回差
}temp_limit_t; // 温度控制参数
typedef struct
{
float_t maxlimit; //开启自循环高温
float_t minlimit; //开启自循环低温
float_t maxbacklimit; //自循环高温回温
float_t minbacklimit; //自循环低温回温
}temp_standby_limit_t; // 温度控制参数
typedef struct
{
/*用户可配参数*/
temperature_ctrl_mod_e mod;
temp_limit_t workTemp; // 工作温度
temp_limit_t standByTemp; // 静置温度(液冷)
temp_standby_limit_t standByLimit; // 静置自循环温度限制(液冷)
u_int16_t tempCmd_normal; //循环控制字
u_int16_t tempCmd_heat; //制热控制字
u_int16_t tempCmd_cold; //制冷控制字
uint8_t tempCmdOpen; // 开控制字
uint8_t tempCmdClose; // 关控制字
/*中间变量*/
float_t pcsPower[MAX_NUM_CABINT]; // kPcs_TotalActivePwr 总有功功率
float_t maxCellTemp[MAX_NUM_CABINT]; // kBsu_MaxCellTemp 单体最高温度
float_t minCellTemp[MAX_NUM_CABINT]; // kBsu_MinCellTemp 单体最低温度
} temp_params_t; // 温度控制参数
extern temp_judge_mod_e logicTempState[MAX_NUM_CABINT];
void Logic_Temp_Select_LC(temp_params_t *para, u_int16_t No);
void Logic_Temp_Select_AC(temp_params_t *para, u_int16_t No);
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);
void kLC_OverTemp_Callback(void *arg, void *no);
void kLC_OverLock_Callback(void *arg, void *no);
void kLC_Normal_Callback(void *arg, void *no);
void kLC_UnderTemp_Callback(void *arg, void *no);
void kLC_UnderLock_Callback(void *arg, void *no);
void kLC_Close_Callback(void *arg, void *no);
void kAC_OverTemp_Callback(void *arg, void *no);
void kAC_OverLock_Callback(void *arg, void *no);
void kAC_Normal_Callback(void *arg, void *no);
void kAC_UnderTemp_Callback(void *arg, void *no);
void kAC_UnderLock_Callback(void *arg, void *no);
void kAC_Close_Callback(void *arg, void *no);
void kAC_Auto_Callback(void *arg, void *no);
void kLC_Auto_Callback(void *arg, void *no);
typedef void (*logicTempEquip)(temp_params_t *para, u_int16_t No);
typedef void (*logicTempExe)(void * , void *);
#endif