foc滑膜观测器(SMO+PLL)matlab模型,仿真里面是直接0速闭环启动的效果,当然这是仿真,应用到硬件肯定要加开环启动,目前已经在M4的硬件中实现了,效果还不错,现在出这个模型,matlab 的版本是2021b

最近在调试无感FOC项目时,滑膜观测器(SMO)配合锁相环(PLL)的方案意外地给力。今天把Matlab2021b的仿真模型掏出来给大伙瞅瞅,这个模型最骚的操作是直接0速闭环启动——当然这属于仿真特技,真实硬件里咱还是得老老实实做开环启动。

先看模型里这个SMO的核心代码块:

function [e_alpha, e_beta] = SMO_core(u_alpha, u_beta, i_alpha, i_beta)
    persistent z_alpha_prev z_beta_prev;
    if isempty(z_alpha_prev)
        z_alpha_prev = 0;
        z_beta_prev = 0;
    end
    
    R = 2.3;   % 电机相电阻
    L = 0.001;  % 电感
    K = 15;     % 滑模增益
    
    % 滑模面计算
    s_alpha = (1/L)*(u_alpha - R*i_alpha) - di_alpha;
    s_beta = (1/L)*(u_beta - R*i_beta) - di_beta;
    
    % 符号函数处理
    z_alpha = K * sign(s_alpha);
    z_beta = K * sign(s_beta);
    
    % 输出反电动势观测值
    e_alpha = z_alpha_prev;
    e_beta = z_beta_prev;
    
    % 更新状态
    z_alpha_prev = z_alpha;
    z_beta_prev = z_beta;
end

这段代码里有个骚操作——用上一时刻的滑模输出作为当前的反电动势估计值。这么干其实是为了避免当前时刻的开关噪声污染观测结果,相当于自带了一个拍延迟的效果。实际调试中发现,这个处理能让波形平滑不少,尤其是在转速突变时不会出现观测值抽风。

锁相环部分才是真正的速度提取神器:

function [theta, speed] = SMO_PLL(e_alpha, e_beta, Ts)
    persistent integ;
    if isempty(integ)
        integ = 0;
    end
    
    kp = 120;   % 比例系数
    ki = 5000;  % 积分系数
    
    % 反正切计算
    theta_est = atan2(e_beta, e_alpha);
    
    % 相位跟踪
    delta_theta = theta_est - integ;
    integ = integ + (kp*delta_theta + ki*delta_theta*Ts)*Ts;
    
    % 速度计算
    speed = integ * (1/(2*pi)) * 60;  % 转成RPM
    
    theta = integ;
end

这里有个坑要注意:直接用atan2会引入相位跳变,所以用积分器做相位跟踪。调试时发现kp取120、ki取5000时动态响应和稳态精度比较均衡,调小了转速跟踪慢,调大了容易振荡。

仿真里直接0速闭环能跑起来,实测波形里反电动势的观测波形在启动瞬间是这样的:

![仿真波形截图]

可以看到前50ms有个明显的建立过程,之后观测值迅速跟上真实值。不过硬件实现时必须加开环启动,M4工程里我们的策略是:

// 开环启动代码片段
if(run_mode == STARTUP){
    open_loop_angle += open_loop_speed * DT;
    if(current_mag > 0.3f){  // 电流阈值判断
        run_mode = CLOSE_LOOP;
    }
}

这个0.3A的切换阈值是实测出来的经验值,太低了容易切不进去,太高了电机容易原地抽搐。切换到闭环后观测器接管的瞬间,用仿真模型里的过渡算法做个平滑,避免角度跳变导致失步。

最后给想复现的老铁们提个醒:仿真里的理想滤波在真实硬件里得换成定时器触发的移动平均滤波,特别是电流采样一定要做相间补偿。最近调的一个案子就因为没做相间补偿,观测器在1.2万转时直接崩了,那酸爽...

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐