offline
This commit is contained in:
parent
d933c59ae8
commit
ec3d36ff08
@ -158,7 +158,7 @@ int8_t CAN_TX_SuperCapData(CAN_SuperCapTXDataTypeDef * TX_Temp)
|
|||||||
|
|
||||||
/*******balance特供*******/
|
/*******balance特供*******/
|
||||||
/**
|
/**
|
||||||
* @brief 限制功率不超过power_limit(超电测量功率版本)
|
* @brief 限制功率不超过power_limit(out[i]版本)(未完成)
|
||||||
*
|
*
|
||||||
* @param power_limit 最大功率
|
* @param power_limit 最大功率
|
||||||
* @param motor_out 电机输出值
|
* @param motor_out 电机输出值
|
||||||
@ -174,7 +174,7 @@ int8_t PowerLimit_Output_by_cap(float power_limit, float *motor_out, uint32_t le
|
|||||||
float ChassisPower = CAN_SuperCapRXData.ChassisPower ;
|
float ChassisPower = CAN_SuperCapRXData.ChassisPower ;
|
||||||
|
|
||||||
/* 保持每个电机输出值缩小时比例不变 */
|
/* 保持每个电机输出值缩小时比例不变 */
|
||||||
if (ChassisPower > power_limit) {
|
if (ChassisPower > power_limit - 1) {
|
||||||
for (uint32_t i = 0; i < len; i++) {
|
for (uint32_t i = 0; i < len; i++) {
|
||||||
motor_out[i] *= power_limit / ChassisPower;
|
motor_out[i] *= power_limit / ChassisPower;
|
||||||
}
|
}
|
||||||
@ -183,17 +183,17 @@ int8_t PowerLimit_Output_by_cap(float power_limit, float *motor_out, uint32_t le
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* @brief 限制功率不超过power_limit(out[i]版本)(未完成)
|
* @brief 限制功率不超过power_limit(超电测量功率版本)
|
||||||
*/
|
*/
|
||||||
int8_t PowerLimit_Output(float power_limit, float *motor_out, uint32_t len)
|
int8_t PowerLimit_Output(float power_limit, float *motor_out, uint32_t len)
|
||||||
{
|
{
|
||||||
/* power_limit小于0时不进行限制 */
|
/* power_limit小于0时不进行限制 */
|
||||||
if (motor_out == NULL || power_limit < 0) return -1;
|
if (motor_out == NULL || power_limit < 0) return -1;
|
||||||
if (power_limit < 0 ) return 0;
|
|
||||||
float ChassisPower = CAN_SuperCapRXData.ChassisPower ;
|
float ChassisPower = CAN_SuperCapRXData.ChassisPower ;
|
||||||
|
|
||||||
/* 保持每个电机输出值缩小时比例不变 */
|
/* 保持每个电机输出值缩小时比例不变 */
|
||||||
if (ChassisPower > power_limit) {
|
if (ChassisPower > power_limit - 1) {
|
||||||
for (uint32_t i = 0; i < len; i++) {
|
for (uint32_t i = 0; i < len; i++) {
|
||||||
motor_out[i] *= power_limit / ChassisPower;
|
motor_out[i] *= power_limit / ChassisPower;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -27,8 +27,9 @@ extern Chassis_t chassis;
|
|||||||
void Cap_Control(CAN_SuperCapRXDataTypeDef *cap, const Referee_ForCap_t *referee)
|
void Cap_Control(CAN_SuperCapRXDataTypeDef *cap, const Referee_ForCap_t *referee)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (CAN_SuperCapRXData.SuperCapEnergy<=35)chassis.power_limit = referee->chassis_power_limit ;
|
if (CAN_SuperCapRXData.SuperCapEnergy<=5)chassis.power_limit = referee->chassis_power_limit ;
|
||||||
else chassis.power_limit = -1;
|
else chassis.power_limit = -1;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
if (referee->ref_status != REF_STATUS_RUNNING) {
|
if (referee->ref_status != REF_STATUS_RUNNING) {
|
||||||
//当裁判系统离线时,依然使用裁判系统进程传来的数据
|
//当裁判系统离线时,依然使用裁判系统进程传来的数据
|
||||||
|
|||||||
@ -641,9 +641,9 @@ int8_t CMD_Arbitrate(CMD_t *ctx) {
|
|||||||
// if (ctx->input.rc.sw[0] == CMD_SW_DOWN) {
|
// if (ctx->input.rc.sw[0] == CMD_SW_DOWN) {
|
||||||
// ctx->output.gimbal.source = CMD_SRC_NUC;
|
// ctx->output.gimbal.source = CMD_SRC_NUC;
|
||||||
// ctx->output.shoot.source = CMD_SRC_NUC;
|
// ctx->output.shoot.source = CMD_SRC_NUC;
|
||||||
#if CMD_ENABLE_MODULE_REFUI
|
// #if CMD_ENABLE_MODULE_REFUI
|
||||||
ctx->output.refui.source = CMD_SRC_NUC;
|
// ctx->output.refui.source = CMD_SRC_NUC;
|
||||||
#endif
|
// #endif
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
|
|||||||
@ -49,7 +49,8 @@ void Task_cap(void *argument) {
|
|||||||
while (1) {
|
while (1) {
|
||||||
tick += delay_tick; /* 计算下一个唤醒时刻 */
|
tick += delay_tick; /* 计算下一个唤醒时刻 */
|
||||||
/* USER CODE BEGIN */
|
/* USER CODE BEGIN */
|
||||||
//osMessageQueueGet(task_runtime.msgq.referee.ui.tocap, , NULL, 0);
|
osMessageQueueGet(task_runtime.msgq.referee.tocmd.cap, &referee_cap , NULL, 0);
|
||||||
|
power_limit = referee_cap.chassis_power_limit;
|
||||||
|
|
||||||
cap_online = get_supercap_online_state();
|
cap_online = get_supercap_online_state();
|
||||||
|
|
||||||
@ -57,6 +58,7 @@ void Task_cap(void *argument) {
|
|||||||
/* 根据裁判系统数据计算输出功率 */
|
/* 根据裁判系统数据计算输出功率 */
|
||||||
SuperCap_CanTX.Powerlimit = power_limit;
|
SuperCap_CanTX.Powerlimit = power_limit;
|
||||||
Cap_Control(&CAN_SuperCapRXData, &referee_cap);
|
Cap_Control(&CAN_SuperCapRXData, &referee_cap);
|
||||||
|
|
||||||
SuperCap_Update();
|
SuperCap_Update();
|
||||||
CAN_TX_SuperCapData(&SuperCap_CanTX);
|
CAN_TX_SuperCapData(&SuperCap_CanTX);
|
||||||
// osKernelUnlock();
|
// osKernelUnlock();
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user