4. 电流闭环控制与力矩控制实现

任务目标

本案例基于InstaSPIN-FOC方案,在LaunchPad+BOOSTXL-DRV8301硬件上完成电流闭环配置,实现力矩控制模式。通过给定iQRef电流指令,使电机输出与指令成正比的电磁力矩,并验证电流环跟踪性能。

硬件与软件环境

  • 硬件:LAUNCHXL-F28069M + BOOSTXL-DRV8301 + 低压永磁同步电机(如HPMSM套件)
  • 软件:CCS 6.2+,MotorWare SDK(含InstaSPIN-FOC库)
  • 关键工程:proj_lab10(力矩模式示例,基于lab02电流环)

实现原理

InstaSPIN-FOC通过估算转子角度实现磁场定向。电流环在d/q同步旋转坐标系下运行:iDRef通常置0(表贴式PMSM),iQRef与电磁力矩成正比(Te = 1.5·p·λ_f·iq)。本案例将速度环输出断开,直接给定iQRef,使系统工作于纯力矩模式。

关键完整代码

在proj_lab10.c的主循环中,核心配置与力矩指令给定如下:

// 力矩模式配置:禁用速度环,直接给定电流指令
void torqueMode_Init(void)
{
    // 清除速度环积分与输出
    gSpeedCtrl.Out = 0;
    gSpeedCtrl.IntegratorOut = 0;

    // 将速度环输出旁路,力矩指令直接写入电流环
    gCurrentCtrl.Out = 0;  // 确保电流环初始输出为零
}

// 主循环中每ISR执行一次(频率10kHz)
void torqueMode_Update(float iqRef)
{
    // 电流环d轴指令:表贴式PMSM置0
    gCurrentCtrl.IqRef = iqRef;   // 力矩指令(A)
    gCurrentCtrl.IdRef = 0.0f;    // d轴电流指令为0

    // 使能电流环PI控制器
    gCurrentCtrl.En = 1;
}

// 在main()中调用示例:给定1.0A力矩电流
void main(void)
{
    // ... 初始化代码(省略,与lab10一致) ...

    torqueMode_Init();

    for(;;)
    {
        // 每ISR周期更新力矩指令
        torqueMode_Update(1.0f);   // 持续输出1A电流对应力矩

        // 监控变量:gCurrentCtrl.IqFbk(实际q轴电流)
        // 通过CCS Graph观察IqFbk是否稳定跟踪IqRef
    }
}

关键配置说明:

  • 电流环PI参数在user.h中通过USER_PI_CURRENT_KP和USER_PI_CURRENT_KI定义,lab10默认值适用于大多数低压PMSM。
  • 必须确保gMotorVars.Flag_enableSys置1使能系统,且电机已完成识别(lab02或lab05e)。
  • 力矩模式下速度环输出被旁路,gSpeedCtrl.Out不参与电流环指令计算。

运行与验证方法

  1. 编译并烧录proj_lab10工程,连接电机与驱动板。
  2. 在CCS中打开Expression窗口,添加gCurrentCtrl.IqRef和gCurrentCtrl.IqFbk变量。
  3. 运行程序,电机应静止(无速度指令),但输出恒定力矩(堵转或带负载)。
  4. 使用CCS Graph工具观察IqFbk波形:
验证项通过条件
电流跟踪IqFbk在0.5s内稳定至IqRef±5%范围内,无振荡
力矩输出电机轴输出力矩与IqRef成正比(可用测功机或手感受堵转力矩)
d轴电流IdFbk保持在0A附近(±0.05A内)

常见问题

  • 电流振荡:降低电流环KP或增加KI,检查母线电压是否足够。
  • 电机不转但无力矩:确认已使能PWM输出(gMotorVars.Flag_enableSys=1),且转子初始位置已正确估算。
  • IqFbk持续为0:检查电流采样是否正常,确认DRV8301的电流放大增益配置与user.h一致。

通过以上配置,系统即工作于纯力矩模式,电流指令iQRef直接控制电机输出力矩,满足案例目标要求。