阅读总结下面的C语言函数并给C语言函数添加中文注释并将英文注释翻译成中文。void FOC_position_control_loopfloat target_angle target_angle = _normalizeAngletarget_angle; float now_angle = _normalizeAngleFOC_get_mechanical_angle - zer
void FOC_position_control_loop(float target_angle) { // 目标角度归一化 target_angle = _normalizeAngle(target_angle); // 当前角度归一化 float now_angle = _normalizeAngle(FOC_get_mechanical_angle() - zero_mechanical_angle); //float now_angle = FOC_get_mechanical_angle();
// 计算角度误差
float angle_error = target_angle - now_angle;
// 如果角度误差小于负π,则目标角度加上2π
if (angle_error < -_PI) target_angle += _2PI;
// 如果角度误差大于π,则目标角度减去2π
else if (angle_error > _PI) target_angle -= _2PI;
// 计算目标速度
float target_velocity = pid_get_u(&pid_position, target_angle, now_angle);
// 当前速度经过低通滤波器滤波
float now_velocity = FOC_low_pass_filter(&lpf_velocity, FOC_get_velocity());
// 计算电压量
float Uq = pid_get_u(&pid_velocity, target_velocity, now_velocity);
// 计算电气角度
float electrical_angle = FOC_electrical_angle();
// 进行SVPWM控制
FOC_SVPWM(Uq, 0, electrical_angle);
//printf("%.2f,%.2f,%.2f,%.2f\n", target_angle, now_angle, target_velocity, now_velocity);
原文地址: https://www.cveoy.top/t/topic/fb7r 著作权归作者所有。请勿转载和采集!