☰
PMSM全速域无传感器控制:方波注入+SMO加权切换实战解析
2026/10/21 1:03:35 网站建设 项目流程

做电机控制的同行,应该都有过这种体会:PMSM无传感器矢量控制,难的不是算法本身,而是怎么把零速到高速一整段都稳定跑起来。低速没有反电动势、中高速有反电动势但抖动大,单一算法根本覆盖不了全速域。最近我把高频方波注入法、滑模观测器SMO和过渡区加权切换这套方案在Simulink里完整搭了一遍,从建模到调试踩了不少坑,趁着周末整理成文,把模型思路、参数整定和排错记录都摊开讲,给正准备碰全速域无传感器控制的朋友一份可以直接抄作业的参考。

1. 全速域控制到底在解决什么问题

1.1 单靠反电动势的方案为什么行不通

永磁同步电机无传感器控制的核心逻辑,是从电机的电压电流信号里面把转子位置和转速“算”出来,而不是靠编码器去量。几乎所有基于反电动势的方法,包括滑模观测器SMO、扩展卡尔曼滤波EKF、龙伯格观测器,都遵循同一个物理前提:反电动势和转速成正比。E ≈ φf · ωe。转速越低,反电动势越弱,到零速附近,这个信号直接被电流采样噪声、死区非线性、逆变器管压降给“吃掉”了。实测下来,在额定转速5%以下,SMO的输出基本是乱的,角度估计误差能漂到几十度,这时候硬用反电动势方案,电机不是抖就是堵转。

反电动势方案在低转速区失效,和高频注入法在中高速区失效,刚好形成互补。转子位置信噪比随转速变化是物理规律,不是算法能改变的事实。高频注入法利用的是电机的凸极效应,也就是d轴和q轴电感差异带来的阻抗差异,只要电感不消失,这个差异在任何转速下都存在。不过转速高了以后,注入的高频信号会被反电动势和铁损严重污染,信噪比反而恶化,所以它也覆盖不了全速域。这就是为什么工程上要做“分区段控制 + 过渡区加权切换”。

1.2 全速域方案的整体架构拆解

我最后采用的架构,本质上还是id=0的矢量控制,也就是永磁同步电机最经典的FOC框架。核心变化在位置和转速估计这条反馈路径上,低速段采用脉振高频方波注入法,中高速段采用滑模观测器SMO,过渡区根据转速动态计算加权系数,把两个观测器的输出做平滑融合。电流环和速度环始终只有一个,不搞双控制环切换,这样避免了控制器参数在两个体系之间切换带来的不稳定性。

用一张模块图方便理解:母线电压 → 三相逆变器 → PMSM本体 → 电流采样 → Clarke变换 → Park变换 → PI电流调节器 → 反Park变换 → SVPWM。把这个闭环剖开,原来的“编码器角度”替换成三个模块:低速估计器(方波注入)、高速估计器(SMO)、加权切换逻辑。这两个估计器同时都在跑,只是不同速度段对最终角度输出的“话语权”不同。低速注入法话语权大,高速SMO话语权大,中间段两个一起修正。这样做的好处是,任何一个转速下,切换都是连续无感的,而不是“咔哒”一下断掉再换路。

注意:这个方案适合内置式PMSM(IPMSM),因为必须依赖Ld ≠ Lq形成的凸极效应来提取位置。表贴式PMSM电感差异太小,要用凸极率配合饱和效应才能勉强工作,效果会差很多。

2. 零低速段:高频方波注入法的建模思路

2.1 为什么选方波而不是正弦注入

提到高频注入,很多教材写的都是正弦注入,注入信号是sin(ωh · t),然后从电流响应里解调出一个低频包络信号。这样做可行,但问题在于正弦注入的注入频率不能太高,受限于带宽和信号处理复杂度,一般在载波频率的1/10以下。注入频率低了,位置观测器带宽就只能做到几十赫兹,动态响应很慢,带载的时候容易“转不动”。

方波注入的做法完全不同,它向估计d轴注入的不是连续正弦波,而是一个正负交替的方波电压,占空比固定,方向每隔一个控制周期翻转一次。方波在频域上能量集中在基波和奇次谐波上,没有连续频谱,而且解调不需要乘法器加低通滤波再相位对齐那一套,直接对相邻两个周期的电流差值做简单代数运算就能提取位置误差。这说明方波注入的实际注入频率可以比正弦注入高一个量级,观测带宽能到几百赫兹,低速动态性能会好很多。实测下来,只要采样同步做对,这个方案的电流纹波可控,位置波动也小。

方波注入还有个工程上的优势——不需要额外生成正弦信号源,每个周期用逻辑判断给个电压幅值就行,在DSP和FPGA上实现成本极低,仿真模型里一个Switch模块就能搞定。

2.2 注入信号与解调链路设计

具体到实现,我在估计d轴注入高频方波电压,幅值为Vh。每个PWM周期,注入电压的方向翻转一次。电流的响应在估计d、q轴都会出现。高频下电阻压降小,可以忽略,电压方程简化成电感模型,dq轴电流的变化率就是电压除以电感。关键是q轴的高频电流响应里包含位置误差信息。

位置误差定义为估计角与实际角的差Δθ = θ̂e − θe。推导化简之后,相邻两个控制周期q轴电流的差值Δîq与位置误差近似满足关系:

Δîq ≈ (Ts · Vh · (Ld − Lq)) / (Ld · Lq) · sin(2Δθ)

这里Ts是控制周期,Ld和Lq是交直轴电感。当Δθ很小的时候,sin(2Δθ) ≈ 2Δθ,也就是说这个电流差值是位置误差的线性信号。把这个差值乘一个增益系数,送给一个PI观测器或者锁相环,让误差收敛到零,就能锁住真实转子位置。整条链路就是“注入方波 → 电流采样 → 做差 → 归一化增益 → PLL/观测器 → 角度输出”。和传统正弦注入比,少了一整套带通滤波器、同步解调器、相位补偿器,参数少很多,调试友好得多。

需要注意的一点是,这里的电流差值计算要用同一桥臂相邻周期的电流采样结果,所以采样时刻必须对齐,否则会把PWM开关死区造成的电流毛刺载进误差信号里。

2.3 方波注入的几个关键参数

参数选择是这个方案能否跑起来的关键,我实测后把常用范围整理成了表:

参数推荐范围我的取值选择依据
注入频率载波频率的1/5~1/210kHz载波取2kHz越高观测带宽越大,但不能超过采样能力
注入幅值Vh额定电压的5%~15%8%太小信噪比不足,太大会增加转矩脉动和噪声
位置PLL带宽20~200Hz50Hz带宽越高响应越快,但噪声也越大
电流差值归一化增益由Ld、Lq和Ts反算公式计算消除不同电机参数带来的增益差异

调试的时候应该先固定载波频率,再把注入幅值从小到大加。用手摸电机轴,如果感觉发烫或者有明显的吱吱声,说明注入幅值过大了。在仿真里,可以先看Δîq这个信号在静态工况下是否稳定在一个零附近的小区间,如果这个信号波动超过±20%的额定电流,那大概率不是注入幅值问题,而是采样点没对齐。

最容易被忽略的是死区效应。方波注入在零低速时,电机相电流很小,死区时间会导致实际输出电压和给定电压不一致,这个误差正好落在解调链路里,会变成一个直流偏移误差,最终反映在位置上就是固定的角度偏移。工程上要么加死区补偿,要么在零低速段使用较大的注入幅值压住死区的影响。

3. 中高速段:滑模观测器SMO的设计要点

3.1 滑模观测器模型是怎么建出来的

转速起来之后,反电动势信号够强了,这时候再用高频注入反而是累赘,切换用SMO是标准操作。SMO的模型建立在αβ两相静止坐标系下,PMSM在这个坐标系下的电压方程是:

L_s · diα/dt = vα − R_s · iα − eα L_s · diβ/dt = vβ − R_s · iβ − eβ

其中eα、eβ是反电动势,包含转子位置信息。问题是,e是未知量,而方程里电流是已知量。SMO的思路是把反电动势当成“扰动”,用开关函数去重构它。构造电流观测器,让它跟随实际电流,同时用一个高增益滑模项强行抑制误差。滑模项的输出经过滤波后,就是反电动势的估计值,再求反正切就能得到转子角度。滑模观测器的工作机制可以理解为:一开始电流误差大,滑模项用力拉;一旦滑到滑模面上,电流误差稳定,此时滑模项的等效值就等于反电动势。

我实现的时候,核心公式更新如下。电流观测器:

d îs/dt = (1/L_s) · (vs − R_s · îs − u_s) u_s = k · sgn(îs − i_s)

这里的sgn是符号函数,k是滑模增益。滑模增益整定有讲究,它必须大于反电动势幅值的最大值,才能保证滑模条件成立。工程上我会取k = 2~3倍预估反电动势峰值,再配合转速做自适应,转速高了增益也跟着升,防止低速段增益过大引发严重抖动。

滑模面的等效控制信号u_s还会带有严重的高频抖振,因为sgn函数本身就含高频分量。我的做法是先让u_s过一个截止频率200Hz左右的低通滤波器,得到平滑的反电动势估计值,然后进入PLL提取角度。需要注意的是,这个低通滤波器对位置估计会引入相位延迟,转速越高延迟越大,所以后续要加相位补偿,否则切换进高速段后会出现角度越偏越多的情况。

3.2 抖振处理与相位补偿

抖振是SMO绕不开的问题。符号函数天然带来滑模抖振,体现在仿真波形上,电流估计误差会出现高频跳变,反电动势估计波形上有明显毛刺,转速估计波动可能达到±30rpm以上。处理抖振,工程上有两个主流方向:一是把sgn函数换成饱和函数sat(s),在边界层内做线性化;二是换用超螺旋滑模算法。饱和函数实现简单,我就是用它替换了sgn,选择边界层宽度时要注意折中,太窄抖振没抑制住,太宽滑模观测器退化成普通PI观测器,鲁棒性就丢了。

相位补偿这一块,我踩过重坑。SMO反电动势信号经过低通滤波,PLL又引入一部分延迟,两个叠加起来,转速1000rpm时角度滞后能到5~10度,转矩会明显下降。补偿办法是算一个提前角,角度补偿值正比于滤波器的相位响应。以我用的二阶巴特沃斯低通滤波器为例,截止频率fc,工作频率为fe,相位滞后可写为φ = arctan(fe/fc)(按一阶近似),把原始角度加上这个φ再送进Park变换。严格说,还要把PLL的延迟算进去,但我实际做法是,先常温下加补偿,再通过对比有无传感器模型的波形,微调补偿系数,直到电流波形畸变最小。

提示:SMO在低转速下先不要启用。反电动势太弱,滑模增益不好匹配,硬上也容易失控。我把SMO的使能转速阈值设在额定转速的5%~8%,这个区间正好和方波注入的可用上限衔接上。

3.3 反电动势角度提取的三个注意点

第一个注意点是反正切求角度的噪声问题。直接用atan2函数求角度,小噪声会被放大,尤其在反电动势过零点附近。我建议不要在SMO出来后直接atan2,而是把估计出的反电动势转成幅值,做归一化得到单位矢量,再进PLL。PLL本身有积分性质,能平滑噪声,效果比直接反正切稳得多。

第二个注意点是极性判定的问题。反电动势给出的角度是磁极位置,但如果初始启动时磁极方向估反了,电机就会反转启动。实际调试中,我遇到过加负载时位置估计出现180度偏差的情况,这是磁极极性问题。解决办法是在启动序列里做一个磁极检测脉冲序列,方向判断错了就加180度重来。这个在仿真里好排查,实测环境下很重要。

第三个注意点是滤波器的阶数和截止频率要随转速调整。如果截止频率固定不变,低速时滤波延迟小、高速时延迟大,那么相位补偿就不再准确。更精细的做法是把截止频率和估算转速做成联动关系,转速升高、滤波器截止频率同步升高,维持相位延迟在一个可接受的范围内。我在Simulink里是用一个带使能的子系统实现这个逻辑,直接对截止频率做线性映射。

4. 过渡区的加权切换策略

4.1 切换为什么会冲击

很多人直接把方波注入和SMO独立运行,到某个转速就一刀切切换,结果发现切换瞬间电流过冲,甚至触发过流保护。这是因为两个估计器的特性差异大:方波注入法依赖电感压降信号,动态响应慢,当前角度输出一般比较平滑,但抗动态冲击能力差;SMO依赖反电动势,响应快,但抖振明显。两个估计值之间天然存在相位差和幅值差。切过去的瞬间,角度估计可能跳变十几度,电流环看到的反Park变换角度错位,d轴和q轴分量混叠,电流自然就爆了。

更隐蔽的问题是转速估计的跳变。速度环的输出直接叠加到电流环,如果我切换的时候转速估计发生跳变,速度环会认为电机转速突变,立刻输出一个很大的电流请求,虽然时间很短,但足以让母线电压波动。所以切换策略不能只处理角度,速度反馈也需要同步做平滑处理。

4.2 加权系数的工程化设计

我采用的方案是在过渡转速区间内线性加权,这个区间我选在额定转速的10%到20%之间,覆盖大约一倍的转速跨度,给了两个估计器足够的“交接重叠区”。定义加权系数α:

α = (ω_r − ω_low) / (ω_high − ω_low)

当转速小于ω_low时,α=0,完全用方波注入法;大于ω_high时,α=1,完全用SMO。在区间内部,角度和转速都按同一个α做插值:

θ̂ = (1 − α) · θ̂_inj + α · θ̂_smo ω̂ = (1 − α) · ω̂_inj + α · ω̂_smo

这里θ̂_inj和θ̂_smo在进入加权环节之前,必须先做角度归一化处理。如果直接拿原始角度做算术平均,一个在350度的估计值和一个在10度的估计值,平均值算出来是180度,全错了。正确做法是先把两个角度都转到0~360度区间内,如果差值超过180度就自动加减360度做对齐,然后再插值。我在Simulink里专门写了一个功能块处理角度环绕,实测这地方最容易出莫名其妙的跳变故障。

加权切换还有一个顺序上的隐蔽细节,就是在切换过程中,速度环的反馈和角度估计必须是同一个占空比。也就是说,角度用了加权插值,速度反馈也一定要用同步插值出来的值,不能角度插值了但速度反馈直接用SMO的结果。两者时间上错开哪怕一个控制周期,切换期间就会有一阵明显的转速波动,我在调试中反复确认过这一点。

4.3 过渡区调试验证方法

调试过渡区,我建议用斜坡转速指令,不要用阶跃指令。例如仿真里从0rpm按200rpm/s的速率一直加速到额定转速,中间穿越整个过渡区间。观察两个关键信号:一是角度加权输出,看有没有突变尖峰;二是q轴电流指令,看切换期间电流是否出现超过正常工况的波动。

如果发现切换期间转矩有脉冲状跌落,多半是α变化太快,过渡区间太窄。对策是把ω_high和ω_low的差值拉大,比如从10%转到20%额定转速这个范围,让两个估计器有足够时间互相“磨合”。如果波形显示加权角度在高频抖动,这通常是因为SMO在过渡区下边界处已经提前介入了,而此刻反电动势信噪比还没上来,那就要把ω_low往上调,让SMO晚一点进入交接区。

5. Simulink整体仿真实现细节

5.1 仿真模型分模块搭建

整个仿真在Simulink中分成六大模块:三相逆变器、PMSM本体、采样与坐标变换、电流速度双PI环、SVPWM调制、位置转速估计子系统。位置转速估计子系统是核心,内部又分三条支路,方波注入支路、SMO支路、加权切换支路。为了让模型结构清晰,我建议用Goto/From标签传递信号,而不要用满是交叉线的信号线,不然参数排查时会疯掉。

我用的电机参数如下:定子电阻Rs=2.875Ω,d轴电感Ld=8.5mH,q轴电感Lq=25mH,转子磁链φf=0.175Wb,极对数np=3,额定转速1500rpm,额定电流4.2A,直流母线电压310V。这台电机对应的凸极率约2.9,方波注入的信噪比足够。仿真步长设成固定步长,开关频率10kHz,仿真步长定为1e-5s,每个PWM周期内采10个点,这样方波注入的高频电流变化能看见细节。好的采样是仿真模型能不能复现真实硬件行为的前提,步长太大会把高频信号直接平滑掉。

SVPWM模块我直接用了Simulink自带的或者其他开源实现方案,重点是输出上限要限幅,调制度不要超过1.0,否则逆变器会过调制,实际输出电压和给定电压不一致,位置估计误差随之而来。这个非线性误差在低速段影响尤其大。

5.2 PI参数怎么整定

PI参数我用的是仿真模型加频域带宽法整定再加微调的流程。电流环带宽取开关频率的1/10,也就是1kHz。电流环PI参数先根据电机电感和电阻的理论公式算初值,再用阶跃响应微调:速度环带宽取100Hz,整定顺序是先把电流环闭环调试好,再调速度环。

实际测试中,转速环比例增益调大的时候,过渡区切换瞬间的冲击也变明显了。原因是速度环响应快了,转速估计的微小跳变立即放大成电流指令波动。所以全速域无传感器控制下,速度环带宽不宜和编码器模式下一样激进,稍微调低一点对稳定性帮助很大。我在编码器模式下速度环带宽能到200Hz没问题,切到无传感器模式后压到100Hz,过渡区工况下系统稳定性明显好转。

电流采样延迟对仿真结果也有影响。在Simulink里直接用理想采样,是不存在延迟的,但真实硬件上采样到精确的角度输出之间有两个控制周期的延迟。建议在仿真中加入和硬件匹配的采样延迟环节,这样调试出来的PI参数移植到硬件上才不会差太远。

5.3 仿真工况设计

我把测试工况设计成四组,覆盖全速域控制的典型痛点:

工况给定说明
零速带载启动0rpm,额定转矩验证方波注入的静态控制能力
低速斜坡加速0→300rpm斜坡验证方波注入下低速动态响应
全速段斜坡跨越300→1500rpm斜坡验证过渡区加权切换平滑度
高速突加负载1200rpm稳态突加额定转矩验证SMO的高速抗扰性

零速带载启动是最容易让人崩溃的工况。模型启动的瞬间,还没有建立起位置估计,如果直接给一个额定转矩,电流环会短暂失控。我的处理是做一个开环强制定向对齐过程,先施加一个固定方向的定子磁场把转子拉到已知角度,再切换进闭环。这个过程大概持续0.1s,在仿真里实现非常简单,但很考验后面的切换逻辑,需要平稳过渡。

高速突加负载那个工况,重点看SMO的角度估计误差在转矩扰动后能不能快速收敛回正常范围。如果收敛时间超过0.2s,说明PLL带宽不够,或者滑模增益偏小,需要按前面说的方法同步调整。

5.4 关键波形怎么看

跑完仿真不要急着看转速波形就下结论,我先看三个中间量:方波注入解调出的Δîq信号、SMO等效反电动势估计值、加权系数α的实时曲线。

Δîq在零速稳态时应该是零附近小幅波动,如果出现明显直流偏置,说明存在磁极极性不对或者电流采样偏置。反电动势估计值在中高速应该是一个平滑的正弦波,如果满屏毛刺,检查饱和函数边界层和滤波器参数。α曲线应该是一条平滑的斜坡,中间没有跳变,如果α出现锯齿状波动,说明两个估速器的转速反馈在争夺控制权,这时候往往伴随转速波动,需要回看速度反馈是否做了同步加权。

还有一个非常有用的观察技巧:把角度估计误差(仿真里可以直接比较真实角度和估计角度)和q轴电流曲线叠在一张图上看。角度误差每波动一次,q轴电流必然跟着抖动。根据时延关系可以定位误差源是低速段还是过渡区。如果角度误差在高速段持续恒定偏移,那就是相位补偿不足;如果在过渡区出现周期性振荡,那就是加权系数和速度反馈失配。

6. 调试期的常见问题与排查记录

6.1 位置估计抖振大的三种诱因

我调试过程中,位置估计抖振大基本离不开三个原因。第一,注入幅值偏大,尤其在方波注入段,位置估计对注入信号非常敏感,幅值过大会在解调结果里引入非线性谐波,表现为稳态角度波动达到正负3度以上。处理办法是降低注入幅值,同时确认归一化增益没算错。第二,SMO的边界层宽度过窄,饱和函数起不到平滑作用,抖振直接穿透到PLL里。第三,电流采样同步性差。我遇到过仿真里一切正常但实际调试时位置抖振大的情况,原因就是采样点落在开关毛刺上,最后通过调节采样窗口错开死区时间解决。

排查这类问题,我有个从简到繁的顺序:先看解调信号本身,若是方波注入支路的Δîq抖得厉害,问题多半在注入环节;若反电动势波形差,问题在SMO;若角度输出抖但中间信号都正常,查PLL带宽和加权插值模块。

6.2 过渡区切换瞬间电流冲击怎么压下去

这个问题是全场最棘手的。我最初用直接切换,300rpm附近电流突冲到额定电流的2.5倍。改成线性加权后,过渡区电流冲击降到1.2倍,但工况恶劣时仍会偶尔出现尖峰。后来发现,问题出在两个估计器的动态响应速度不一致,单纯对角度做加权平均,跟不上各自的动态差异。解决方式是给加权插值后的角度输出加一个低通滤波,时间常数取5~10ms,把切换瞬间角度跳变的高频部分压平。

再一个有效手段是限制切换期间速度环输出变化率。我在速度环输出和电流环指令之间加了一个一阶惯性环节,切换过程给它1.5倍的标定变化率,让电流指令平缓过渡。这个方法牺牲了一点点动态性能,但换来了系统在整个速度区间的稳定,我觉得值得。本质上,过渡区的切换是能量换稳定,参数不能贪快。

6.3 堵转和超低速重载工况的强化措施

堵转工况对高频注入法是一个严峻考验。电机堵转时,反电动势为零,SMO必然失效,完全依赖方波注入。此时解调信号很小,增益又高,容易引发电流环振荡。我的做法是在堵转工况下把位置观测器的带宽降下来,同时限制速度环输出,不让电流指令超过安全值。同时,堵转时对注入幅值适当提升,确保转子位置能锁定,不然电机一松负载就飞了,或者反转。

对于超低速带载重载的工况,还有一个工程细节:d轴电流的给定不一定必须为零。在需要输出大转矩的极低速段,可以适当利用负d轴电流进行弱磁配合,提高凸极信号强度,改善位置观测器的性能。在仿真里可以用一个查表模块,根据转速和转矩指令查一个d轴电流偏置,加进电流环给定里。这个做法对提升低速重载鲁棒性有立竿见影的效果,值得试一试。

6.4 常见问题速查表

现象可能原因优先检查项
零低速位置抖动大注入幅值过大、采样点错位注入幅值、采样窗口
低速无法带载锁位磁极极性错误、PLL带宽过低初始定位、PLL参数
中高速角度滞后低通滤波相位未补偿补偿角、滤波器截止频率
切换瞬间电流过冲角度未做环绕对齐、速度反馈未同步加权角度归一化、加权插值
高速过载时失锁滑模增益不足、边界层过宽k值、饱和函数边界
全速段电流噪声大注入幅值大、SMO抖振明显注入幅值、饱和边界、滤波器
α曲线锯齿波动两路转速估计动态差异过大过渡区宽度、速度反馈加权

这套方案整体的调试难度曲线是U型的:低速段靠耐心调注入参数,高速段靠细致做相位补偿,真正决定系统上不上得了台面的反而是中间那段过渡区。过渡区的参数微调没有捷径,就是在斜坡工况下反复看波形、反复试探,直到α波形平滑、电流无尖峰、角度误差收敛,基本就成熟了。

我个人在实际操作中的体会是,把仿真当硬件用,每一个模块都当成真实电路去对待,采样延迟、死区、限幅这些细节都加进模型里,这样仿真里跑通的逻辑移植到真机上时,调试时间能缩短一半以上。这套全速域控制的完整链路调通之后,后续在这个基础上做弱磁控制、模型预测控制或者带载启动优化,都只是换菜谱不换锅,框架已经有了。

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

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

立即咨询