sentry2026/User/module/cap.c
2026-03-20 04:40:46 +08:00

52 lines
1.7 KiB
C

/*
* 电容模组
*/
/* 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();
}