YAOTU INSIGHTS

PMSM无感全速域控制:高频注入与滑模观测器切换的Simulink实践

PMSM无感全速域控制:高频注入与滑模观测器切换的Simulink实践
做永磁同步电机全速域控制这几年有个问题一直躲不掉不带编码器跑无感矢量控制既要零速起步带载又要高速飞奔还必须平滑过渡。高频方波注入法在零低速段表现很好滑模观测器法SMO在中高速段优势明显但没有一种方法能从零速一直包到额定转速。我常用的做法是让两套算法各自工作在擅长区间再用加权切换策略把两套估计结果平滑融合整套方案在Simulink里反复验证过多次。这篇就按为什么必须两套算法、分别怎么搭、怎么切换、调试踩了什么坑的顺序把建模思路和调参经验完整梳理一遍适合正在搭PMSM无感全速域仿真的工程师参考。1. 为什么全速域无感控制必须用两套算法切换1.1 单一算法的覆盖盲区先说一个容易被低估的事实无位置传感器控制的本质是找一个随转子位置变化的物理量来做观测。低速段和中高速段能用的物理量完全不同这才是切换方案的根本原因。中高速段最常用的观测量是反电动势。永磁同步电机的反电动势幅值正比于电角速度转速到10%额定以下时反电动势小到跟逆变器死区误差、采样噪声一个量级信噪比彻底崩掉。SMO的核心依赖反电动势所以它天然不适合零低速段。低速段能吃到的物理量是电机的凸极效应内嵌式永磁同步电机IPMSM的直轴电感和交轴电感不相等高频注入的电压激励会产生随转子位置变化的高频电流响应。但到了高速段基波电流变得很大注入的高频信号被基波电流和开关纹波淹没而且高频注入本身带来噪声和额外损耗继续用也不划算。这两种物理机制决定了没有任何一套观测器能独占全速域分工是物理规律逼出来的。1.2 两套算法的分工边界在实际工程里我一般把速度区间划分为三段速度区间使用算法物理依据主要问题0 ~ 5%额定转速高频方波注入法凸极效应Ld≠Lq噪声、凸极率低时鲁棒性差5% ~ 10%额定转速加权切换过渡区两套算法同时工作切换抖动、估计误差冲突10% ~ 100%额定转速滑模观测器SMO反电动势低通滤波带来的相位滞后这套划分不是拍脑袋定的。切换下限设得太低SMO在过渡区信噪比差估计的角度抖动大切换上限设得太高高频注入在高速段的损耗和噪声又不可接受。下面各节把这三种状态分别讲清楚。2. 零低速段的高频方波注入法原理与Simulink搭建2.1 方波注入的核心逻辑高频注入法的思路可以类比成给电机拍X光片你往估测的直轴方向注入一个高频电压由于转子真实位置和你估测位置之间存在偏差Δθ高频电流响应里就会携带Δθ的信息。把这个误差信息解出来喂给观测器就能把估计位置不断拉向真实位置。方波注入和更传统的正弦注入相比差别主要在信号形式上。正弦注入通常注入几百赫兹到一两千赫兹的正弦电压解调时需要带通滤波器把高频分量从基波里捞出来。方波注入则是每个开关周期在估测d轴上交替注入正负电压脉冲注入频率可以做到开关频率的一半比如10kHz开关频率对应5kHz注入频率。这样做的好处是电流响应是三角波形状简单采样和解调都可以跟PWM周期严格同步不需要窄带滤波器带宽也更高听感上比同频率正弦注入更安静一些。具体到实现假设电机稳定运行在某个转子位置θe我们估测的角度是θhat误差Δθ θe - θhat。在估测dq坐标系下注入方波电压Vdq_inj由于真实d轴和估测d轴之间存在夹角注入的高频电压会有一部分泄漏到q轴上。经过推导q轴高频电流分量的符号和大小与Δθ近似成正比。这就是整个位置观测的信号基础。2.2 位置误差解调与观测器设计解调过程的工程实现比数学推导看起来要朴素得多。我在Simulink里是这样搭的高频电流响应是叠加在基波电流上的第一步要先把高频分量和基波分量分开。因为方波注入的周期是固定的2个开关周期我直接在载波中断里采样q轴电流i_q相邻两次采样做差分Δi_q i_q(k) - i_q(k-1)。基波电流在两个相邻开关周期内变化很小差分之后基本被消掉剩下的主要是高频注入电流的变化量这个过程本身就是一个天然的隔直滤波器。然后把这个差分值乘以注入电压的符号正脉冲乘1负脉冲乘-1再做一次低通滤波就得到了与位置误差Δθ成正比的误差信号ε。这一步乘法本质上是相干解调把高频载波从信号里搬回基带。最后用PI型观测器把ε收敛到零ω_hat Kp·ε Ki·∫ε dt θ_hat ∫ω_hat dt也可以直接用PLL结构把ε作为鉴相器的输出观测器输出转速和角度。我在仿真里习惯用PI观测器而不是纯PLL因为PI观测器对转速突变的跟随性更好调参也更直接。需要提醒的是高频注入法的误差信号在Δθ等于0和180度时都为零存在二倍角模糊。也就是说理论上观测器可能收敛到反方向的位置。实际工程中初始定位通常靠预定位脉冲先注入一个固定方向的d轴电流把转子拉到一个已知角度或者磁极性判别来解决。仿真里为了省事我一般给定初始θ_hat接近真实值但调试时仍然要注意验证收敛性。2.3 仿真建模中的关键参数我调试时用的是一台2.2kW的内嵌式永磁同步电机的参数下面这些值比较有代表性参数数值直流母线电压310V额定转速3000rpm极对数4定子电阻Rs0.958Ωd轴电感Ld5.25mHq轴电感Lq12.4mH永磁磁链ψf0.1827Wb用这个参数算一下注入电流的斜率如果注入幅度Vinj取60Vd轴高频电流的变化率大约是60V/5.25mH ≈ 11.4A/ms半个注入周期100μs内电流变化约1.1A。这个值明显偏大会带来明显力矩脉动所以实际注入幅度我通常从30V左右开始调对应半个周期内约0.57A的高频电流变化兼顾信噪比和扰动。Simulink模型里注入电压的加法位置很关键。我建议把方波注入信号加在电流环PI输出之后、SVPWM模块之前而不是直接加在电流环的给定上。如果加在电流环给定前面电流环会把它当成指令去跟踪PI调节器带宽和注入频率互相纠缠很容易发散。加在PI输出之后就只是叠加了一个高频电压命令电流环不会去纠正它。采样时刻也要严格对齐q轴电流的采样点放在每个PWM周期结束时刻避开上下桥臂导通的开关瞬间仿真里这一点直接决定解调信号的干净程度。3. 中高速段的滑模观测器SMO转子位置估算的工程实现3.1 反电动势模型与滑模面设计过了低速过渡区之后反电动势已经足够大SMO就开始发挥作用。SMO的设计思路是先把电机的电压方程写成αβ静止坐标系下的形式然后构造一个电流观测器用滑模控制律把观测电流和实际电流的误差压到零滑模控制量的等效值就包含反电动势信息。IPMSM在αβ坐标系下的定子电压方程可以写成vα Rs·iα Ls·diα/dt eα vβ Rs·iβ Ls·diβ/dt eβ其中eα -ψf·ωe·sinθeeβ ψf·ωe·cosθe角度θe就是我们要估的转子电角度。这里Ls在严格意义上是跟转子位置有关的但工程上常用平均值Ls (LdLq)/2近似仿真验证下来在凸极率不太夸张的电机上是能用的。电流观测器写成dîα/dt (-Rs·îα vα - zα) / Ls dîβ/dt (-Rs·îβ vβ - zβ) / Ls其中zα、zβ是滑模控制律我通常用饱和函数sat(·)代替理想符号函数sign(·)zα K·sat(îα - iα) zβ K·sat(îβ - iβ)当滑模面s î - i收敛到零之后zα、zβ的等效控制量就近似等于反电动势eα、eβ。把zα、zβ经过低通滤波得到连续的等效反电动势估计值再用atan2就能算出转子位置θ_smo atan2(-êα, êβ)注意不同资料里反电动势的正负号定义可能不同实际接线时先跑开环对一下角度方向这个坑很多人踩过。3.2 低通滤波与相位补偿的取舍滑模控制天生带有抖振z信号里全是高频开关分量必须低通滤波。但低通滤波会引入相位滞后一阶低通滤波在频率ωe处的相位滞后约为atan(ωe/ωc)ωc是滤波截止频率。转速越高滞后越严重。我在仿真里通常把低通截止频率放在最高电角速度的2到3倍然后做速度相关的相位补偿。最简单的补偿方式是查表加角度偏置θ_comp θ_smo k_comp·ω_hat。更优雅一点的做法是把相位滞后模型并进观测器里用状态观测器直接估计出无滞后的角度但工程上查表加偏置已经够用关键是补偿量必须随转速连续变化不能突变。另一个实用技巧是用连续可导的饱和函数或sigmoid函数替代理想符号函数。理想符号函数在离散实现时容易引起极限环振荡换成平滑的饱和函数后抖振明显减小滤波器可以选更高截止频率相位滞后也相应变小。3.3 SMO仿真模块的接线与调试在Simulink里搭SMO我建议直接用S-Function或者MATLAB Function写离散化方程而不是堆一堆Continuous模块。原因很简单连续模块在固定步长仿真里数值积分误差不好控制离散化之后每一步怎么算清晰可控。模块的输入是电压命令vα、vβ和采样电流iα、iβ输出是估算角度θ_smo和估算转速ω_smo。电流采样坐标变换用的角度是估算角度还是真实角度这里有个细节SMO本身用的是αβ静止坐标系vα、vβ和iα、iβ都从三相采样直接变换得到不需要转子位置。但如果SMO内部还需要d轴电流做别的计算那就得注意别把估算角度和真实角度混用否则会产生耦合误差。SMO滑模增益K的取值原则是K必须大于反电动势的最大值加扰动余量才能保证到达条件成立。按前面那台电机算最高转速3000rpm、4对极时电角速度约1256rad/s反电动势峰值约ψf·ωe ≈ 229V。考虑到母线电压利用率和相电压幅值限制K取250~300量级在理论上够用但实际仿真里取这么大的K会让抖振非常剧烈我一般配合饱和函数把稳态增益降下来取100~200之间再根据低速段的表现微调。4. 加权切换策略如何平滑过渡不抖车4.1 切换区间划分与权重函数设计两套算法各自都能干活了剩下的核心问题是怎么从注入法切到SMO。最简单的做法是硬切换——低于某个转速用注入法高于某个转速突然换成SMO。但我第一次这么试的时候电流直接从正常值跳到限幅值母线电压都塌了。原因很直观两种观测器各自有估计误差切换瞬间角度给定跳变电流环还没来得及反应d轴和q轴就乱套了。所以必须用加权切换。我在5%~10%额定转速之间设一个过渡区在这个区域内两套观测器同时运行输出按权重融合。具体参数额定转速3000rpm过渡区起点ω1150rpm终点ω2300rpm。定义归一化系数t (ω - ω1) / (ω2 - ω1)限制在[0, 1]范围内。权重函数我建议不要直接用线性函数而是用smoothstepw 3t² - 2t³线性权重的导数在起点和终点有跳变相当于切换加速度突变容易在电流波形上留下毛刺。smoothstep的导数在t0和t1处都是零过渡更柔和。4.2 切换过程的位置与速度衔接位置和转速的融合看起来像加权平均但里面有坑ω_est (1-w)·ω_inj w·ω_smo转速做直接加权平均没问题角度不能直接加权平均。角度是周期量假设注入法估计350度、SMO估计10度真实位置在0度附近直接按权重算平均会得到180度左右完全错乱。正确的做法是把两个角度都转成sin和cos分量再融合θ_est atan2( (1-w)·sinθ_inj w·sinθ_smo, (1-w)·cosθ_inj w·cosθ_smo )这个操作本质上是把角度看作单位圆上的点先做向量插值再取相位角保证过渡过程中角度连续且不会跨周期跳变。这个细节我强烈建议在仿真里试一下把过渡区拉长到几秒钟观察一下融合角度是不是单调平滑的如果直接用角度平均你会发现明显的甩鞭现象。4.3 切换标定与边界测试切换区的标定我只相信一种方法让转速从零缓慢升到20%额定全程记录两个观测器的估计角度和估计转速放在同一张图里对比。正常的曲线应该是两条曲线随真实位置同步摆动误差都在几度以内。如果在某个转速点SMO角度开始大幅抖动或者明显偏离注入法角度说明这个点的信噪比还不够过渡区起始点要往上调或者SMO的滤波器参数要再改。这里有一个必须加的保护逻辑两套观测器的角度差超限时禁止切换。我在切换模块里加了一个比较器如果|θ_inj - θ_smo|超过30度电角度就保持当前权重不变同时把速度环给定拉低等两个角度重新收敛到一致后再继续过渡。这个逻辑平时不触发但一旦触发能避免一次灾难性的电流冲击。另外从上往下减速穿过过渡区时也一样要加权而且需要注意迟滞。如果升速时在300rpm切完降速时也正好在300rpm切回很容易在临界点附近来回振荡。我给切换逻辑加了大约20rpm的迟滞升速到320rpm才完全切到SMO降速到280rpm才开始切回注入法。5. 仿真调试中的实际踩坑与调参经验5.1 方波注入调试中的发散问题我在第一次搭方波注入时遇到的典型问题是观测器角度来回振荡甚至直接发散。排查了一圈根因基本都在采样和解调的时序上。最容易犯的错误是采样时刻和注入脉冲边沿没有严格对齐。如果采样点落在电压跳变沿附近采到的电流值包含了开关瞬态差分信号里全是毛刺误差信号ε的信噪比会很差。解决方法是把采样点固定在PWM计数器的峰值或谷值点也就是每个开关周期中间避开电压跳变。另一个隐蔽问题是注入信号和电流环PI的交互。前面说过注入电压要加在电流环输出之后但如果电流环PI的带宽设得太高比如超过注入频率的1/10PI输出响应本身就会带有明显的高频分量和注入信号叠加后造成电流畸变。我把电流环带宽控制在1kHz以内注入频率5kHz两者之间有五倍间距基本不会打架。注入幅度的调法也有讲求从小往大调每次加10V观察稳态下的位置误差。有个容易忽略的指标是母线电压利用率——注入幅度太大时电压命令加上注入量可能超过SVPWM的线性区导致电流波形出现限幅削顶这时候位置误差反而变大。我在310V母线上实测方波注入幅度超过80V基本就开始出现饱和畸变所以正常工作点都设在40~60V之间。5.2 SMO在低速段的相位滞后问题SMO在中高速段表现稳定但在过渡区靠近低速端时有两个问题叠加反电动势小导致信噪比低低通滤波相位滞后明显。这两个问题加起来会让SMO估出来的角度在过渡区低速端比真实位置滞后十几度甚至更多。滞后带来的后果是坐标变换用了一个偏后的角度真实的d轴电流没有被完全解耦到d轴上q轴电流里混入d轴分量表现就是力矩输出下降、转速闭环响应变慢。我的处理方式分两步。第一步在SMO输出增加按转速查表的相位补偿补偿量在过渡区低速端最大随着转速升高逐渐减小。第二步严格控制低通滤波器的截止频率不要过低我习惯取最高电角速度的3倍以上宁可多留一点抖振也不能让相位滞后在过渡区失守。抖振可以用饱和函数和适量的滤波残差处理相位滞后却是每增加一度都要靠补偿去还得不偿失。5.3 切换点抖动与电流冲击处理最后说切换点的电流冲击。即使做了加权切换我在加速过程中还是偶尔会看到过渡区电流有明显波动一开始以为是权重函数不平滑后来发现是转速估算的问题。加权切换的权重取决于转速而转速本身来自观测器。过渡区里注入法和SMO的转速估计会有几十rpm的误差如果直接用某个观测器的转速去查权重权重会在过渡区里抖动导致角度融合比例来回晃。解决办法是把参与权重计算的转速先经过一个低通滤波时间常数取20~50ms让权重变化速度远远慢于电流环的响应速度。这样即使转速估计有小幅波动权重也不会跟着剧烈变化。还有一个我后来才意識到的问题过渡区里两个观测器同时运行注入法的高频电流会和SMO的电流观测器共享同一组采样电流。高频分量混进SMO的电流误差里滑模控制律会被污染位置估计噪声变大。我的做法是在SMO的电流输入前加一个简单的陷波器把注入频率点附近的能量滤掉。对仿真来说这只是一两个数字滤波器模块但对整体稳定性贡献非常大。最后再说两句整套方案从零速到额定转速完整跑下来之后我体会最深的一点是切换策略的工程量不亚于任何一个观测器本身。高频注入和SMO各自是相对成熟的算法真正决定项目成败的往往是过渡区的细节——采样时序、权重函数、相位补偿、角度差保护每一个都是单独拿出来都能写一整篇踩坑记录的问题。如果你也在搭类似的全速域无感控制仿真我建议先把两个观测器各自调稳再去做切换。先让注入法在0~5%转速下稳态误差小于2度让SMO在20%以上转速稳如磐石然后再花时间去磨过渡区。千万别想着切换做好了能掩盖观测器的问题——加权融合只是把两个有问题的信号平均了一下不会让烂信号变好只会让两个烂信号一起拖垮整个系统。