☰
无感FOC滑模观测器原理推导与工程实现全解析
2026/9/25 6:44:20 网站建设 项目流程

电动机控制这个圈子里,无感FOC方案里最常被提到的名字,滑模观测器绝对排前三。它不依赖霍尔、编码器这类物理位置传感器,光靠相电流和母线电压,就能把转子位置和转速估出来,压缩机、电动自行车、风机、无人机电调里都在跑。这篇文章把滑模观测器的原理推导从头到尾过一遍,把每一步都知道为什么,顺带聊聊工程实现和调试坑。

1. 无感FOC里为什么需要滑模观测器

1.1 没有位置传感器,怎么知道转子在哪

磁场定向控制(FOC)的前提,就是实时知道转子磁极的电气角度。有了这个角度,Id轴电流和Iq轴电流才能正确解耦,SVPWM输出才能把电压矢量送到该送的位置。传统做法是装霍尔、增量编码器或旋变,成本高、体积大,防水防油防震的要求也高。家用空调压缩机、两轮车电机、高速风机这类场景,装上编码器不但贵,高温高湿环境里故障率还高,于是无感方案成了刚需。

但“没有传感器”等于不给眼睛,怎么知道转子在哪?物理上唯一可靠的信息来源,就是电机本身在运行中产生的反电动势(Back EMF)。转子转得越快,反电动势越大,而且它的相位和转子位置有严格对应关系。问题在于,正常运行时反电动势是藏在端电压和电流背后的,没办法拿万用表直接量。滑模观测器做的事,就是通过电流误差构造一个非线性闭环,把藏在电机方程里的反电动势“逼”出来。反电动势出来了,转子角度自然也就出来了。

1.2 反电动势法为什么是主流

反电动势法在无感FOC里之所以是主流,逻辑很简单:数学模型成熟,硬件开销小,中高速段性能足够好。以表贴式永磁同步电机为例,定子电压方程在静止两相坐标系下写出来,反电动势分量包含转子位置和速度的全部信息:

$$ u_{\alpha} = R_s i_{\alpha} + L_s \frac{d i_{\alpha}}{dt} + e_{\alpha} $$

$$ u_{\beta} = R_s i_{\beta} + L_s \frac{d i_{\beta}}{dt} + e_{\beta} $$

其中反电动势表达式为:

$$ e_{\alpha} = -\psi_f \omega_e \sin\theta_e $$

$$ e_{\beta} = \psi_f \omega_e \cos\theta_e $$

也就是说,只要能估计出 eα 和 eβ,转子位置角度直接就是:

$$ \theta_e = \operatorname{atan2}(-e_{\alpha}, e_{\beta}) $$

这个方法在中高速段非常好用,因为它简洁、直观、几乎不需要额外硬件。但反电动势法有个天生的短板:零速和极低速时反电动势幅值太小,信噪比差,难以提取位置。所以工业上普遍的做法是低速段用高频注入或者I/F强拖,中高速段切到反电动势类观测器。滑模观测器就是反电动势类方案里应用最广、性价比最高的一种。

1.3 滑模观测器相比其他方案的优势

无感位置估计的候选方案有好几个:龙贝格观测器、扩展卡尔曼滤波(EKF)、模型参考自适应(MRAS)、滑模观测器,各有利弊。

方案计算量鲁棒性调参难度适用场景
龙贝格观测器低中,对模型参数敏感低参数准确、工况稳定的场合
扩展卡尔曼滤波高较好,但有噪声假设前提高,Q/R矩阵难调对动态性能要求高、算力富余
MRAS中中上中自适应需求明确的场合
滑模观测器低高,对参数扰动不敏感中低压缩机、电动两轮车、风机等大批量低成本场合

滑模观测器最大的优势是鲁棒性。电机在运行中电阻会随温度漂移,电感会随电流饱和变化,龙贝格这类线性观测器对参数误差比较敏感,参数一偏估计角度就偏,角度偏了电流环就乱,严重时直接过流保护。滑模观测器通过高频切换项把系统“压”在滑模面上,只要切换增益选得够,外部扰动和参数偏差的影响会被强行抑制,这个特性在批量产品上特别有用,因为每台电机的参数不可能完全一样。

2. 滑模控制的核心概念:“滑”在哪

2.1 滑模面的选择

滑模控制这个“滑”字,很多人理解不透。说个小类比:你把一个球放在斜面底部,用力往上滚,球滚到顶会掉回面内,整个过程被“约束”在斜面上滑动。滑模控制本质上就是用一种不连续的强反馈,把系统状态强制拖到一个事先设计好的“面”上,然后让状态沿着这个面滑到平衡点。这个“面”就是滑模面。

对滑模观测器来说,我们的目标是把电流估计误差收敛到零,所以滑模面直接选成电流估计误差:

$$ s_{\alpha} = \hat{i}{\alpha} - i{\alpha} $$

$$ s_{\beta} = \hat{i}{\beta} - i{\beta} $$

当 sα、sβ 被强制收敛到0时,意味着观测器的电流已经完全跟上了真实电流。在这个状态下,观测器为了维持这种“跟随”所付出的控制量,恰好就是被隐藏起来的反电动势。这个思路是整篇推导的灵魂,后面会反复用到。

2.2 等效控制:高频开关量的“平均”就是真实反电动势

滑模观测器和普通PI观测器最大的区别,就是反馈项不是线性的误差乘以系数,而是一个带符号函数 sign(s) 的切换项。切换项的输出在高频下不断翻转,一会儿正一会儿负,形成一个看似剧烈抖动的控制量。

关键来了:在滑模面上,系统一直保持 s=0、ṡ=0。此时如果把这个切换量通过低通滤波“平均”掉,得到的直流分量恰恰就是使系统维持在这个平衡点的等效控制量(equivalent control)。用形式化的话说,令 ṡ=0,反解出来的连续控制量,就是反电动势的估计值。这就是为什么很多资料里直接说:滑模观测器的切换输出经过低通滤波器以后,等于反电动势。

如果你只记住一句话,请记住这句:符号函数输出的高频平均值得到了反电动势,低通滤波器在这里不是可选项而是必备项。

3. 滑模观测器数学推导全流程

3.1 表贴式PMSM在αβ坐标系下的数学模型

先建立完整的数学模型。表贴式永磁同步电机的电感在dq轴上相等,记 Ld=Lq=Ls,定子电阻为 Rs,永磁体磁链为 ψf。在静止两相αβ坐标系下的电压方程写成:

$$ u_{\alpha} = R_s i_{\alpha} + L_s \frac{d i_{\alpha}}{dt} + e_{\alpha} $$

$$ u_{\beta} = R_s i_{\beta} + L_s \frac{d i_{\beta}}{dt} + e_{\beta} $$

把电流导数单独拎出来,得到状态方程形式:

$$ \frac{d i_{\alpha}}{dt} = -\frac{R_s}{L_s} i_{\alpha} + \frac{1}{L_s}(u_{\alpha} - e_{\alpha}) $$

$$ \frac{d i_{\beta}}{dt} = -\frac{R_s}{L_s} i_{\beta} + \frac{1}{L_s}(u_{\beta} - e_{\beta}) $$

注意到 eα、eβ 在这里是未知量。硬件上我们能拿到的是 uα、uβ 和 iα、iβ,需要靠它们把 eα、eβ 估出来。单独看方程,这是两个一阶微分方程,未知的 e 夹在输入项里,必须用观测器把它作为“外部扰动”来观测。

3.2 构造电流观测器与误差方程

按滑模控制的标准套路,构造如下电流观测器:

$$ \frac{d \hat{i}{\alpha}}{dt} = -\frac{R_s}{L_s} \hat{i}{\alpha} + \frac{1}{L_s}\left(u_{\alpha} - k\operatorname{sgn}(\hat{i}{\alpha} - i{\alpha})\right) $$

$$ \frac{d \hat{i}{\beta}}{dt} = -\frac{R_s}{L_s} \hat{i}{\beta} + \frac{1}{L_s}\left(u_{\beta} - k\operatorname{sgn}(\hat{i}{\beta} - i{\beta})\right) $$

这里的 k 是切换增益,sgn 是符号函数。对比观测器方程和真实电机方程,两边相减,引入电流误差:

$$ s_{\alpha} = \hat{i}{\alpha} - i{\alpha}, \quad s_{\beta} = \hat{i}{\beta} - i{\beta} $$

得到误差动力学方程:

$$ \frac{d s_{\alpha}}{dt} = -\frac{R_s}{L_s} s_{\alpha} + \frac{1}{L_s}\left(e_{\alpha} - k\operatorname{sgn}(s_{\alpha})\right) $$

$$ \frac{d s_{\beta}}{dt} = -\frac{R_s}{L_s} s_{\beta} + \frac{1}{L_s}\left(e_{\beta} - k\operatorname{sgn}(s_{\beta})\right) $$

这个方程是整个滑模观测器的核心。它清楚地告诉你:误差 sα 的变化率由三部分决定——自身衰减项 (-Rs/Ls)sα、真实反电动势 eα、以及切换控制项 -k·sgn(sα)。只要切换项能压过反电动势项,就能把误差推向零。

3.3 滑模存在性与切换增益k的设计

现在我们面对一个问题:k 要取多大,滑模才能建立?用李雅普诺夫稳定性判据来分析。对 sα 单独取候选函数:

$$ V_{\alpha} = \frac{1}{2} s_{\alpha}^2 $$

对其求导:

$$ \dot{V}{\alpha} = s{\alpha}\dot{s}{\alpha} = -\frac{R_s}{L_s} s{\alpha}^2 + \frac{s_{\alpha}}{L_s}\left(e_{\alpha} - k\operatorname{sgn}(s_{\alpha})\right) $$

第一项 -Rs/Ls·sα² 是恒小于零的,自动收敛。关键是第二项:

$$ s_{\alpha}\left(e_{\alpha} - k\operatorname{sgn}(s_{\alpha})\right) = s_{\alpha} e_{\alpha} - k|s_{\alpha}| $$

要保证 V 导数小于零,只需要满足:

$$ k > |e_{\alpha}| $$

也就是说,切换增益 k 必须大于反电动势的幅值。同理对 β 轴也要满足 k > |eβ|。实际工程里反电动势幅值主要取决于磁链和转速:

$$ |e| = \psi_f \omega_e $$

举个例子估算一下:某永磁电机的磁链 ψf = 0.05Wb,最高电频率 500Hz,对应 ωe = 2π×500 ≈ 3141 rad/s,反电动势幅值约为 157V。那么 k 至少要大于 157V才能保证滑模面可达。工程上一般留 1.2 到 1.5 倍裕量,还要考虑温度、负载波动带来的参数变化。但 k 也不能取得太大,后面讲抖振的时候会专门说到这个问题。

3.4 从等效控制到反电动势,再到转子角度

当滑模存在时,系统被强制运行在 sα=0、ṡα=0 的流形上。此时令误差动力学方程中的微分项为零,可以得到:

$$ 0 = -\frac{R_s}{L_s} \cdot 0 + \frac{1}{L_s}\left(e_{\alpha} - \left(k\operatorname{sgn}(s_{\alpha})\right)_{\text{eq}}\right) $$

其中的 (k·sgn(sα))eq 就是等效控制,即切换信号经过低通滤波后的平均分量。整理后得到:

$$ \left(k\operatorname{sgn}(s_{\alpha})\right){\text{eq}} = e{\alpha} $$

也就是说,把切换信号 zα = k·sgn(sα) 通过低通滤波器,输出的就是反电动势估计值 êα。β轴同理。我习惯把切换量写成 zα、zβ,调试时直接看 zα 和 êα 的波形,非常直观。

反电动势拿到了,转子角度按下面方式计算。结合 eα、eβ 的定义:

$$ e_{\alpha} = -\psi_f \omega_e \sin\theta_e $$

$$ e_{\beta} = \psi_f \omega_e \cos\theta_e $$

可以得到:

$$ \tan\theta_e = \frac{-e_{\alpha}}{e_{\beta}} $$

于是:

$$ \theta_e = \operatorname{atan2}(-e_{\alpha}, e_{\beta}) $$

这里要提醒一句:不同资料对 eα、eβ 的符号定义可能不同,角度表达式也跟着变。你在自己的工程里,最好先用编码器或者测功机标定一次,确认角度方向和负载方向一致。方向反了,FOC直接“飞车”,这个我后面会专门讲。

4. 工程实现:从连续域到单片机

4.1 离散化:一阶欧拉怎么落地

前面推导都是在连续时间域里做的,单片机里只能定时器中断周期做离散迭代。最常用的离散化方法就是一阶欧拉法,简单、计算量小。设控制周期为 Ts,电流观测器的离散递推公式写成:

$$ \hat{i}{\alpha}[k+1] = \hat{i}{\alpha}[k] + T_s\left[-\frac{R_s}{L_s}\hat{i}{\alpha}[k] + \frac{1}{L_s}\left(u{\alpha}[k] - z_{\alpha}[k]\right)\right] $$

$$ \hat{i}{\beta}[k+1] = \hat{i}{\beta}[k] + T_s\left[-\frac{R_s}{L_s}\hat{i}{\beta}[k] + \frac{1}{L_s}\left(u{\beta}[k] - z_{\beta}[k]\right)\right] $$

其中切换量的离散形式为:

$$ z_{\alpha}[k] = k\operatorname{sgn}\left(\hat{i}{\alpha}[k] - i{\alpha}[k]\right) $$

$$

z_{\beta}[k] = k\operatorname{sgn}\left(\hat{i}{\beta}[k] - i{\beta}[k]\right) $$

后续的低通滤波同样用一阶惯性环节离散:

$$ \hat{e}{\alpha}[k+1] = \hat{e}{\alpha}[k] + T_s \omega_c\left(z_{\alpha}[k] - \hat{e}_{\alpha}[k]\right) $$

$$

\hat{e}{\beta}[k+1] = \hat{e}{\beta}[k] + T_s \omega_c\left(z_{\beta}[k] - \hat{e}_{\beta}[k]\right) $$

其中 ωc 是低通滤波器的截止角频率。整体执行流程大致是这样的:

  1. ADC采样相电流 ia、ib,还原 ic,做Clark变换得到 iα、iβ。
  2. 根据SVPWM占空比和母线电压重构 uα、uβ。
  3. 用上一周期的 zα、zβ 和当前采样电流,更新观测电流 îα、îβ。
  4. 计算电流误差,生成切换量 zα、zβ。
  5. 对 zα、zβ 做低通滤波,得到反电动势估计值 êα、êβ。
  6. 通过反正切计算转子角度,再做相位补偿。
  7. 角度差分或锁相环得到转速,送入速度环和电流环。

这套流程每一步都有讲究。第2步的电压重构尤其容易被忽略,很多新手直接用SVPWM指令电压替代实际电压,结果死区效应带来的误差全算进了反电动势里,低速段角度就会偏。我调过的项目里,凡是低速性能差的,一半以上是死区补偿没做或者没做干净。

4.2 抖振抑制:符号函数换成饱和函数

符号函数 sgn 是理想化的不连续开关,实际数字控制里直接用会带来高频抖振。抖振的根源是:系统到达滑模面后,切换项在正负两个方向之间高速翻转,电流波形上表现为毛刺,电机轴上表现为高频噪声和损耗。

工程上最直接的办法是把符号函数换成饱和函数:

$$ \operatorname{sat}\left(\frac{s}{\Delta}\right) = \begin{cases} 1, & s > \Delta \ s/\Delta, & |s| \le \Delta \ -1, & s < -\Delta \end{cases} $$

Δ 称为边界层厚度。当电流误差落在 [-Δ, Δ] 范围内时,切换量不再直接跳变,而是按比例连续变化,抖振会大幅减小。代价是等效控制的精度会有所损失,因为进入了线性区以后,输出不再是严格的开关平均,而是带有一点“软”特性。角度的静态精度会受到影响,但实际测试下来,只要 Δ 选得合适,性能下降完全可以接受。

Δ 的选择经验值一般取额定电流的1%到5%。具体调法我习惯这样:先把 Δ 设得很小(比如0.5%额定电流),观察电流波形,如果抖振明显、噪声大,就逐步加大 Δ,直到电流波形光滑。然后再看角度估算是否受影响,如果角度静差变大,说明 Δ 太大,往回收一点。这一步是调参里最需要耐心的环节,每次只调一个参数,记录波形和角度误差,不要同时动好几个参数,否则出了问题都不知道是哪一步引入的。

4.3 低通滤波带来的相位滞后和补偿

低通滤波器“平均”出了反电动势,但也带来了相位滞后。一阶低通滤波器在频率 ωe 处的相位延迟为:

$$ \Delta\theta = \arctan\left(\frac{\omega_e}{\omega_c}\right) $$

这个相位延迟会直接叠加在估算角度上。如果转速低,延迟很小,问题不严重;转速高了以后,ωe 变大,延迟角可能达到十几度甚至几十度,这时候不补偿,力矩会明显偏弱,还容易发热。

补偿方法主要有两种。第一种是固定角度补偿,在额定工况附近取一个典型值,直接把 Δθ 加在估算角度后面。实现简单,但工况偏离后效果变差。第二种是动态补偿,用当前估计的电角速度 ωe_est 实时计算补偿角:

$$ \hat{\theta}e = \operatorname{atan2}(-\hat{e}{\alpha}, \hat{e}{\beta}) + \arctan\left(\frac{\omega{e_est}}{\omega_c}\right) $$

动态补偿的效果明显更好,代价只是多算一次反正切或查表。实际项目中滤波截止频率我一般取 500Hz 到 1kHz 之间,具体要看载波频率(通常10-20kHz)和最高电频率。固定补偿不是不能做,但只适用于工况很窄的电机,像压缩机这种转速范围宽、负载波动大的场合,还是老老实实用动态补偿。

4.4 速度估计和坐标系方向校准

角度出来后还需要速度。最简单的是角度差分:

$$ \omega_e = \frac{\theta_e[k] - \theta_e[k-1]}{T_s} $$

这个方法计算量小,但角度本身有噪声,差分后噪声放大,速度波形会比较毛糙。更平滑的做法是锁相环(PLL)法:把估计的角度误差经PI调节器收敛到零,PI输出就是电角速度。PLL相当于一个低通跟踪器,噪声小,动态也够,工业产品里用得更多。

坐标方向校正是无感FOC上线前必须做的一步。具体操作是:用编码器或者人工转动转子到已知位置,对比滑模估算角度和真实角度。如果发现 β 轴或者 α 轴的符号不对,通常的表现是启动瞬间电流方向就反了,电机猛烈抖动甚至反转。这时检查 Clark变换矩阵、反正切表达式和角度补偿项的符号,至少花10分钟把方向校好,不要指望程序自动收敛。方向错了,后面的所有闭环全是白搭。

5. 常见问题与排查技巧实录

5.1 角度抖动,力矩波动大

这是无感FOC调试里最常见的现象,表现为电流波形上叠加高频毛刺,电机运行噪声大,高速时还能听到“嘶嘶”声。大概率原因有四个:

  • 切换增益 k 过大,虽然鲁棒性好,但抖振分量太强,低通滤波器没能充分压制。
  • 边界层厚度 Δ 太小,饱和函数接近符号函数,抖振没有被有效平滑。
  • 低通滤波器截止频率偏高,高频分量透过多,反电动势估计毛糙。
  • 电流采样噪声大,经过观测器后被放大,反馈到角度上变成抖动。

排查顺序我建议这样:先把 Δ 加大一档,看电流毛刺是否减小。如果变化不明显,再把低通截止频率往下调低 30% 左右。两者都不行,再考虑降低 k。记住一条原则:能通过滤波解决的问题就不要堆高 k,过渡追求鲁棒性到头来还是要用滤波器来擦屁股,收益很低。

5.2 低速启动失败,电机抖动不转或反转

低速时反电动势幅值按比例下降。表贴式电机 500rpm 电频率大概就 30Hz 左右,反电动势可能只有八九伏,这时候开关噪声、采样误差、死区误差叠加起来,信号很容易被淹没。

解决方案有三条路。第一条是 I/F 强拖:不管位置,直接给一个旋转电流矢量慢慢加速,转速上来以后切换到闭环。第二条是高频注入法:通过高频激励信号的响应来识别转子凸极位置,低速性能优秀但算法复杂,调参难度大。第三条是混合法:低速用I/F,中高速切滑模。对大多数压缩机、风机、两轮车应用,混合法足够用,只做好“I/F强拖到什么转速切换”这一个点,成功率就很高。切换转速一般取额定转速的3%到8%,要留足反电动势比噪声高的余量。

5.3 高速角度滞后,力矩弱,转速爬不上去

高速时主要矛盾变成了低通滤波器的相位滞后。前面说了要用动态补偿,但还是有人会在高速段发现角度超前或滞后。检查两个点:一是补偿角度的计算用的是电角速度还是机械转速,单位错了角度会差很大;二是低通截止频率和最高电频率的比值,如果截止频率太低,比如只有最高电频率的1.5倍,相位滞后太大,仅靠动态补偿也可能不够。此时把截止频率适当调高,比如放到最高电频率的3-5倍。

另外还有一个经常被忽视的点:电阻随温度漂移。铜绕组的电阻温度系数约每摄氏度0.4%,冷态到热态差别能到20%。Rs 失配在低速时会直接体现在反电动势估计上,导致低速角度偏。这个修正也比较简单,用一个NTC测绕组温度,查表修正 Rs,效果立竿见影。

5.4 问题速查表

现象可能原因排查方向
电流毛刺大、噪声大k偏大、Δ偏小、滤波不足先加大Δ,再降滤波器截止频率
低速角误差明显死区未补偿、Rs失配、反电动势信噪比低做死区补偿,查Rs温漂
高速角滞后严重低通相位补偿不足开启动态补偿,调整截止频率
启动反转或抖动剧烈坐标方向反了用编码器或人工定位核对符号
估算角度跳变反电动势过零判断错误、低通输出谐振查符号定义,拉长滤波时间
切闭环瞬间电流冲击I/F强拖转速不够就切闭环提高切换转速、增加切换平滑逻辑

6. 实操心得与个人调试习惯

滑模观测器这个主题,原理讲起来不难,但真正调顺的时候问题永远比推导多。我习惯的调试流程是先仿真后硬件。在仿真里把理想电机模型搭好,滑模观测器跑通,确认反电动势波形形态正确、角度误差在几度以内,再上车。上车的第一个目标不是闭环,而是只开观测器,用编码器或测功机把真实角度读出来,和估算角度叠在一张示波器图里看。先静态对角度,再小转速对波形,确认相位补偿准确,然后才允许速度环和电流环闭环。

调参上我始终坚持“一次只动一个”的原则。滑模观测器涉及的参数本来就多:k、Δ、滤波器截止频率、相位补偿系数、速度PLL带宽,每个都互相影响。你要是一口气把Δ和k全改了,看到结果好,你也不知道是谁的功劳,看到结果差,更不知道是谁的问题。我每次改参数前会把当前波形截图,改完再截图对比,形成自己的调试日志。这个习惯救过我很多次,电机参数一换,翻日志就能快速定位该调什么。

最后分享一个让我印象挺深的项目:给一个制冷压缩机组做无感FOC,初期低速性能怎么调都不过关,电流噪声大,角度偏。折腾了三天,最后发现是PCB布局里电流采样线太长,采样信号被SVPWM开关噪声污染,ADC读进来的电流本身就有系统性偏差。观测器算法再好,喂给它的数据是脏的,神仙也救不回来。从那以后我每次调试无感项目,第一件事永远是拿示波器量采样点的信号质量,确认采样干净才碰算法。很多看似高深的控制问题,最后都栽在传感器和采样这种最基础的环节上。这条经验,值得你记下来。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询