fix(FOC): 修复角度控制中的冗余CAN传输与传感器角度获取错误

- 修正速度控制中角度传感器数据读取错误,使用current_sensorangle替代getRawAngle
- 在Timer中断中统一使用angle_control进行角度闭环控制
- 完善角度传感器类的角度读取逻辑,增加current_angle_deg和current_angle_rad成员变量
- 添加getcurrent_sensorangle接口用于获取当前原始角度值
This commit is contained in:
cbb
2025-11-08 21:04:35 +08:00
parent 99cc397931
commit b33574d392
5 changed files with 31 additions and 18 deletions
+1 -5
View File
@@ -167,8 +167,6 @@ float FOC_Controlroller::angle_control(float target_angle) {
shaft_angle = KTH7823.getRawAngle() * DEG2RAD;
// PID 控制计算
float Uq = angle_loop(shaft_angle - target_angle * ANGLE_FACTOR);
CAN0_transmiter.testfloat_union.f =
angle_loop(target_angle * ANGLE_FACTOR - shaft_angle);
// 设置相电压
setPhaseVoltage(Uq, 0.0f);
return shaft_angle;
@@ -200,11 +198,9 @@ float FOC_Controlroller::angle_control_NPID(float target_angle) {
* @return float: 当前速度
*/
float FOC_Controlroller::velocity_control(float target_velocity) {
shaft_angle = KTH7823.getRawAngle() * DEG2RAD;
shaft_angle = KTH7823.getcurrent_sensorangle() * DEG2RAD;
// PID 控制计算
float Uq = vel_loop(rt_velocity - target_velocity);
CAN0_transmiter.testfloat_union.f = Uq;
// 设置相电压
setPhaseVoltage(Uq, 0.0f);
return rt_velocity;