资讯动态

PMSM无感控制实战:Active Flux磁链观测器设计与补偿细节

发布时间:2026/10/16 8:59:10 来源:尧图企业网站定制
做个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直流偏置和初值误差会导致积分输出漂移甚至饱和。纯积分在数字控制里基本不能用工程上常见的做法是给积分器加一个高通环节变成了实际上的低通滤波积分即ψα(k1) ψα(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μsPLL带宽设到200~300Hz转速环带宽大约50Hz留了足够裕度。有一点要提醒PLL输出的是转子电角度换算成机械角度时别忘了除以极对数这个低级错误我在测试板上就犯过一次整机转起来角度完全对不上。2.4 全速度段的失效边界Active Flux说到底还是反电动势观测速度越低反电动势越小积分出的磁链信噪比越差。实测下来在5%额定转速以下观测角度的波动已经比较明显跑闭环容易出现电流发散。所以无感段建议从10%额定转速以上再交给观测器启动段用I-f强制换相拉起来满足转速和角度偏差条件后再切观测闭环。3. 相电压重构的工程细节母线电压、占空比和死区怎么折算无感控制里电压模型的磁链积分需要准确的定子电压指令。但绝大多数驱动板出于成本考虑不会装线电压传感器剩下的只有直流母线电压检测。定子电压只能靠PWM占空比和母线电压去重构这一步做不好观测器吃进去的电压偏大或偏小磁链幅值和角度都会出偏差。3.1 基本重构公式与采样时机三相逆变器中每个桥臂的输出电压由对应相占空比决定。三相对称负载下重构出的相电压为va Vdc·[2·da − db − dc] / 3vb Vdc·[2·db − da − dc] / 3vc Vdc·[2·dc − da − db] / 3da、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·iVce(sat)和Rce按实际器件手册取值符号项与死区补偿方向一致叠加到占空比修正里。母线电压波动也不能忽略母线电压在PWM周期内的跌落低速重载时可能达到几个百分点重构电压会偏低磁链幅值被低估角度也会滞后。有条件的话母线电压采样点对齐PWM中心的硬件设计必须坚持不能省。这套补偿链路做完观测器拿到的电压才算基本可信。实测中做了死区补偿和没做死区补偿相比角度估计在轻载下的误差能差好几度电角度波形上会直接表现为dq轴电流的六次谐波变大。4. 电流误差补偿观测器输入的“清洗”工程观测器是吃电流和电压的电压重构解决的是电压侧电流侧同样不能含糊。电流误差看起来只是闭环反馈不准但观测器里的磁链积分是电压减电阻压降的积分电流的每一个直流偏置都会被积分器放大成角度漂移。所以我一直把电流采样误差补偿当观测器的一部分来做而不是电流环的附属品。4.1 采样零漂与增益偏差霍尔电流传感器的零漂是最常见的问题。零漂产生的原因包括运放偏置、采样电阻分压比不匹配、ADC基准电压漂移等。零漂的直接后果是d-q轴电流出现固定偏置在磁链积分里等效于电阻压降不准观测角度出现随速度变化的偏置。处理零漂要分两步走。第一步是硬件校零在PWM周期内专门找一个时刻让三相电流同时为零或者只有环流对ADC采样值做平均把零漂底数记下来第二步是软件补偿在控制算法里用这个底数对采样值做实时校正。如果硬件不支持专门校零时刻也可以在下桥臂持续导通相做软件校零但精度会差一些。增益偏差相对隐蔽三相采样增益不一致会导致电流矢量幅值和相角都发生畸变。这个可以通过注入一个已知旋转电流矢量对比三相反馈来标定工程量大一些但一般驱动板在出厂前会做一次这里不展开。4.2 一拍延迟补偿数字控制天然有一拍延迟第一个PWM周期采样第二个周期才更新占空比。电流在电机里的实际值和我当前控制周期拿到的反馈值相差了约一个PWM周期的时间。这个延迟在高速下会表现为明显的d-q轴耦合等效于给电机增加了一个虚拟的电感项既影响电流环整定也影响观测器角度。工程上我采用前向插值做一拍补偿即把当前周期的电流和上一周期的电流作一阶外推预测出下一拍时刻的电流再交给观测器和电流环使用。公式就是idq(k1) 2·idq(k) − idq(k−1)这个预测在电流变化率不太快的稳态工况下足够准确加负载、转速突变的工况下误差也能接受。如果你愿意也可以用无差拍或者全阶观测器做更精确的补偿但计算量上去了性价比一般。4.3 定子电阻温度变化的影响定子绕组温度从室温到满载温升电阻可以涨到室温值的1.5倍甚至更高。磁链观测里电压减去Rs·is这一项低速工况下Rs·is占电压的比例很大电阻不准对低速段影响尤其明显。实测中Rs偏差一倍低速段观测角度可以偏好几度轻则效率下降重则电流发散。最简单的工程处理是加温度修正。驱动器里如果集成了绕组温度NTC直接按温度系数折算RsRs(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°以内满足项目指标。低速工况我特意测了150rpm5%额定转速的表现。此时反电动势很小磁链积分信噪比明显下降观测角度波动到正负几度电流也开始出现轻微畸变。这个工况下单纯观察器已经不适合闭环运行项目里这个速度段就是用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观测器本身原理并不难难的是把它周围这些“脏活儿”做到位——电压重构里死区的方向判断电流采样里零漂的消除定子电阻随温度的漂移这些细节单独拎出来每一个都不起眼但合起来直接决定无感方案能不能在真实工况下站住脚。如果是刚入手的读者建议先把电压重构和电流补偿这两块搭扎实再推进观测器算法本身顺序反了后面返工的成本会高得让你怀疑人生。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑