3. 速度闭环控制基础

任务目标

在InstaSPIN-FOC速度闭环模式下,通过实验方法整定PID参数(Kp、Ki),使电机能够快速达到设定转速并保持稳定运行,无明显振荡与稳态误差。

环境与依赖

  • 硬件:支持InstaSPIN-FOC的C2000 LaunchPad(如LAUNCHXL-F28069M)+ BOOSTXL-DRV8301电机驱动板 + 三相PMSM电机(如HP 400W伺服电机或低惯量PMSM)
  • 软件:CCS(Code Composer Studio)10.x及以上,MotorWare或C2000Ware中的InstaSPIN例程工程
  • 关键文件:proj_lab10.c(速度闭环例程),user.h(用户参数配置)

实现原理与整定流程

速度闭环采用PI控制器,输出为电流环的转矩参考值。整定目标是使速度响应快、超调小、稳态无静差。本案例采用先内环后外环的整定顺序:先确认电流环已由InstaSPIN自动辨识并稳定,再手动整定速度环PI参数。

关键完整代码

以下代码在proj_lab10.c的速度环ISR中实现PI控制器,并开放两个全局变量用于在线调参(通过CCS的Expression Window实时修改):

// 速度环PI参数(可在CCS调试界面实时修改)
float32_t Kp_spd = 0.5f;   // 比例增益
float32_t Ki_spd = 0.05f;  // 积分增益

// 速度环PI控制器(在ISR中调用,频率为10kHz)
void speedLoopPI(float32_t speedRef, float32_t speedFb)
{
    static float32_t integral = 0.0f;
    float32_t error = speedRef - speedFb;
    
    // 抗积分饱和:限制积分项输出范围
    float32_t maxIntegral = 0.5f;  // 与电流环最大转矩指令相关
    integral += Ki_spd * error;
    if (integral > maxIntegral) integral = maxIntegral;
    if (integral < -maxIntegral) integral = -maxIntegral;
    
    // PI输出 = 比例项 + 积分项
    float32_t torqueRef = Kp_spd * error + integral;
    
    // 限幅到电流环允许范围(-1.0 ~ 1.0,对应额定转矩)
    if (torqueRef > 1.0f) torqueRef = 1.0f;
    if (torqueRef < -1.0f) torqueRef = -1.0f;
    
    // 写入电流环参考(全局变量,由电流环ISR读取)
    gTorqueRef = torqueRef;
}

在user.h中确认以下配置已启用速度闭环模式:

#define SPEED_LOOP_ENABLE   1   // 使能速度环
#define ISR_FREQUENCY_HZ    10000 // 速度环ISR频率

运行与整定步骤

  1. 编译工程并烧录至LaunchPad,打开CCS的Expression Window,添加变量Kp_spd、Ki_spd、gSpeedRef(设定转速)和gSpeedFb(反馈转速)。
  2. 初始设定Kp_spd = 0.2,Ki_spd = 0.01,给定转速gSpeedRef = 1000 RPM(或电机额定转速的30%)。
  3. 运行电机,观察gSpeedFb的响应曲线(可用CCS Graph工具)。
  4. 先调Kp:逐步增大Kp(每次增加0.1),观察是否出现振荡。当转速出现等幅振荡时,取当前Kp的50%~60%作为最终Kp。
  5. 再调Ki:在确定Kp后,逐步增大Ki(每次增加0.01),观察稳态误差是否消除。若出现低频振荡,则减小Ki至振荡消失。
  6. 微调:在额定转速和轻载/满载条件下分别验证,确保系统在工况变化下仍稳定。

验证方法与通过标准

  • 启动响应:给定阶跃转速指令,电机应在1~2秒内达到设定值,超调量小于10%。
  • 稳态精度:稳定运行后,gSpeedFb与gSpeedRef的偏差小于±5 RPM(或设定值的0.5%)。
  • 抗扰能力:手动施加短暂负载(如用手轻捏电机轴),转速跌落应小于50 RPM并在1秒内恢复。
  • 无振荡:在整定范围内,速度波形无持续等幅振荡。

常见问题

  • 电机啸叫或电流过大:Kp过大导致转矩指令振荡,立即减小Kp。
  • 转速缓慢爬升无法到达设定值:Ki过小,增大Ki。
  • 转速超调后长时间振荡:Ki过大,减小Ki并适当增加Kp。

完成上述整定后,速度闭环即达到稳定运行要求。若需进一步优化动态响应,可引入微分项(Kd),但PMSM速度环通常PI已足够,Kd会放大噪声,不建议优先使用。