4. 路感模拟器电机控制基础

任务说明

本案例实现线控转向系统中路感模拟电机的电流闭环控制。路感模拟器通过电机输出扭矩模拟方向盘回正力矩与路面反馈,其核心是精确控制电机电磁扭矩。对于永磁同步电机(PMSM),电磁扭矩与q轴电流成正比(Te = 1.5·p·ψf·iq),因此扭矩控制可等效为q轴电流闭环控制。本案例目标:给定目标扭矩指令,通过PI控制器调节q轴电流,使实际电流快速、无静差地跟踪指令值,从而输出指定扭矩。

系统架构与电流环设计

采用磁场定向控制(FOC)架构,电流环作为内环。系统框图如下:

T* iq* = T*/(1.5pψf) PI (q轴) PMSM + 逆变器 + 电流采样 iq计算 (Clarke/Park) Te 电流反馈回路 目标扭矩 扭矩→电流换算 电流环PI 执行与采样 坐标变换

核心代码实现

以下代码实现电流环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轴电流响应。

验证步骤与判定标准:

  1. 阶跃响应测试:给定目标扭矩 T* = 1.5 N·m,由 Kt = 1.5×4×0.05 = 0.3 N·m/A,换算得 iq* = 5 A。观察实际电流响应。
  2. 稳态精度:待响应稳定后(通常 > 50 ms),实际电流与5 A指令的偏差应小于 ±0.1 A(即稳态误差 < 2%)。
  3. 动态性能:上升时间(10%~90%)应小于 5 ms,超调量应小于 10%,无稳态振荡。
  4. 抗饱和验证:给定 T* = 4 N·m(对应 iq* = 13.3 A,超过输出限幅10 A),控制器输出应限制在10 A,积分项不持续累加,指令回落后能快速退出饱和。

满足上述指标即判定电流闭环控制合格,电机可输出与指令对应的扭矩。