fix(FOC): 修复角度控制中的冗余CAN传输与传感器角度获取错误
- 修正速度控制中角度传感器数据读取错误,使用current_sensorangle替代getRawAngle - 在Timer中断中统一使用angle_control进行角度闭环控制 - 完善角度传感器类的角度读取逻辑,增加current_angle_deg和current_angle_rad成员变量 - 添加getcurrent_sensorangle接口用于获取当前原始角度值
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user