foc滑膜观测器(SMO+PLL)matlab模型,仿真里面是直接0速闭环启动的效果,当然这是仿真
今天把Matlab2021b的仿真模型掏出来给大伙瞅瞅,这个模型最骚的操作是直接0速闭环启动——当然这属于仿真特技,真实硬件里咱还是得老老实实做开环启动。foc滑膜观测器(SMO+PLL)matlab模型,仿真里面是直接0速闭环启动的效果,当然这是仿真,应用到硬件肯定要加开环启动,目前已经在M4的硬件中实现了,效果还不错,现在出这个模型,matlab 的版本是2021b。最后给想复现的老铁们提个醒
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万转时直接崩了,那酸爽...
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)