☰
IPM永磁同步电机无感FOC全速域:高频注入+SMO权重切换方案
2026/10/1 12:37:00 网站建设 项目流程

IPM永磁同步电机无感FOC,做到全速域稳定运行,最考验人的往往不是算法理论,而是启动那一刻的可靠性。转子初始位置不知道,直接给力矩,轻则反转,重则过流跳闸。我最近在TI TMS320F28335上完成了一套完整方案,版本代号TIDSP_F283xC2000_IPM_FOC_Sensorless_V1.0:零低速用高频注入识别转子初始位置,中高速切滑模观测器SMO,中间用权重切换平滑过渡。整套系统全程不带位置传感器,纯软件估算位置和速度。这篇文章把方案框架、调试细节和常见坑整理出来,希望能给正在做无感FOC的朋友一点参考。如果你手头是C2000系列DSP,或者打算从STM32往TI平台迁移,这篇内容可以直接当调试笔记用。

1. 项目定位:一套能跑的IPM无感FOC全速域方案

1.1 从启动痛点说起:IPM转子初始位置为什么绕不开

先聊一个所有无感FOC工程师都会撞上的问题:零速启动。表贴PMSM至少还能用I/F强拉启动,IPM如果不知道转子初始位置,SVPWM生成的空间电压矢量只要方向错了一半,转子就会被推向错误方向,轻则电机“咔哒”一声反冲,重则启动瞬间过流保护触发。原因在于IPM是凸极结构,d轴和q轴电感不一样,磁路饱和效应也强,位置角度和电磁转矩之间的关系比表贴机更敏感。没有初始位置,就无法在静止坐标系下正确分配Id和Iq,更别提让电流环在启动瞬间就把矢量角对准转子磁极。

反电动势观测器在零速和极低速下基本失效,因为反电动势幅值和转速成正比,转子不动就完全没有信号。开环强拖也可以,但要求带载启动的工况就很危险。所以必须在静止状态下先辨认转子磁极方向,这是整个全速域方案的地基。高频注入法就是解决这个问题的通用手段,尤其IPM因为凸极率明显,高频电流响应里携带的位置信息比表贴机更丰富,辨识结果也更容易做准。

1.2 整体框架:高频注入、SMO与权重切换如何分工

这套V1.0方案的控制架构按速度区间分成两段:零速到大约5%~10%额定转速,用高频电压注入法同时做初始位置辨识和低速闭环角度跟踪;10%到20%额定转速之间,高频注入和滑模观测器的估算结果按权重融合;20%额定转速以上,完全切换为SMO输出。低频段不能用SMO的原因很简单,反电动势太弱,信噪比不够,滑模面很难稳定;高频段不能用高频注入的原因也很现实,注入频率要远高于基频,速度一高,基频接近注入频段,滤波器更加难设计,而且高频信号产生的额外损耗和转矩脉动会变大。

权重切换不是简单一个if-else,而是把两个观测器的角度和速度按连续系数混合,让过渡过程平滑连续。我在这套方案里用的权重系数是速度的线性函数,并加了滞环,防止电机在切换点附近来回抖动。下面各章会逐步拆解具体实现方法。

2. 基于TI F28335的硬件与外设配置要点

2.1 主控选型与最小系统设计

TMS320F28335是TI C2000系列里很经典的浮点DSP,主频150MHz,带FPU,跑双采样FOC加上高频注入和SMO的运算量仍有富余。选这颗芯片不是因为算力最强,而是它的ePWM、ADC和中断机制非常适合电机控制。相比F2806x,F28335的ADC精度和PWM分辨率足够,调试工具链CCS也不算难上手。我这里用的开发板是自制板,主控最小系统包含晶振、电源、JTAG、以及连到驱动板的模拟量接口和PWM接口。

需要特别提醒的是F28335的ADC前端是单端输入,不是差分输入,所以电流采样调理电路要在外部做好偏置和缩放。我的板子三路相电流通过LEM霍尔传感器变成电压信号,再经运放抬到0~3V范围送进ADC,这样12位分辨率能覆盖整个电流波形。母线电压采样用电阻分压加电压跟随器,同一个ADC模块采集。另外一定要把ADC的基准电压滤波做好,否则采样值会跟着开关噪声跳,无感算法对电流反馈质量非常敏感。

2.2 电流采样、PWM触发与ADC同步的时序约束

FOC的电流采样必须和PWM开关周期同步。我用的PWM载波频率10kHz,计数器工作在增减计数模式,这样PWM中心对齐,ADC在计数器下溢或周期匹配时刻触发采样,正好采到三相电流的瞬时值。许多新手在这里踩坑:F28335的ePWM触发ADC需要配置SOC信号,同时ADC的采样窗口要足够长,但也不能太长,否则会把开关纹波采进去。我的经验是把ADC采样窗口设成半个PWM周期以内,并且把SOC信号延迟到PWM中心附近,也就是计数器的峰值点,因为这个时刻逆变器下桥臂全部导通,电流检测最稳定。

PWM死区也必须配置好。IPM模块的上下管切换如果没有死区,直通炸管就是一瞬间的事。我在F28335的ePWM里用死区子模块设置上升沿延迟和下降沿延迟,典型值300ns。死区会影响电流波形的过零畸变,也会在无感算法里引入低频谐波,后面SMO调试时如果发现电流波形有“毛刺”,先怀疑死区补偿是否有问题。

2.3 保护逻辑与母线电压采样

无感FOC对电压前馈依赖挺大,母线电压不能只做过压保护用。我在每个PWM周期都会读取母线电压,参与SVPWM的过调制处理和反电动势幅值计算。保护逻辑方面,除了DSP内部的比较器,外部驱动板上最好有硬件过流比较电路,一旦超过阈值直接封锁PWM输出,不经过DSP中断处理。F28335的TZ模块可以在硬件层面强制PWM输出高阻,这是电机控制里必须用起来的保护通道。

3. 高频注入法:零低速转子初始位置辨识实操

3.1 注入方式选择:旋转电压注入还是脉振注入

高频注入主要有两种实现:旋转高频电压注入和脉振高频电压注入。旋转注入是在静止αβ轴系上叠加一个旋转的高频电压矢量,比如幅值相同、频率固定的正弦电压,高频电流响应里会包含正序和负序分量,负序分量里带着2倍转子位置信息,通过外差法和锁相环就能解出转子角度。脉振注入则是往估计的d轴方向注入高频信号,让d轴磁路产生饱和效应,从而通过高频电流的d轴分量误差修正角度。

我的V1.0版本在启动阶段采用旋转高频电压注入,原因很简单:启动时完全没有转子角度先验值,脉振注入需要一个初始参考方向,鸡生蛋问题。旋转注入不依赖初值,直接在静止坐标系注入,通过信号解调就能得到位置角。低速连续运行阶段也沿用了旋转注入,没有切换成脉振,因为旋转注入在全低速段做锁相环跟踪很稳定,而且IPM凸极率足够高,负序信号很清晰。如果电机换成表贴PMSM,凸极率低,旋转注入的负序信号很弱,建议改成脉振注入加初始位置辨识的组合。

3.2 信号参数怎么定:注入频率、幅值与滤波器设计

高频注入有三个核心参数:注入频率、注入幅值和滤波器带宽。注入频率必须远高于基波频率,同时要低于PWM采样频率的1/2,还要和电流环带宽错开。我的PWM是10kHz,注入频率选了1kHz,相当于载波的1/10。为什么不是2kHz或500Hz?如果太低,比如500Hz,低速段基频很快靠近注入频段,滤波器做不干净;如果太高,比如2kHz,采样周期内的高频周期点数太少,且电流环带宽如果已经设到500Hz,两者会产生耦合。一般经验是注入频率取电流环带宽的3~5倍,电流环带宽500Hz,注入频率1kHz左右比较合理。

注入幅值需要在“信噪比”和“副作用”之间平衡。太大,电机能听到明显的“嗡嗡”叫声,转矩脉动增加,甚至可能把转子拉动;太小,高频电流响应被PWM开关噪声淹没。我这里的调试经验是先按额定电压幅值5%给,再用示波器看高频电流响应幅值,逐步调整到能稳定解调出角度为止。常见范围在额定电压的3%~10%,具体跟电机电感大小和母线电压有关。

滤波设计是高频注入的核心。提取高频电流分量时,我用带通滤波器,中心频率1kHz,带宽控制在200Hz左右。带通可以用二阶IIR实现,F28335浮点算力足够。解调之后还需要低通滤波器提取位置误差信号,截止频率通常100~200Hz。这套滤波器会带来相位延迟,锁相环带宽也不能设太高,否则容易振荡。

3.3 极性判断:从位置角到N/S极辨识

旋转高频注入解出来的角度是2倍电角度,存在π的模糊性,也就是说只能得到转子磁极轴线所在直线,不知道N极到底朝哪边。如果不解决极性,启动时有一半概率把N极和S极搞反,电机照样反转。解决极性最可靠的办法是短时施加d轴脉冲电压,通过电流响应大小判断磁极方向。原理是IPM的d轴磁路易饱和,电流方向与N极一致时,磁路更饱和,等效电感变小,同一个脉冲电压产生的电流变化量更大;方向反了则电流变化量小。

实际操作时,先用高频注入解出候选角度θ,然后分别在该角度的正方向和180度反方向各施加一个短时电压脉冲(比如持续1~2ms),分别记录峰值电流,电流峰值更大的方向就是N极方向。这个判断方法我实测下来非常可靠,即使低速带载也能辨识。需要注意施加脉冲的幅值和时间要控制好,目的是测试磁路而不是让电机旋转,如果电机在辨识过程中发生微小转动,则说明脉冲幅值太大或持续时间太长。还有一个技巧:可以用高频注入解调出的角度和锁相环速度的积分角度做交叉验证,如果启动后一小段时间内速度方向出错,立刻退出重新辨识。

3.4 初始位置辨识后的启动验证

辨识完成后不要急着直接切到当前环闭环。我的习惯是先给一个很小的电流角指令,比如在辨识角度上只加一个很小的固定电流,让电机尝试跟随时观察转子是否移动。如果位置角度准确,转子会平稳朝目标方向微动;如果辨识错误,启动瞬间电流和母线电压会有明显跳动。有条件的话,可以临时装一个编码器或者旋变做对照,把辨识角度和真实角度打印出来比对。无感方案最怕“看似在闭环,实际角度误差很大”,这种软故障很难直接看出来,所以在前期调试中必须做位置准确性验证。

4. 滑模观测器SMO:中高速段的无感核心

4.1 SMO状态方程与离散化实现

中高速段采用滑模观测器,核心思路是构造一个电流观测器,并利用滑模控制让观测电流收敛到实际电流,然后从滑模控制律里提取反电动势信息。对于IPM电机,不能直接用Ld=Lq的表贴模型,否则会引入角度误差。我这里的方案采用扩展反电动势模型,把IPM的凸极效应折算进反电动势项里,这样SMO的方程结构仍能保持和表贴机类似的形式。

静止坐标系下IPM电压方程可以写为:

uα = R iα + Ld d(iα)/dt + eα
uβ = R iβ + Ld d(iβ)/dt + eβ

其中eα和eβ包含基波反电动势和磁阻转矩相关的扩展项。更常用的做法是把扩展反电动势相当成一个综合量,包含转速、永磁磁链和电感差的交叉项。SMO观测器写成电流估计形式,电流估计误差的滑模面s = [iα_hat - iα; iβ_hat - iβ],用符号函数或饱和函数作为滑模控制律,反馈到观测器方程中。观测电流收敛后,滑模控制律的输出就等效于反电动势。离散化我直接用前向欧拉法,采样周期100μs,电流环和观测器都在同一个PWM中断里更新,计算时间大约占F28335一个中断周期的40%左右,还留有余量。

4.2 反电动势提取、角度补偿与低通滤波

滑模控制律输出的是高频抖振信号,不是干净的正弦反电动势,必须先低通滤波提取平均分量,再用atan2求出转子角度和速度。低通滤波器参数很关键,截止频率太低会让反电动势幅值衰减、相位滞后变大,角度误差变大;太高又滤不净抖振,角度波形毛刺多。我用的截止频率大约500Hz,然后根据当前转速估算相位滞后角,对最终角度做补偿。补偿公式近似为:

θ_comp = atan(ωe / ωc)

其中ωe是电角速度,ωc是低通截止角频率。角度补偿看起来简单,但如果不做,高速时角度误差会随转速线性增大,负载稍一变就容易失步。我调试时在额定转速下对照编码器读数,确认补偿值基本准确后,再做无感带载实验。

角度计算的另一个坑是atan2的展开和滤波。F28335的数学库支持快速atan2,但角度跳变从接近π到接近-π时需要处理,防止速度估计出现尖峰。我用的是角度差折叠法:将当前角度与上一拍角度之差折叠到[-π, π]区间,再除以采样时间得到速度,这样就不会因为角度跨周期导致速度突变。

4.3 SMO增益与抖振抑制

SMO的滑模增益必须大于反电动势幅值,否则观测器收敛不了;但增益太大又会放大噪声和抖振,导致估计角度剧烈抖动。经验是先按额定转速下的反电动势幅值估算一个初始增益,再乘以1.5~2倍裕量,然后根据实际波形微调。比如额定转速对应的反电动势幅值是50V,滑模增益可以先给75~100V。

直接使用符号函数会产生严重抖振,尤其在电流采样带噪声的情况下。我改用了饱和函数或Sigmoid函数替代符号函数,边界层宽度参数设置需要细腻。边界层太大,滑模控制律退化成线性控制,反电动势提取精度下降;太小,抖振抑制不明显。我调试时从0.01开始逐步增大,直到电流观测误差的波形变成平整边界且theta估计光滑为止。换来的代价是等效的观测带宽有损失,但以高速段的反电动势强度来说,完全够用。

5. 低速到高速的权重切换策略

5.1 切换为什么不能一刀切

很多初学者做无感FOC,习惯性写一个if语句:转速小于阈值用高频注入,大于阈值用SMO。这种硬切换很难稳定。因为高频注入和SMO是两个独立观测器,它们的角度和速度估计都存在误差,而且误差方向也不一致。切换瞬间,两个估算角度可能差十几度甚至更大,直接切换相当于给电流环一个角度阶跃,电流立即冲击,轻则电流尖峰,重则过流失步。权重切换的核心思想是让两个观测器的输出在一个速度区间内逐渐融合,把阶跃变成平滑过渡。

5.2 权重函数设计与切换平滑化

我定义的切换逻辑是:当转速绝对值低于0.1pu(额定转速的10%)时,权重weight=1,完全使用高频注入的输出;当转速绝对值高于0.18pu时,weight=0,完全使用SMO;中间区间,weight按线性或者S曲线从1降到0。角度融合公式不是直接加权平均,而是先计算角度差Δθ = θ_smo - θ_hfi,把Δθ折叠到[-π, π],然后:

θ_est = θ_hfi + weight * Δθ

这样即使两个角度差达到约300度,也能得到连续的估计角;如果直接用分数角度加权,跨越2π边界时会闪跳。速度估计也是类似加权,但速度环本身有低通滤波,所以速度加权可以简单得多。

权重函数需要考虑正反转。我用转速的绝对值来查询权重,并且加滞环:进入切换区后,转速必须降到0.08pu以下才完全切回高频注入,防止在转折点附近反复横跳。滞环宽度不能太窄,否则速度波动就会反复切换;但也不能太宽,否则低速区已经进入SMO工作范围还在用高频注入,浪费带宽。我调下来0.02~0.03pu宽度比较合适。

5.3 切换点与死区滞环设置

切换点的选择取决于两个观测器的实际适用范围。如果电机凸极率较小,高频注入信号可能只适合于很低的速度,那么切换点可以提前;如果SMO低速性能调得好,也可以让切换点提前。我有个土办法:在电流波形上同时观察高频注入和SMO的角度估计。当转速升高到高频注入角度开始出现明显噪声时,记下这个速度;当转速降到SMO角度出现打滑或抖动时,记下另一个速度,两个速度的中间区间就是比较合理的切换区。

另外,切换过程中电流环带宽可能需要适当降低一点,给两个观测器的融合过渡留出更多裕量。否则权重变化过程中的微小角度误差会被高带宽电流环放大成电流尖峰。我的做法是在权重切换区间,把电流环带宽从600Hz降到400Hz,切换完成后再恢复。这个策略实测下来能明显改善切换冲击。

6. 实测调试流程与参数整定经验

6.1 从空载到带载的调试顺序

无感FOC调试最忌讳一上来就全闭环跑高速,一定要按阶段来。第一步,先开环I/F或V/F控制,给一个固定的电流幅值和旋转角度,让电机以已知方向旋转,先验证PWM、ADC、电流环正反转都正常。第二步,开环启动到一定转速,记录相电流和电压数据,离线估算反电动势系数和电感参数,这些参数对SMO和高频注入的幅值计算很重要。第三步,静止状态做初始位置辨识,观察辨识角度是否正确。第四步,低速闭环运行,只用高频注入,先空载后带载。第五步,中高速切SMO,同样空载到带载。最后才做全速域权重切换联调。

这个顺序最大的好处是每一步都能定位问题范围。比如低速闭环跑不稳,问题基本锁定在高频注入的信号处理或锁相环;高速跑不稳,则聚焦SMO和角度补偿。如果你跳着调,一旦出问题,很难说清是哪个环节引起的。

6.2 关键参数的初值估算与整定

参数初值可以通过电机铭牌和离线测试粗略得到。这里给一套我常用的初始值,实际整定仍需要按波形调整:

参数含义初值参考
电流环带宽电流PI闭环带宽500Hz
电流环采样频率PWM频率10kHz
高频注入频率叠加的载波频率1kHz
高频注入幅值叠加电压幅值5%额定电压
SMO滑模增益滑模反馈系数1.5~2倍反电动势幅值
SMO滤波截止频率反电动势低通滤波500Hz
切换区下限高频注入全权上限0.10pu
切换区上限SMO全权下限0.18pu

电流环PI参数可以先按典型电机控制公式估算,把电机的定子电阻和d/q轴电感测出来,计算出电气时间常数,然后按带宽设定Kp、Ki。速度环带宽通常只有电流环的1/10左右,可以后调。F28335跑浮点数学,PI运算直接用IQmath或者浮点都可以,我这里是全浮点,代码直观很多。

6.3 调试过程中用示波器重点观察的波形

调试无感FOC,示波器至少要看到的波形包括:相电流、母线电压、观测反电动势、估计角度、转速估计值和权重系数。正常的高频注入低速波形,相电流上能看到一个明显的高频正弦分量叠加在低频基波上,高频分量的幅值稳定,这说明注入信号正常。用带通滤波器把高频分量过滤出来之后,用锁相环跟踪负序分量,观察锁相环输出的角度和给定角度的误差,正常应该在几度以内。

切到SMO后,电流波形应该相对干净,没有明显的高频载波。观测反电动势波形应该是平滑的正弦波,幅值随转速线性增加。如果反电动势波形有台阶或明显毛刺,说明滑模增益或者滤波器参数不合适。估计角度用示波器看是一条连续的锯齿波或直线,具体取决于显示方式,如果出现频繁的跳变或重复,往往是角度融合或者极性处理有问题。

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

7.1 高频注入干扰电流环怎么办

一个典型现象是电机低速运行时相电流里除了细密的高频纹波,还有低频的“呼吸”起伏,电流环甚至出现振荡声。原因可能是高频注入频率和电流环带宽距离不够。如果电流环带宽600Hz,注入频率1kHz,只相差400Hz,电流环会对注入频率产生可观增益,导致系统互相干扰。解决方法是把注入频率提到1.5kHz以上,同时限制电流环带宽不超过500Hz。如果电流环带宽必须高,更稳妥的做法是在电流反馈通道加一个中心频率为注入频率的陷波器,把高频分量从电流环反馈里滤掉,但这样会引入额外的相位滞后,所以能不动反馈尽量不动。

7.2 SMO抖振噪声大且发热

SMO天生存在抖振问题,但如果在低速段就发现噪声过大,多半是滑模增益太大,或者电流采样噪声被滑模面放大了。先降低电流采样滤波电容或提高采样质量,再减小滑模增益。如果波形已经调平了但还有可调噪声,问题可能出在死区补偿上。死区时间造成电压畸变,会干扰反电动势提取,低速时特别明显。可以在SMO之前做死区补偿,或者在电流过零处做一些滞环处理。热方面,电机额外发热主要来自高频电流分量和抖振引起的磁滞损耗,适当降低注入幅值或者降低SMO边界层宽度会明显改善。

7.3 启动时电机反转或失步

这是最让人头疼的问题。如果启动瞬间电机快速反转一下,大概率是极性判断错误,也就是π模糊没有处理好。检查极性辨识的脉冲幅值是否够大,如果两个方向的电流峰值差异不明显,可能脉冲幅值太小,磁路没有进入饱和区。还有一种情况是辨识出来的位置角度误差超过15度,导致启动转矩方向偏移。这种多发生在负载突变或机械间隙较大的场合,解决办法是辨识完成后加一个短的“校核脉冲”,观察转子是否朝预期方向微动,不动作就反向修正角度。如果启动时是慢慢失步,先检查速度环积分初值,再检查初始位置角度是否在切换前被后续的锁相环“拉偏”。

7.4 权重切换瞬间电流突变

权重切换瞬间电流突变,先看两个观测器的角度差有多大。在权重函数的渐变区间,如果角度差一直很大,说明至少有一个观测器在该速度段已经进入失常状态,需要把切换区往更合适的速度段移。如果角度差不大但电流仍然突变,大概率是电流环带宽太高,或者速度估计值在切换区间出现抖跳。我给的角度融合方法是参考值,但速度估计的融合需要处理惯量问题。可以在切换区间单独降低速度环的P值,让转速环对观测器的切换不那么敏感。还有一种技巧:在权重切换区间,对三个下桥臂的占空比做斜坡限制,相当于给输出电压加一个变化率约束,它能有效抑制由于角度误差造成的瞬时电流尖峰。

最后分享一个我的个人习惯:每次改完参数或算法,我都会记录当时的电机型号、母线电压、注入频率、切换点等关键参数,并保存一组调试波形。无感FOC调优非常依赖现场试验,过了几个月再回头看,这些记录比什么文档都有用。如果你也在调IPM无感项目,建议先别急着把版本号升到V2.0,把V1.0的这套“高频注入+SMO+权重切换”吃透,你后续做弱磁、MTPA、参数辨识都会顺很多。

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

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

立即咨询