4. 路感模拟器电机控制基础
任务说明
本案例实现线控转向系统中路感模拟电机的电流闭环控制。路感模拟器通过电机输出扭矩模拟方向盘回正力矩与路面反馈,其核心是精确控制电机电磁扭矩。对于永磁同步电机(PMSM),电磁扭矩与q轴电流成正比(Te = 1.5·p·ψf·iq),因此扭矩控制可等效为q轴电流闭环控制。本案例目标:给定目标扭矩指令,通过PI控制器调节q轴电流,使实际电流快速、无静差地跟踪指令值,从而输出指定扭矩。
系统架构与电流环设计
采用磁场定向控制(FOC)架构,电流环作为内环。系统框图如下:
核心代码实现
以下代码实现电流环PI控制器与扭矩到q轴电流的换算。采用离散化位置式PI算法,包含抗积分饱和与输出限幅,适用于嵌入式实时控制。
// 文件: current_control.c
#include <stdint.h>
// 电机参数(示例值,需按实际电机标定)
#define POLE_PAIRS 4 // 极对数 p
#define FLUX_LINKAGE 0.05f // 永磁体磁链 ψf (Wb)
#define TORQUE_CONST (1.5f * POLE_PAIRS * FLUX_LINKAGE) // Kt = 1.5·p·ψf
// PI控制器参数(需按实际系统整定)
#define KP 0.8f // 比例增益
#define KI 0.05f // 积分增益
#define INTEGRAL_LIMIT 5.0f // 积分限幅 (A)
#define OUTPUT_LIMIT 10.0f // 输出限幅 (A)
// 控制器状态
typedef struct {
float integral; // 积分累加值
float output; // 控制器输出
} PI_Controller;
// 初始化PI控制器
void PI_Init(PI_Controller *pi) {
pi->integral = 0.0f;
pi->output = 0.0f;
}
// 扭矩指令转q轴电流指令
float TorqueToIq(float torque_ref) {
return torque_ref / TORQUE_CONST;
}
// 电流环PI控制器(位置式,含抗积分饱和)
float CurrentPI_Update(PI_Controller *pi, float iq_ref, float iq_fb) {
float err = iq_ref - iq_fb; // 电流误差
float prop = KP * err; // 比例项
// 积分项(带抗饱和:输出饱和时停止积分)
if (pi->output < OUTPUT_LIMIT && pi->output > -OUTPUT_LIMIT) {
pi->integral += KI * err;
}
// 积分限幅
if (pi->integral > INTEGRAL_LIMIT) pi->integral = INTEGRAL_LIMIT;
if (pi->integral < -INTEGRAL_LIMIT) pi->integral = -INTEGRAL_LIMIT;
// 总输出
pi->output = prop + pi->integral;
// 输出限幅
if (pi->output > OUTPUT_LIMIT) pi->output = OUTPUT_LIMIT;
if (pi->output < -OUTPUT_LIMIT) pi->output = -OUTPUT_LIMIT;
return pi->output; // 输出为q轴电压指令 vq*
}
// 主控制循环调用示例
void CurrentLoop_Task(float torque_ref, float iq_fb, PI_Controller *pi_q) {
// 1. 扭矩指令 → q轴电流指令
float iq_ref = TorqueToIq(torque_ref);
// 2. 电流PI调节,输出q轴电压
float vq_ref = CurrentPI_Update(pi_q, iq_ref, iq_fb);
// 3. vq_ref 后续经逆Park变换、SVPWM生成逆变器驱动信号
// (本案例聚焦电流环,坐标变换与PWM调制不在范围内)
(void)vq_ref; // 实际系统中传递给下一级
}
验证方法
在仿真环境(如MATLAB/Simulink或PLECS)中搭建被控对象模型:PMSM电气方程 + 逆变器 + 电流采样。给定阶跃扭矩指令,观察q轴电流响应。
验证步骤与判定标准:
- 阶跃响应测试:给定目标扭矩
T* = 1.5 N·m,由Kt = 1.5×4×0.05 = 0.3 N·m/A,换算得iq* = 5 A。观察实际电流响应。 - 稳态精度:待响应稳定后(通常 > 50 ms),实际电流与5 A指令的偏差应小于 ±0.1 A(即稳态误差 < 2%)。
- 动态性能:上升时间(10%~90%)应小于 5 ms,超调量应小于 10%,无稳态振荡。
- 抗饱和验证:给定
T* = 4 N·m(对应iq* = 13.3 A,超过输出限幅10 A),控制器输出应限制在10 A,积分项不持续累加,指令回落后能快速退出饱和。
满足上述指标即判定电流闭环控制合格,电机可输出与指令对应的扭矩。