ems/ems_c/logic/logic_power_distr.h

80 lines
3.1 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*****************************************************************************
* @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