feat(FOC): 重构FOC控制器实现并修复SVPWM算法支持

- 修复类名拼写错误:FOC_Controlroller -> FOC_Controller
- 移除不必要的角度归一化函数,直接使用fmod优化性能
- 添加完整的SVPWM算法实现,提高电机控制效率
- 重构PID参数配置,使用动态参数调整机制
- 增加电流反馈功能,实时监测电机运行状态
- 优化电压安全限制,提高系统稳定性
- 更新控制模式映射,支持更多控制策略
- 改进CAN通信协议,增加电流反馈传输
This commit is contained in:
cbb
2026-02-02 02:23:16 +08:00
parent 25e2edfd0c
commit 173fadadd2
14 changed files with 386 additions and 233 deletions
+11 -3
View File
@@ -2,12 +2,12 @@
#define _constrain(amt, low, high) \
((amt) < (low) ? (low) : ((amt) > (high) ? (high) : (amt)))
#include "Can.h"
#include "config.h"
#include <algorithm>
#include <cmath>
extern CAN_transmiter CAN0_transmiter;
constexpr float TIME_SLICE = 1e-4;
extern CAN_transmiter CAN0_transmiter;
PIDController::PIDController(float P, float I, float D, float ramp, float limit)
: P(P), I(I), D(D), output_ramp(ramp) // PID控制器加速度限幅
,
@@ -68,4 +68,12 @@ void PIDController::set_PID(float P, float I, float D) {
* @param P: P参数
* @return void
*/
void PIDController::set_P_percent(float pp) { this->P = pp; }
void PIDController::set_P(float pp) { this->P = pp; }
/**
* @brief 设置输出限幅
*
* @param limit: 输出限幅
* @return void
*/
void PIDController::set_limit(float limit) { this->limit = limit; }