forked from gary/ems
2
0
Fork 0
sun_ems/ems_c/logic/logic_power_distr.h

80 lines
3.1 KiB
C
Raw Normal View History

2025-05-13 17:49:49 +08:00
/*****************************************************************************
* @copyright 2024-202, . POWER SUPPLY CO., LTD.
* @file logic_power_issue.h
* @brief xxxx
* @author Gary
* @date 2024/09/28
* @remark
*****************************************************************************/
#ifndef __LOGIC_POWERISSUE_H__
#define __LOGIC_POWERISSUE_H__
#define MAX_NUM_CABINT 3 // 默认最大柜体个数为3RTDB预留
#define SOCMAX 100
extern int g_iPcsChargeDirection; // PCS充放电方向 1(正放 负充) -1负放 正充) 默认1
typedef enum
{
kBms_State_Start = 0,
kBms_State_Normal, // 正常rack可以放电, 可以充电)
kBms_State_NoCharge, // 禁充rack可以放电, 不能充电)
kBms_State_NoDischarge, // 禁放rack可以充电, 不能放电)
kBms_State_Down, // 停机rack不能充放
kBms_state_end
} bms_state_e;
// // 充放电模式
// typedef enum
// {
// kCharge_Mode_Start = 0, // 开始值
// kCharge_Mode_charge ,
// kCharge_Mode_discharge,
// kCharge_Mode_rest,
// kCharge_Mode_End // 结束值
// } charge_mode_e;
typedef struct
{
// charge_mode_e issueMod; // 本次下发充放电模式 ps模式暂时不用 充放电方向: 默认1(正放 负充)
// bms_state_e rackRunState[MAX_NUM_CABINT]; // 实时每个柜子的BMS的状态 IN
// 从实时库获取
float_t bmsSoc[MAX_NUM_CABINT]; // 实时每个柜子的BMS的SOC IN
float_t pcsMaxChaPower[MAX_NUM_CABINT]; // 最大充电功率 kw IN
float_t pcsMaxDiscPower[MAX_NUM_CABINT]; // 最大放电功率 kw IN
float_t nowBmsPower[MAX_NUM_CABINT]; // bms当前实时功率 kw IN
uint8_t pcsState[MAX_NUM_CABINT]; // pcs在线状态
uint8_t bmsState[MAX_NUM_CABINT]; // bms在线状态
// 可配置参数
uint16_t cabintCont; // 当前实际并柜数量 IN
int chgDirection; // 充放电方向 1(正放 负充) -1(正充 负放)
uint8_t allocateMode; // 下发功率开关总功率0分相功率1
uint16_t pcsOn; // PCS开机字 功能码可定制
uint16_t pcsOff; // PCS关机字 功能码可定制
int runPeriod; // 运行周期 ms
uint8_t powerSign; // 功率分配配置修改标志
// 中间参数
float_t stationBmsSoc; // 站级SOC OUT
float_t sumSoc; // SOC累加
float_t power; // 总的目标功率 kw IN
float_t nowDistPower[MAX_NUM_CABINT]; // 分配后下发的目标功率 kw OUT
uint16_t pcsSwitch[MAX_NUM_CABINT]; // PCS开关
} power_distr_t;
/*****************************************************************************
* @brief
*
* @return 0 -1 1
*****************************************************************************/
int logic_getPowerDistrParam();
// 功率分发接口
void logicFun_powerDistr();
#endif