
基于滑模观测器的永磁同步电机无感FOC:SMO、PLL与不同开关函数的对比分析
永磁同步电机的无感FOC控制里有个挺有意思的玩意儿——滑模观测器(SMO)。这玩意儿不需要编码
器就能把转子的位置和速度给扒拉出来,特别适合那些对成本敏感的应用场景。咱今天就聊聊怎么在α-β
坐标系下整活,特别是三种不同的开关函数该怎么选。
先上硬菜,滑模观测器的核心方程长这样:
```matlab
function e = SMO_equation(i_alpha_hat, i_beta_hat, V_alpha, V_beta)
R = 2.3; L = 0.005; % 电机参数
dt = 1e-5; % 仿真步长
persistent i_alpha_prev i_beta_prev;
% 滑模控制量计算
e_alpha = i_alpha_hat - i_alpha_prev;
e_beta = i_beta_hat - i_beta_prev;
% 这里就是开关函数的位置,后边会替换成不同版本
s_alpha = sign(e_alpha);
s_beta = sign(e_beta);
% 电流观测器更新
i_alpha_new = (V_alpha - R*i_alpha_prev + L/dt*(i_alpha_prev - i_alpha_hat) - L*
s_alpha)/L;
i_beta_new = (V_beta - R*i_beta_prev + L/dt*(i_beta_prev - i_beta_hat) - L*s_bet
a)/L;
% 更新状态
i_alpha_prev = i_alpha_new;
i_beta_prev = i_beta_new;
e = [e_alpha; e_beta];
end
```
这段代码里有个关键点——那个`sign()`函数就是最原始的开关函数。它的输出非+1即-1,就像个暴
躁老哥,好处是响应贼快,但会把系统搞得疯狂抖动。这时候咱们就得考虑其他温柔点的操作,比如sigmoi
d或者饱和函数。