☰
PMSM无感控制实战:Active Flux磁链观测器设计与补偿细节
2026/10/16 8:59:04 网站建设 项目流程

做个PMSM无感控制项目,最头疼的就是转子位置怎么来。光电编码器、旋变不是装不下就是成本压不住,最后基本都会绕回无位置传感器方案。这次做的这套永磁同步电机无感Active Flux磁链观测器项目,把电流误差补偿和相电压重构也一起做进去了,仿真模型和参考文档也都整理齐了,正好把整个链路拆开聊聊,适合刚接触无感控制的工程师,以及想把手头仿真做到接近实物水平的同学参考。

1. 无感控制选型对比:Active Flux在我这个项目里赢在哪

无位置传感器控制不是只有一条路。做选型的时候,我把主流方案按原理、适用速度段、参数敏感性、工程复杂度四个维度过了一遍,算是帮自己也帮大家把这条路先趟清楚。

高频注入法在零速和极低速下表现确实好,内嵌式电机利用凸极效应就能把转子位置挖出来,但代价是电流采样带宽要求高、噪音大,还要额外处理解调信号,工程实现复杂。滑模观测器以鲁棒性出名,结构简单,中高速段角度误差能做到很小,但自我抖动严重,需要加低通滤波,滤波又会带来相位滞后,角度补偿没调好反而更麻烦。模型参考自适应系统(MRAS)也常用,但对电机参数依赖比较重,低速段电流小、电压小,辨识结果容易飘。矢量磁链观测器(电压模型磁链观测)是经典路线,原理直接,工程上也成熟,问题出在纯积分环节的积分漂移和初值问题上,如果不做处理,低速段基本没法用。

Active Flux方法本质上是对电压模型磁链观测器的一次改造。它把电磁链和与凸极相关的部分合并成一个与转子d轴对齐的“有效磁链”矢量,这样一来,不管电机是表贴式还是内置式,只要把有效磁链的角度算出来,转子位置就出来了。相较滑模,它没有抖振;相较MRAS,它结构更简单;相较传统磁链观测,它天然规避了低速下积分漂移的一部分问题。当然,它也有自己的短板,比如极低速下反电动势太小,磁链观测的信噪比上不来,这一点后面细说。

我这边的实际负载工况,是额定转速3000rpm到4000rpm的中高速范围,启动阶段允许用强制换相带过去,不需要零速满转矩。所以选Active Flux这条路线,正好扬长避短。

方案适用速度段参数敏感性工程复杂度主要痛点
高频注入零速/极低速依赖凸极率高噪音、带宽要求高
滑模观测器中高速低中抖振、相位延迟
MRAS中高速高中高参数失配影响大
电压模型磁链中高速中低积分漂移
Active Flux中高速中低极低速性能受限

这套逻辑走下来,结论很直接:如果你的应用以中高速运行为主,启动阶段可以用开环过渡,Active Flux是性价比最高的选择之一;如果你要求零速带载,那还是高频注入或者混合方案更稳妥。

2. Active Flux观测器原理拆解:从磁链积分到转子角度输出的完整链路

2.1 有效磁链的定义和核心方程

Active Flux这个概念,定义式写出来很简洁:

ψa = ψs − Lq·is

其中ψs是定子磁链,is是定子电流,Lq是q轴电感。简单说,就是从定子磁链里减掉q轴电感贡献的那部分,剩下的是一个与转子d轴对齐的矢量。这个矢量的幅值在理想情况下等于永磁磁链再加一个凸极效应项,即ψa ≈ ψPM + (Ld − Lq)·id。对于表贴式电机,Ld和Lq基本相等,ψa就直接等于永磁磁链;对于内置式电机,还有凸极项,但有效磁链的相位依然和d轴对齐,这是它能用于转子位置观测的关键。

实际计算时,我们并不需要什么复杂的场路耦合模型,只需要定子磁链和q轴电感。定子磁链用电压模型来算:

ψs = ∫ (vs − Rs·is) dt

这样一来,整个观测器需要的电机参数只有定子电阻Rs和q轴电感Lq。相比那些需要完整d-q轴磁链曲线的方案,这已经简化很多了。Rs和Lq都可以通过常规参数辨识拿到,而且是相对容易测准的两个参数。

2.2 数字实现里的积分器处理

电压模型磁链观测绕不开积分问题。理想积分器的传递函数是1/s,直流偏置和初值误差会导致积分输出漂移甚至饱和。纯积分在数字控制里基本不能用,工程上常见的做法是给积分器加一个高通环节,变成了实际上的低通滤波积分,即:

ψα(k+1) = ψα(k) + Ts·[vα(k) − Rs·iα(k)] − ψα(k)·ωc·Ts

这里ωc是补偿角频率,相当于给纯积分器引入一个缓慢衰减的高通项,防止直流偏置累积。代价是基波幅值和相位会被拉偏,补偿角频率需要跟着电频率走,这个滤波器的相位补偿如果没做对,观测角度在低速度段会明显偏移。更实用的做法是频率自适应——电频率高的时候,ωc取低值,尽量接近纯积分;电频率低的时候,ωc取高值,尽快把漂移压住。

初始值处理也需要留意。启动瞬间定子磁链通常是零,但数字积分器从零开始积,叠加直流偏置后会先冲一下再回落,反映到角度上就是启动角度的跳动。我的处理方式是在观测器里加一个启动逻辑,电流建立起来之前不启用角度输出,等磁链幅值稳定了再切入速度环,相当于给观测器一个“预热窗口”。

2.3 角度提取:锁相环代替atan2

拿到αβ轴有效磁链分量后,转子角度理论上可以用atan2(ψβa, ψαa)直接算。但atan2对噪声很敏感,尤其是在磁链幅值比较小的低速段,反馈回来的角度噪声会导致转速估计大幅波动。所以工程实现上基本都是先估算转速、再用锁相环(PLL)跟踪角度,让位置角平顺地收敛。

PLL的实现形式是一个小闭环:角度误差通过PI调节器得到转速,转速积分得到位置角。PLL带宽不能设太高,否则噪声进来了;也不能太低,否则动态响应太慢,加减载时转速估计会滞后。我这边控制周期100μs,PLL带宽设到200~300Hz,转速环带宽大约50Hz,留了足够裕度。有一点要提醒,PLL输出的是转子电角度,换算成机械角度时别忘了除以极对数,这个低级错误我在测试板上就犯过一次,整机转起来角度完全对不上。

2.4 全速度段的失效边界

Active Flux说到底还是反电动势观测,速度越低反电动势越小,积分出的磁链信噪比越差。实测下来,在5%额定转速以下,观测角度的波动已经比较明显,跑闭环容易出现电流发散。所以无感段建议从10%额定转速以上再交给观测器,启动段用I-f强制换相拉起来,满足转速和角度偏差条件后再切观测闭环。

3. 相电压重构的工程细节:母线电压、占空比和死区怎么折算

无感控制里,电压模型的磁链积分需要准确的定子电压指令。但绝大多数驱动板出于成本考虑,不会装线电压传感器,剩下的只有直流母线电压检测。定子电压只能靠PWM占空比和母线电压去重构,这一步做不好,观测器吃进去的电压偏大或偏小,磁链幅值和角度都会出偏差。

3.1 基本重构公式与采样时机

三相逆变器中,每个桥臂的输出电压由对应相占空比决定。三相对称负载下,重构出的相电压为:

va = Vdc·[2·da − db − dc] / 3

vb = Vdc·[2·db − da − dc] / 3

vc = Vdc·[2·dc − da − db] / 3

da、db、dc是三个桥臂高电平时间占整个PWM周期的比例。这个公式的前提是母线电压在整个PWM周期内恒定,所以母线电压采样时刻必须放在PWM载波谷底或峰值处,也就是三相占空比中心附近。这个时刻的电流纹波也最小,电流采样可以共用同一个采样点。

值得一提的是,公式里重构出来的是“桥臂输出到中性点的电压”,不是真正加载到电机绕组上的电压。它和电机实际端电压之间的差值,就是死区、管压降和PWM开通关断延时所吃掉的那部分,这部分如果不补偿,直接拿去积分,低速小电压工况下相对误差会非常大。

3.2 死区补偿:符号函数加过零滞回

死区时间是为了防止同一桥臂上下管直通而强制插入的等待时间。死区期间,电流由续流二极管维持,输出电压取决于电流方向,这就导致实际输出电压与理想占空比之间存在一个误差脉冲,等效平均电压误差约为:

ΔVdead ≈ (Tdead + Ton − Toff) / Ts · Vdc

其中Ton是开通延迟,Toff是关断延迟,Ts是PWM周期。方向由相电流极性决定。补偿做法就是在占空比指令上叠加一个修正项,电流为正时把该相占空比抬上去,电流为负时降下来。

难点在电流过零附近。电流在一小段区域内来回穿越零点,符号函数的判向会频繁翻转,补偿量跟着跳变,反而给电压重构注入高频扰动。我的做法是给符号判断加滞回区间,电流幅值小于某一阈值(比如额定电流的1%~2%)时保持上一次的补偿方向,同时开始对电流采样做滑动平均,让电流方向判断稳定下来。

3.3 管压降和母线电压波动的修正

除了死区,功率器件的导通压降也会吃掉一部分电压。IGBT和MOSFET的导通压降特性不一样,IGBT接近一个恒定压降加近似的内阻,MOSFET更像纯阻性,两者对补偿公式的要求有差别。补偿公式统一写为:

vcomp = Vce(sat)·sign(i) + Rce·i

Vce(sat)和Rce按实际器件手册取值,符号项与死区补偿方向一致,叠加到占空比修正里。母线电压波动也不能忽略,母线电压在PWM周期内的跌落,低速重载时可能达到几个百分点,重构电压会偏低,磁链幅值被低估,角度也会滞后。有条件的话,母线电压采样点对齐PWM中心的硬件设计必须坚持,不能省。

这套补偿链路做完,观测器拿到的电压才算基本可信。实测中,做了死区补偿和没做死区补偿相比,角度估计在轻载下的误差能差好几度电角度,波形上会直接表现为dq轴电流的六次谐波变大。

4. 电流误差补偿:观测器输入的“清洗”工程

观测器是吃电流和电压的,电压重构解决的是电压侧,电流侧同样不能含糊。电流误差看起来只是闭环反馈不准,但观测器里的磁链积分是电压减电阻压降的积分,电流的每一个直流偏置都会被积分器放大成角度漂移。所以我一直把电流采样误差补偿当观测器的一部分来做,而不是电流环的附属品。

4.1 采样零漂与增益偏差

霍尔电流传感器的零漂是最常见的问题。零漂产生的原因包括运放偏置、采样电阻分压比不匹配、ADC基准电压漂移等。零漂的直接后果是d-q轴电流出现固定偏置,在磁链积分里等效于电阻压降不准,观测角度出现随速度变化的偏置。

处理零漂要分两步走。第一步是硬件校零,在PWM周期内专门找一个时刻,让三相电流同时为零或者只有环流,对ADC采样值做平均,把零漂底数记下来;第二步是软件补偿,在控制算法里用这个底数对采样值做实时校正。如果硬件不支持专门校零时刻,也可以在下桥臂持续导通相做软件校零,但精度会差一些。

增益偏差相对隐蔽,三相采样增益不一致会导致电流矢量幅值和相角都发生畸变。这个可以通过注入一个已知旋转电流矢量,对比三相反馈来标定,工程量大一些,但一般驱动板在出厂前会做一次,这里不展开。

4.2 一拍延迟补偿

数字控制天然有一拍延迟:第一个PWM周期采样,第二个周期才更新占空比。电流在电机里的实际值,和我当前控制周期拿到的反馈值,相差了约一个PWM周期的时间。这个延迟在高速下会表现为明显的d-q轴耦合,等效于给电机增加了一个虚拟的电感项,既影响电流环整定,也影响观测器角度。

工程上我采用前向插值做一拍补偿,即把当前周期的电流和上一周期的电流作一阶外推,预测出下一拍时刻的电流,再交给观测器和电流环使用。公式就是:

idq(k+1) = 2·idq(k) − idq(k−1)

这个预测在电流变化率不太快的稳态工况下足够准确,加负载、转速突变的工况下误差也能接受。如果你愿意,也可以用无差拍或者全阶观测器做更精确的补偿,但计算量上去了,性价比一般。

4.3 定子电阻温度变化的影响

定子绕组温度从室温到满载温升,电阻可以涨到室温值的1.5倍甚至更高。磁链观测里电压减去Rs·is这一项,低速工况下Rs·is占电压的比例很大,电阻不准对低速段影响尤其明显。实测中,Rs偏差一倍,低速段观测角度可以偏好几度,轻则效率下降,重则电流发散。

最简单的工程处理是加温度修正。驱动器里如果集成了绕组温度NTC,直接按温度系数折算Rs:

Rs(T) = Rs0 · [1 + α·(T − T0)]

α对铜绕组大概0.004/°C。没有温度传感器的话,可以退一步用电机热模型的估算值,或者干脆把观测器里的Rs做在线辨识,用递推最小二乘在一个小范围内自适应,但这样会引入额外收敛问题,我建议先做温度修正表,等稳了再考虑辨识。

4.4 电流谐波与死区的耦合

前面说了死区补偿减小电压误差,但死区补偿不可能做到完美,残留下来的电压误差会激励出dq轴六次谐波电流。这些谐波电流又反过来被观测器积分,输出角度上跟着出现六次脉动,转速估计也出现周期性波动。所以完整的电流误差补偿不只是校零和延迟补偿,还要在速度环或角度反馈路径上做谐波抑制。

我这边试过陷波器方案,在dq轴电流环输出端加六次谐波陷波,效果直接但会牺牲一点相角裕度;也试过基于坐标旋转的谐波提取,把六次谐波分量分离出来单独做闭环抑制,效果更好但参数多了一组,调试工作量翻倍。最终考虑到项目时间,先用了陷波器,后续如果客户端对振动噪音要求高,再升级成谐波抑制闭环。

5. 仿真模型搭建、参数整定与实测波形复盘

5.1 模型结构与仿真策略

这套仿真我用了Matlab/Simulink搭的,控制器部分用离散步长实现,步长和控制频率对齐(10kHz),电机和逆变器部分先用了平均模型跑算法逻辑,跑通之后再切到带死区和管压降的开关模型,目的是把电压重构和补偿逻辑的真实场景还原出来。

模型结构从上到下分五块:主电路(直流母线、三相逆变桥、PMSM模型)、采样与重构(母线电压采样、相电压重构、死区补偿)、电流采样与补偿(零漂、一拍延迟、谐波陷波)、观测器(Active Flux观测器、PLL)、控制环(电流环、速度环、启动切换逻辑)。每一块独立成子系统,调参的时候只动对应的参数文件,不用在模型里到处翻线,这是后面能做上百组参数扫描的基础。

5.2 关键参数表

下表是我调试用的基准参数,不同电机请按实际铭牌参数替换,但控制频率和PLL带宽的相对关系可以参考。

参数数值说明
直流母线电压310V三相整流输出
额定转速3000rpm4对极内置式
定子电阻0.35Ω25°C冷态值
Ld / Lq0.8mH / 1.4mH用于有效磁链计算
永磁磁链0.082Wb反电动势标定值
PWM/控制频率10kHz两者对齐
死区时间1.5μs实测补偿
观测器积分补偿频率2π×20 rad/s频率自适应低速抬升
PLL带宽250Hz实测噪声水平
速度环带宽50Hz留足裕度

5.3 调试顺序和踩坑记录

我的调试顺序是:先把电流环调稳,再接观测器,再接速度环,最后才做启动切换。观测器单独调试有个顺手的小办法——在电机还没转起来的时候,给一个固定电压矢量,对比观测器输出的静止角度与实际给定角度,能快速发现坐标变换符号、Lq方向这类低级错误,省得后面转速起来了一堆现象搅在一起没法定位。

启动切换这里我踩过一个比较深的坑。I-f开环切观测闭环时,观测器给出的角度和开环给定角度之间如果差值超出阈值,直接切过去电流会瞬间冲击,严重时候母线过流报警。解决办法是在切换前先让观测器运行,但输出角度仍然用开环指令,只监测两者的差值;连续一小段时间差值都在阈值内,才开始按比例把角度来源切到观测器,转速参考也做斜坡过渡,大概200ms完成切换。这个逻辑在实验台架上反复验证过,切换电流冲击控制得很小。

5.4 一组有参考价值的波形复盘

从仿真和台架测试中选两个有代表性的工况说结果。额定转速3000rpm空载稳态,观测角度的波动大约是±1.2°电角度,dq轴电流纹波在2%额定电流以内,表现符合预期。

突加额定负载这个工况更能说明问题。转速在负载瞬间跌了约180rpm,速度环在大约200ms内回复到位,期间观测器的角度误差短暂到了4°电角度,PLL带宽不够会有转速估计落后,带宽太高则角度波动偏大。经过几轮折中,PLL带宽最终定在250Hz,突加负载动态角度误差能压在3°以内,满足项目指标。

低速工况我特意测了150rpm(5%额定转速)的表现。此时反电动势很小,磁链积分信噪比明显下降,观测角度波动到正负几度,电流也开始出现轻微畸变。这个工况下,单纯观察器已经不适合闭环运行,项目里这个速度段就是用I-f强制换相对付过去的。如果你的负载必须在低速闭环运行,那就要考虑混合方案(低速高频注入+高速Active Flux切换),这是另一个项目了。

5.5 最容易忽略的仿真与实测差异

仿真里有一个高频失真的陷阱。平均模型里没有开关纹波,控制器和观测器在理想条件下看起来都很好,第一次切到带死区的开关模型,就会发现观测角度多了一倍的高频纹波。原因很简单,占空比重构的电压含死区和开通关断暂态的等效误差,电流采样点也不是理想的载波中心,两者叠加在观测器入口形成了高频干扰。

应对方法有三条,我都验证过:采样时刻严格对齐PWM中心;死区补偿点要在占空比指令上叠加,不要在重构电压后才补偿;观测器输入端先做一次低通滤波,截止频率设在开关频率附近,把高频残渣压下去。这三条做完,仿真和实测的波形趋势基本能对上,后面做软件参数迁移就顺手多了。

6. 参考文档与文献整理:项目复盘时最值得归档的东西

标题里说了配套参考文档和参考文献,这里把我归档的思路分享一下。这个项目做完,代码和模型只是一部分,真正能在下次复用时候省时间的,是整理好的文档索引和阅读路径。

参考文档我按使用目的分了四类,每类对应具体的检索方向,你根据自己的积累程度对号入座:

分类核心内容建议检索方向
矢量控制基础d-q变换、SVPWM、电流环整定电机矢量控制,SVPWM实现与死区影响
Active Flux观测有效磁链定义、磁链观测实现、PLL角度提取Active Flux Observer,无传感器PMSM控制
电压重构补偿相电压重构、死区补偿、管压降补偿逆变器电压误差补偿,相电压重构
电流采样处理零漂校正、一拍延迟、谐波抑制数字电流环延迟补偿,电流采样误差

文献阅读顺序也有讲究。我刚接触这个方向时,直接从Active Flux的原始概念论文开读,结果被各种数学推导绕晕了。后来改用“先应用后理论”的顺序:先看综述性的无感控制对比文章,把方案框架搭起来;再看Active Flux相关的应用类论文,重点看实现框图和波形;最后才回去啃原始概念推导,理解定义式背后的物理意义。这个顺序下来,效率和吸收率都高很多。

配套的项目文档我分成三份:README说明文件里记录模型结构、参数入口和运行环境,让任何接手的人能在半小时内把模型跑起来;调试记录文档按日期记录参数修改和波形现象,这个对后期排查和复现问题至关重要;文献摘要把每篇文献的核心结论和应用场景提炼成一到两句话,下次选方案时不用重新翻原文。

有一点必须提醒,做技术文档不能用“我记得当时这么调了一下”这种状态。项目后期会越来越多地依赖文档而不是记忆,调试记录宁可多写也不能漏,哪怕只是一个参数的尝试过程,等三个月后再看,可能就是救命线索。

做最后一遍代码审查时说点个人体会。整个项目做下来,最深的感受是Active Flux观测器本身原理并不难,难的是把它周围这些“脏活儿”做到位——电压重构里死区的方向判断,电流采样里零漂的消除,定子电阻随温度的漂移,这些细节单独拎出来每一个都不起眼,但合起来直接决定无感方案能不能在真实工况下站住脚。如果是刚入手的读者,建议先把电压重构和电流补偿这两块搭扎实,再推进观测器算法本身,顺序反了,后面返工的成本会高得让你怀疑人生。

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

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

立即咨询