问答

汇集网友智慧,解决技术难题

21ic问答首页 -

电机弱磁 Shunt FOC PMSM PSC3 原厂

2025-08-25
根据例程“PMSM_FOC_SL_with_3-shunt”,在进入“Speed_CL”状态后,PHASE_ADV_RunISR0()会比FLUX_WEAKEN_RunISR0()先执行,PHASE_ADV_RunISR0()会根据电机参数Ld和Lq差值大小进行电流环输入的Id、Iq给定,只要电机参数满足,哪怕没有开启弱磁,也会输出Id为负值。
我的疑问是这个给定负值Id不是弱磁才会有的吗?为什么这一段代码没有放入弱磁函数中?这个应该也算弱磁吧?
PHASE_ADV_RunISR0()相关代码如下(vars.i_cmd_int是速度环的输出经过限制后的输出,ctrl.ph_adv.motor_type是程序根据电机参数自行判断的电机类型):
void PHASE_ADV_RunISR0()
{
    if (ctrl.ph_adv.motor_type == SPM)
    {
        vars.i_qd_r_ref.d = 0.0f;
        vars.i_qd_r_ref.q = vars.i_cmd_int;
    }
    else // IPM
    {
        vars.i_qd_r_ref.d = 0.25f * (ctrl.ph_adv.lam_over_dl - sqrtf(POW_TWO(ctrl.ph_adv.lam_over_dl) + 8.0f * POW_TWO(vars.i_cmd_int)));
        vars.i_qd_r_ref.q = sqrtf(POW_TWO(vars.i_cmd_int) - POW_TWO(vars.i_qd_r_ref.d)) * SIGN(vars.i_cmd_int);
    }
}



回答 +关注
人浏览 人回答问题 分享 举报
个回答

您需要登录后才可以回复 登录 | 注册