/* * 电容模组 */ /* Includes ----------------------------------------------------------------- */ #include "cap.h" #include "component/capacity.h" #include "component/limiter.h" #include "device/referee.h" /* Private typedef ---------------------------------------------------------- */ /* Private define ----------------------------------------------------------- */ #define CAP_CUTOFF_VOLT 12.0f /* Private macro ------------------------------------------------------------ */ /* Private variables -------------------------------------------------------- */ /* Private function -------------------------------------------------------- */ /** * @brief 运行电容控制逻辑 * * @param cap 电容数据结构体 * @param referee 裁判系统数据 * @param cap_out 电容输出结构体 */ void Cap_Control(CAN_SuperCapRXDataTypeDef *cap, const Referee_ForCap_t *referee, float *power_limit) { if (referee->ref_status != REF_STATUS_RUNNING) { /* 当裁判系统离线时,依然使用裁判系统进程传来的数据 */ * power_limit = referee->chassis_power_limit; } else { /* 当裁判系统在线时,使用算法控制裁判系统输出(即电容输入) */ * power_limit = PowerLimit_CapInput(referee->chassis_watt, referee->chassis_power_limit, referee->chassis_pwr_buff); } } /** * @brief 导出电容数据 * * @param cap 电容数据 * @param ui 结构体 */ void Cap_DumpUI(CAN_SuperCapRXDataTypeDef *cap, Referee_CapUI_t *ui) { ui->percentage = cap->SuperCapEnergy; ui->status = cap->SuperCapState; ui->ready = cap->SuperCapReady; ui->online = get_supercap_online_state(); }