资讯动态

扩展卡尔曼滤波在永磁同步电机无速度传感器控制中的应用

发布时间:2026/10/19 11:25:46 来源:尧图企业网站定制
一直有人问我“永磁同步电机不带编码器能转吗”我的回答是能但工程上要比带编码器麻烦好几倍。麻烦的核心不在电流环而在“转速和转子位置从哪来”。早期的做法依赖反电动势过零检测或者高频注入前者在低速下信号太弱后者对电机参数和硬件调制方式有额外要求。而扩展卡尔曼滤波Extended Kalman FilterEKF提供了一条更优雅的路径把转子位置和转速当作状态量通过实时电压电流估计出来。这篇博文我从实际项目出发把基于扩展卡尔曼滤波的无速度无位置永磁同步电机控制整个逻辑链条讲透包括数学模型怎么定、状态方程怎么建、Q和R矩阵怎么调、仿真闭环怎么搭、踩坑过程怎么排查。内容不绕圈子适合正在复现这个方向、或者准备把无传感器算法往工程上落地的同学参考。1. 为什么这个选题值得做无速度传感器的真实工程需求1.1 交流传动里“没有速度传感器”到底难在哪永磁同步电机PMSM的转矩控制高度依赖转子磁极位置。定子绕组通电产生的磁场要始终和转子磁场保持合适的角度位置角度差一点输出转矩就差一截差多了轻则电流震荡重则失步甚至烧模块。传统方案是在电机轴端装编码器或旋转变压器电气角度直接读控制环稳定可靠这也是绝大多数伺服系统的标准配置。但工业现场未必总愿意装编码器。有些应用环境温度高、振动大编码器线缆和码盘很容易损坏是故障率最高的部件之一。还有一些成本敏感型应用比如风机、水泵、家电驱动几十元的编码器都会占掉整块控制器成本的三分之一。更麻烦的是电机和负载之间如果通过减速机或软轴连接轴端传感器的安装工艺和误差标定都会给量产带来一堆问题。所以“无速度无位置”不是学术自嗨是真实的生产制造需求。把转速和位置从电流电压里估出来就是无传感器矢量控制要解决的核心问题。1.2 EKF凭什么能扛起这个任务现在常见的无传感器方案有几种高频信号注入法、滑模观测器、模型参考自适应、龙伯格观测器再就是卡尔曼滤波家族。各有适用场景我这边挑EKF主要看中它三点。EKF能直接估计转速和位置不需要额外设计锁相环去提取速度信息。滑模观测器往往先估反电动势再通过反正切或者锁相环算角度链路长了误差也会叠加。EKF把状态量集中在同一个框架里转速和位置作为状态向量的分量一出来就能用。EKF对测量噪声有统计意义上的抑制能力。它不像滑模观测器那样对参数扰动特别敏感也不像高频注入法那样依赖凸极性。虽然EKF本身并不完美但它在中等转速以上的应用里鲁棒性相当不错而且对凸极性要求不高适用范围比高频注入广得多。还有一点很重要EKF的思路是标准的“预测—校正”递推整个系统是闭环在线运算不依赖查表或离线拟合因此对工况变化有自适应能力。这些特性使得EKF在无速度传感器PMSM控制里一直属于重点研究方案也被很多工业产品实际采用过。2. 先把EKF在PMSM里的数学模型捋清楚2.1 αβ轴系下的电机方程怎么写成状态空间形式EKF的设计前提是有一个可观测的非线性状态空间模型。对表贴式PMSM习惯上选两相静止αβ坐标系因为反电动势在这个坐标系里是正弦信号物理意义最直观。若把转子电角速度记作ω转子电角度记作θ定子电流记作iα、iβ反电动势常数记作Ke则定子电压方程可以写为uα Rs·iα Ls·diα/dt − Ke·ω·sinθuβ Rs·iβ Ls·diβ/dt Ke·ω·cosθ这里Rs是定子电阻Ls是定子电感且假设两轴电感相等表贴式结构。如果把电流分量选为测量量把转速和位置选为估计量那么一个常用的五阶状态向量是x [iα, iβ, ω, θ, Te]^T最后一个Te是负载转矩如果把它也当成状态量系统就能估计负载扰动常用于带突变负载的场合。若负载转矩变化不剧烈也可以省略Te把状态向量降为四阶写成x [iα, iβ, ω, θ]^T状态方程和测量方程的连续形式如下diα/dt (−Rs/Ls)·iα (Ke/Ls)·ω·sinθ uα/Lsdiβ/dt (−Rs/Ls)·iβ − (Ke/Ls)·ω·cosθ uβ/Lsdω/dt (1.5·p·ψf/Ls)·(iβ·cosθ − iα·sinθ) − (p·Te_load)/J − (B/J)·ωdθ/dt ω其中p是极对数ψf是转子磁链J是转动惯量B是阻尼系数。这里的电磁转矩表达式已经代入了电流位置关系公式看着长但本质上就是一个非线性微分方程组EKF要做的就是利用实时测量的iα、iβ和uα、uβ把内部的ω和θ递推出来。2.2 雅可比矩阵与协方差矩阵EKF的“三件套”EKF和标准卡尔曼滤波KF)最核心的区别在于K F要求系统是线性的而PMSM状态方程里含有sinθ、cosθ项直接用KF是行不通的。EKF的做法是在每个采样时刻对非线性函数做一阶泰勒展开也就是求雅可比矩阵Jacobian然后近似当成线性系统做卡尔曼递推。递推分两步。第一步是预测步x(k|k−1) f(x(k−1|k−1), u(k−1))P(k|k−1) F(k−1)·P(k−1|k−1)·F(k−1)^T Q其中F就是状态转移函数f对状态向量x求偏导得到的雅可比矩阵Q是过程噪声协方差矩阵。第二步是校正步K(k) P(k|k−1)·H^T·(H·P(k|k−1)·H^T R)^(−1)x(k|k) x(k|k−1) K(k)·(y(k) − h(x(k|k−1)))P(k|k) (I − K(k)·H)·P(k|k−1)这里H是测量方程对状态量求偏导的雅可比矩阵R是测量噪声协方差矩阵。因为测量量就是iα和iβH矩阵的求导较为简单但F矩阵的计算要仔细尤其是θ相关项位置角误差会直接传导到电流预测方程里。2.3 噪声矩阵到底怎么初始化不能拍脑袋很多初学者把Q和R当成随便试的参数结果滤波器要么发散要么反应迟钝。Q矩阵对应的是“我们对模型误差的信任程度”。如果Q设得非常大滤波器会认为模型预测极其不可信于是大幅依赖测量值校正估计结果噪声大如果Q设得非常小滤波器会过度相信模型测量值刷新作用弱结果就是转速和位置变化缓慢动态响应差。R矩阵对应的是“对测量噪声的信任程度”。电流采样本身有零偏、标度误差和噪声R太小会导致滤波器跟着测量抖动走R太大又会让校正作用变弱。工程上可以先根据电流采样电路的噪声底估算一个初值。比如使用某系列电机控制器电流采样分辨率12位量程±20A实测噪声峰峰值约0.1A那么R可以取为0.01量级。Q矩阵的初始化需要结合状态量的物理范围。比如转速ω在±3000rpm对应的电角速度大约是±314rad/s位置角θ在0到2π之间iα和iβ在±5A以内负载转矩在±2N·m之间。把每个状态量的可能变化幅度平方一下作为Q对角元素的初值再整体缩放若干倍通常能很快收敛。实际经验是Q和R的比值比绝对值更影响滤波品质我通常先用对角线矩阵起调然后根据估计波形微调。3. 从模型到闭环仿真实现的完整细节3.1 仿真环境搭建与离散化方式这个项目我主要用某仿真平台做系统级验证电机本体用平台自带的通用PMSM模型EKF用Stateflow或者S-Function实现也可以直接在M脚本里写递推循环。关键在于仿真步长要和实际控制器离散周期一致EKF的递推周期最好等于PWM周期。离散化要注意状态方程里的sinθ和cosθ项使得连续模型到离散模型没有简单的解析解工程上普遍用欧拉法近似离散。对于10kHz的PWM周期欧拉法的误差在可接受范围内。只要采样时间足够短一阶欧拉近似不会带来明显问题。如果用大步长仿真建议改用多步欧拉或者龙格库塔法否则滤波器的雅可比矩阵和离散模型不匹配容易导致高频抖动。在仿真中我喜欢把电机模型、PWM逆变器、电流采样和EKF算法放在同一个离散任务里跑采样和计算时序严格按照真实控制器的顺序执行。这样仿真结果对后续上硬件有更强的参考价值。3.2 状态初值、采样周期与滤波器参数整定滤波器初值需要根据启动工况确定。无传感器系统在零速启动时转子位置完全未知一个常用的初值设置为x0 [0, 0, 0, 0]^T即电流、转速、位置都从零开始。但这里有个天坑如果θ初始给0而真实转子位置是π那么初始反电动势方向就是反的滤波器的收敛过程会伴随电流冲击。在仿真里我会做“预定位”处理启动前施加一段时间的直流电压矢量把转子拉到已知位置然后再切换到EKF闭环。协方差初值P0也不能乱给。P0表示对初始状态估计误差的置信度如果一开始对位置完全没底θ对应的P0元素可以设大比如1.0表示位置误差方差大约有1弧度量级。电流和转速的P0可以设小一些因为启动前电流为零、转速为零是确定的方差给0.01量级就够了。采样周期的影响我专门对比过。5kHz、10kHz、20kHz三种开关频率下EKF估计波形的高频毛刺有明显区别。10kHz以上基本能满足中等转速范围5kHz时由于离散误差偏大电流畸变也会传导到状态估计所以实际做产品开关频率至少8kHz以上比较稳妥。3.3 带EKF的矢量控制闭环结构怎么连一套完整的无传感器FOC闭环包括电流环、速度环和EKF观测器。结构上电流环依然采用id0控制电流环的输出是d轴和q轴电压再经过反Park变换得到αβ轴电压送入SVPWM调制。EKF观测器的输入是αβ轴电压指令值或实际测量的相电压重构值以及αβ轴电流采样值输出是估计转速ω和估计位置θ。这个θ直接用于Park变换和反Park变换同时ω反馈给速度环。我画不出来完整框图但可以描述关键信号流三相电流采样 → Clark变换 → iα、iβiα、iβ和uα、uβ → EKF → ω_est、θ_estθ_est → Park变换产生id、iq速度环参考ω_ref与ω_est做PI调节 → iq_refid_ref0与id、iq反馈做电流PI → ud、uqud、uq反Park变换 → uα、uβ → SVPWM注意一个容易错的地方电流环PI里用的θ是EKF估计出来的而不是真实角度。如果EKF的位置估计有偏置电流环的dq解算就不准确会产生转矩脉动。所以在整个闭环里EKF的位置估计精度是整个系统的地基。4. 实测踩坑发散、滞后、带载抖动逐个击破4.1 滤波发散Q和R调反的典型特征我第一次把EKF接进闭环时转速一超过500rpm估计位置就开始乱跳电流波形像掺了沙子。排查半天发现是Q矩阵和R矩阵的量纲和幅值完全不对。当时我把Q的对角元素全部设为0.1左右R却设成了0.001看起来R很小但那是电流单位上的噪声对应0.1A噪声是够用的。问题是Q的0.1对于转速来说太小了相当于每步只允许转速变化0.316rad/s而实际系统启动阶段转速变化远超这个值滤波器死死咬住模型测量值几乎不起作用导致位置更新跟不上真实转动。典型发散特征是在加速过程里估计转速明显滞后电流环角度错位后输出大幅振荡严重时母线电流飙升。调参经验是先固定R把Q整体按10倍放大看波形是否收敛再微调具体状态量的比值。4.2 转速估算滞后与相位偏置从波形看图说话第二个常见问题是稳态下估计转速平均值正确但位置信号在相位上有滞后或超前表现为实际运行效率降低、电机温升偏高。从波形上看估算dq轴的电流虽然稳定但实际电机功率比同工况带编码器时略大。这个滞后通常是动态过程中P矩阵预测步和校正步的权重分配不当。如果Q中转速对应的方差过小则转速估计的带宽低位置角跟随存在延迟。可以尝试把转速对应Q元素增大同时把位置对应Q元素略微减小让位置角度更信任模型积分而转速更快跟踪测量变化。还有一个细节是电流采样零偏。采样零偏会引起dq轴电流纹波进而污染EKF的测量输入让位置估计出现周期性偏置。这个问题在仿真里不明显但实际硬件上常有。需要做电流零偏校准或者用硬件支持的双采样通道来消除偏置。4.3 重载启动瞬间丢同步暂态过程的特殊处理无传感器系统在空载启动时通常很顺利一旦带重载启动比如从零速直接给定满载转矩电流会瞬间建立一个强磁场而电流环角度如果还没收敛实际合成的磁动势方向不对电机不仅不转还可能掉到“极限环”里表现为电流很大但转速纹丝不动。处理方案分两步。第一步是强制预定位启动前施加固定方向的电压矢量持续数百毫秒让转子对准到已知方向然后再切EKF。第二步是限制初始加速度和初始转矩给定让EKF有足够时间收敛。速度环的积分限幅在启动阶段要放得足够宽防止转速误差积分把iq推到极限造成电流冲击。实际项目里我还会在启动阶段使用开环电流角度逐渐过渡的策略——先把电流角度按恒定速度旋转同时让EKF在线跑等到EKF的协方差收敛后再平滑切换到估计角度作为电流角度。这种软切换能最大程度避免暂态冲击。5. 参考资料与学习路线少走弯路的几个建议5.1 参考文献检索方向与阅读优先级关于EKF在PMSM无位置传感器控制中的应用学术界已经有非常成熟的研究积累。初次接触的同学不要盲目下整篇论文去啃按以下顺序检索更有收获首先搜“EKF state estimation PMSM sensorless control”能找到大量期刊论文和高被引文献。优先读带实验波形和参数表格的文章重点看状态向量如何选择、噪声协方差如何设计。这类问题在论文里往往一笔带过但恰恰是工程复现的关键。然后是学位论文。某高校的优秀硕士/博士学位论文会花大量篇幅讲解公式推导、仿真建模和实验平台设计比期刊论文更完整尤其适合初学者建立整体框架。检索关键词可以加“扩展卡尔曼滤波”“无速度传感器”“永磁同步电机”三个词组。最后是经典教材中关于非线性滤波和白噪声模型的章节。EKF的理论证明和误差分析不要跳过至少要理解“一阶线性化”“泰勒展开截断误差”这两个概念否则后面改模型时总会遇到莫名其妙的发散问题。我自己的做法是先把十篇左右文献里EKF状态维度和矩阵定义整理成一张对比表看哪些论文用了四阶、哪些用了五阶噪声矩阵初始值有什么规律。整理完基本就能确定自己项目里该用哪种方案。5.2 我整理的文档结构和复现思路这个项目前后做了大半年我把推导过程、调试记录、参数表、仿真和实验结果整合成了一份完整的文档。文档没有从头到尾堆公式而是按照“问题—方案—代码—波形—坑”的线索组织。第一节写PMSM数学模型的建立和状态方程推导每个矩阵怎么来的都带注释第二节写EKF的五步递推公式和对应的离散代码片段第三节写闭环结构和仿真模型搭建步骤第四节是Q、R调参经验和多组对比波形第五节是硬件实验时遇到的问题和解决办法包括零偏校准、预定位、启动切换等工程细节。之所以把所有原始波形都留档是因为调试EKF这类算法时仅凭感觉调参太容易反复横跳。有波形对比才能确定改动到底有效还是变坏。所以我也建议每个复现这个方向的读者养成“每次修改参数必须保存波形和参数文件”的习惯。如果只是需要一份能跑的模型直接做毕业设计或项目预研我可以提供打包好的仿真模型和文档如果想深入地学我更建议自己从空白模型开始搭建一遍。有偿提供模型本身是知识劳动的等价交换但前提是你对这个原理吃透之后再参考否则你拿着模型也解释不了波形做不了参数适配反而更痛苦。5.3 关于“有偿提供模型”的一点个人看法标题里写了“可有偿提供模型”这是很多技术博主的常见做法。我的真实看法是模型文件本身不贵贵的是你理解并使用它的能力。如果你拿到模型只是为了跑一条曲线那不如花时间把开源的框架跑通一遍遇到问题了再针对性请教别人。每改动一台电机型号电感、磁链、转动惯量全变没有对算法的理解模型就是一个黑盒子。所以我建议需要的同学无论是自己写还是参考别人的都务必做到下面三件事自己能推导一次状态转移矩阵和雅可比矩阵自己会修改Q和R矩阵并观察波形变化自己能在闭环结构里新增或删减状态量。这三件事做完EKF无传感器控制才算真正长在脑子里。从工程角度看扩展卡尔曼滤波不是万能药低速零速工况仍然吃力复杂工况下依然需要高频注入或其他算法辅助。但它在中等转速段的高适应性和强抗噪能力确实是很多产品的不错选择。我在这套方法上踩过不少坑也积累了一些别人文档里不太会写的细节。如果你正在复现过程中卡住了不妨回头看一眼你的状态方程是不是漏了负载转矩项或者Q矩阵里转速方差给得太小——这两个是我见过的最常见的翻车原因。

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

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

免费获取报价 →
↑