三相永磁同步电机零速无传感器控制的高频信号注入仿真

发布时间:2026/10/21 18:20:58
三相永磁同步电机零速无传感器控制的高频信号注入仿真
去年接了个工业泵类负载的预研需求客户明确提了一个硬约束电机端不允许装编码器但系统又要求变频器能带载从零速起动。我第一反应是上传统的反电动势滑模观测器结果仿真一跑就露馅——零速和低速区间反电动势接近零转子位置完全估不出来带载起动直接失步。后来把思路换成高频信号注入专门在零低速用凸极性来挖位置信息仿真里才真正把三相永磁同步电机无传感器控制跑通了。这篇就把整个仿真过程捋一遍包括建模顺序、参数选择、调试意见和踩进去的坑给刚开始碰这个方向的朋友做个参考。这篇文章适合三类人一是要做风机水泵、压缩机、电驱动起步这类需要零速带载能力的项目工程师二是学校里做PMSM无传感器控制的同学想在仿真里先验证算法三是已经在用反电动势法做中高速无传感器、但一直头疼低速区间的同行。我不堆公式尽量用“这个环节为什么必须有”“参数不给会出什么妖蛾子”的方式把逻辑讲透。1. 为什么非要在零速区间死磕无传感器方案1.1 编码器在很多场景里是真装不上很多人不理解明明装个编码器就能测转子位置为什么要搞那么多花活。实际到工业现场看一圈就明白了泵类负载和压缩机往往工作在高温、高湿、强振动环境编码器属于精密元件光电编码器怕油污粉尘旋变虽然抗造但成本高、还得配解码电路。更要命的是电机轴端伸出空间不够时编码器根本装不进去。很多压缩机整机结构为了做薄做小把一切冗余都砍掉了无传感器方案就成了唯一出路。另一个现实因素是维护成本。某批次设备里的编码器三年内坏了五六只每次换都要把机组拉停、拆端盖产线一停就是几小时的损失。改用无传感器后至少少了一个故障源。这也是为什么现在很多变频器厂商把无传感器矢量控制作为基础配置但真正能做到零速满转矩带载起动的不多核心难点就在零速位置观测。1.2 反电动势法在零速区域为什么会失效做无传感器的人都清楚中高速段靠反电动势就能推位置因为转速越高反电动势越大信噪比越好看。但电机堵转或者刚刚起动那一刻转速是零或接近零反电动势也接近零这时候从反电动势里提取位置信息基本等于在强噪声里找一个接近零的信号。滑模观测器在零速时还有个更麻烦的问题滑模面设计依赖反电动势幅值信号太弱时观测器会有明显的抖振控制器为了维持稳定被迫降低等效增益结果导致低速动态性能很差。我测试过从零阶跃到额定转速的工况如果直接用反电动势法电机一开始会先往回退一下然后才往前冲这就是零速定位失败的表现。所以要想覆盖零速必须换一种不依赖反电动势的物理量。高频信号注入正是利用了电机转子的凸极性相当于给电机灌一个载体信号然后从高频电流响应里把转子位置抠出来这跟转速没有关系零速照样有效。1.3 高频注入的本质给电机加了一个“探测信号”我习惯用一个类比来解释高频注入给电机注入高频电压相当于往黑屋里扔一个皮球皮球撞到不同墙面反弹回来的声音不一样。电机定子电感随转子角度变化高频电压激励下产生的高频电流幅值也就随转子角度变化我们只要把这个电流变化解调出来转子位置就显形了。关键在于对于内置式永磁同步电机IPM交轴电感Lq和直轴电感Ld天然有差异凸极性明显高频注入效果很好。对于表贴式永磁同步电机SPMLd和Lq本来接近主要靠磁饱和引起交叉饱和形成微弱凸极信号强度弱很多注入幅值要加大解调也更吃力。做仿真时先选IPM比较省心我后面说的参数默认也是IPM。2. 高频信号注入的位置估算链路拆解2.1 高频模型下电阻和反电动势为什么可以先扔一边在高频激励下定子电阻的阻抗远小于电感阻抗反电动势项相对高频电压也可以忽略简化后的电压方程就剩电感与电流微分的乘积。这个简化是整条算法链路的起点也是为什么很多人看论文觉得公式长但实际搭建时简单很多的原因——你只需要关心电感矩阵怎么把高频电流调制出位置信息。具体来说高频电压注入后静止坐标系下的高频电流响应解析式里会同时出现正序分量和负序分量。正序分量不携带位置信息是“公共底噪”负序分量的幅值与转子位置显式相关且频率是注入频率的负值这就相当于把转子位置打包放进了负序分量。后续所有解调动作目标只有一个把负序分量里的位置信息取出来。2.2 旋转注入与脉振注入到底怎么选高频注入家族里最常见的是旋转高频电压注入和脉振高频电压注入。旋转注入是把一个高频旋转电压矢量加到静止轴系电流响应里的负序分量携带位置信息通常在静止坐标系的αβ轴做解调脉振注入是在估计的d轴方向叠加高频正弦电压然后从估计q轴的电流响应里提取位置误差。我的选择意见比较直接转子凸极性明显的IPM两种都能用表贴式电机优先考虑脉振注入因为饱和凸极的定向特性和脉振注入的轴系定义更匹配。但仿真验证阶段我强烈建议先从旋转注入入手因为旋转注入的解调在静止坐标下完成不需要依赖估计轴系逻辑更好理解调试起来不容易绕晕。等旋转注入跑通了再切到脉振注入去感受轴系定义的变化此时你就能理解为什么仿真里一不小心会把N极和S极弄反。2.3 位置误差信号是从哪一步“冒”出来的把静止坐标下的高频电流响应变换到估计dq旋转坐标系后计算得到的q轴高频电流分量和一个与注入频率同频的正弦参考信号相乘再经过低通滤波会得到一个与真实位置和估计位置差值高度相关的误差项。这个步骤统称混频解调原理就是三角函数的积化和差把高频分量搬到直流附近同时把二倍注入频率踢掉。这个误差项在位置误差为零时恰好等于零误差增大时它的幅值近似成正弦变化。换句话说解调出来的信号直接就是位置观测器的“输入偏差”我们把观测器设计成一个把偏差推到零的闭环系统观测器输出的角度就是转子位置的估计值。2.4 为什么带通滤波器的相位延迟不能忽略带通滤波器的任务是从电流信号里把注入频率分量捞出来同时把基波电流和开关纹波挡在外面。但任何带通滤波器都有相位延迟同一个注入频率的信号经过滤波器后相位会向后偏移。如果不做补偿混频参考信号的相位和实际高频电流的相位对不齐解调出来的误差信号会被“稀释”严重时直接归零。我在仿真里吃过这个亏滤波器选的是二阶巴特沃斯带通中心频率1kHz带宽100Hz发现位置误差波形有衰减增益调大后又出现抖振。后来意识到是滤波器引入了约20度相位滞后给参考正弦乘回去一个相位补偿量偏差才正常。你如果听到别人说“高频注入怎么调都收敛不了”先检查滤波器的相位补偿别一上来就怀疑观测器。3. 从零开始搭建一套能收敛的仿真模型3.1 仿真模型整体结构与模块划分我一般把整套模型分成六个子模块电机本体、逆变器与PWM调制、电流采样与坐标变换、高频注入与解调、位置/速度观测器、电流环与速度环控制。仿真步长用固定步长设到1e-6秒PWM开关频率10kHz电流环采样频率也是10kHz高频注入频率1kHz。这样分层的结构遇到问题能单独调试每个模块不用每次都看全模型卡在哪。搭建顺序上先把电机本体和电流闭环跑通让反馈电流能跟住给定值再叠加高频注入。这个方法非常重要别一上来就把无传感器整个链子搭好再看那样如果观测器不收敛你分不清是电流环带宽不够还是注入解调错了还是观测器参数不合理。分段验证能省大量排查时间。3.2 电机本体模型的参数取值与坐标变换细节用仿真软件自带的永磁同步电机模块是最快的方案但参数要对齐你的控制设计。我用的IPM参数和典型工程值保持一致额定转速3000r/min极对数4定子电阻0.2Ω直轴电感1.5mH交轴电感3mH永磁体磁链0.1Wb直流母线电压300V。坐标变换是整条链路的基础。电流采样放在逆变器输出端经过三相静止到两相静止变换Clark变换再由两相静止到两相旋转变换Park变换得到dq轴电流。关键是Park变换里用的角度必须是观测器估算角度而不是真实转子角度这也是无传感器和带传感器仿真模型的根本区别。对于仿真调试者来说这个角度选错会直接导致方向错误或误差为正很容易被误判成模块本身有问题。3.3 高频注入模块怎么和电流环电压给定叠加高频注入的叠加位置在电流调节器输出端。电流环输出的是d轴和q轴参考电压我们要在估计d轴的电压参考值上叠加上高频余弦电压信号。幅值我习惯取母线电压的3%到10%仿真里取10V频率取1kHz。注意叠加顺序高频电压信号不能叠在电流环反馈回路的参考端而要叠在电压指令输出上。原因是参考端叠加相当于给电流指令加扰动电流环会试图去消除这个高频扰动量在电压输出端叠加才是真正在电机端产生高频激励。很多人第一次搭模型时在这个位置放错结果高频电流响应里根本找不到注入频率分量。3.4 带通滤波、混频与低通滤波的具体实现带通滤波器中心频率就设在注入频率1kHz带宽60到100Hz带宽太小会让瞬态响应太慢太大又会放进更多无关噪声。滤波对象是估计q轴电流。在表贴式电机或者凸极性较弱场景还可以额外把估计d轴电流也做带通两个高频电流分量分别解调再组合能提高位置误差信号的幅度。混频时参考信号要选与注入频率同频的余弦信号相位要补偿滤波器滞后。补偿值怎么定可以让滤波器输出一个已知相位的高频信号在仿真里直接看波形测量输入输出相位差然后把这个值加到参考信号里。仿真里这样做最直观不用算群延迟。混频后的信号经过低通滤波器把二倍注入频率分量滤掉只保留包含位置误差的直流附近分量。低通滤波器截止频率设到100到200Hz就足够位置误差信号的带宽其实只有几十赫兹太高会把二倍频滤不干净。3.5 位置观测器的离散实现与带宽设计观测器我推荐用锁相环结构比例积分参数按二阶系统整定。带宽参数比较关键位置误差观测带宽不要超过电流环带宽的五分之一我通常设计在30到50Hz。阻尼比取0.707附近这样得到的比例系数和积分系数计算起来很方便。如果带宽太高观测器会放大高频噪声位置估计值抖得厉害如果太低起动和反转时跟踪滞后明显。仿真时可以先给一个固定转速观察估计角度和真实角度之间的稳态误差再用转速阶跃来观察动态跟踪。这里给一段按离散递推方式写的高频注入位置观测器示意代码方便你对照自己的模型检查函数关系。function [theta_hat, omega_hat] hfi_pll_update(theta_hat_prev, omega_hat_prev, eps_f, Ts, Kp, Ki) % 二阶锁相环观测器eps_f为解调后的位置误差信号 omega_hat omega_hat_prev Ki * eps_f * Ts; theta_hat theta_hat_prev (omega_hat Kp * eps_f) * Ts; end4. 仿真调试中的真实体验与经典异常现象4.1 从零速带载起动初始位置收敛需要多长时间我给速度给定设成零初始真实转子位置设在90度电角度观测器初始位置从0度开始让锁相环自己去收敛。收敛过程大约80毫秒内能把位置误差降到5度以内这个速度在我的预期之内。如果你发现位置估计值收敛慢先观察解调后的误差信号是否归零如果不归零多半是混频参考信号相位没补偿好如果误差信号是零但角度不更新则检查锁相环积分限幅是否设得太小积分输出被限幅卡住了。这类问题在代码调试里极其常见。4.2 电流环带宽、注入频率、滤波器频率三者之间的配合把这三个频率画在一张频谱图上就一目了然注入频率要远高于电流环带宽否则电流环会主动抵消注入电压注入频率又要远低于开关频率避免注入信号落在PWM谐波密集区。我取的是电流环带宽500Hz注入频率1kHz开关频率10kHz三者拉开足够的距离耦合影响很小。低通滤波器的截止频率要设计在电流环带宽和注入频率之间留出的空档里这样基波频率分量不会漏进解调信号。如果基波频率较高比如转速跑到3000r/min、极对数4时电频率是200Hz低通截止频率就不能设得太低不然会把基波分量也滤掉一部分。实际工程中要在载波比和滤波效果之间做折中。4.3 仿真里最常见的三处“妖蛾子”复盘第一处是初始位置误差接近180度时收敛很慢。高频注入方法本身能区分N极和S极但如果采用的是旋转注入解调后的误差信号在180度位置附近斜率趋近于零锁相环在这个点附近就像一个“死区”收敛几乎停滞。解决方法是给观测器加一个预定位过程用很小的电流先建立一个初始磁极方向或者启动时稍稍施加一个直轴电流脉冲让转子微动。第二处是负载突然增加时位置估计出现瞬时偏差。这是因为凸极性会随着负载变化而变化电感不再等于空载时的设计值注入信号频率下的阻抗也跟着改变。仿真里可以通过逐步加载荷转矩来观察这个偏差范围一般不要超过10度电角度如果偏差过大说明注入幅值偏低或者观测器带宽偏高。第三处是离散仿真步长过大导致高频信号采样点不足。我刚开始偷懒把固定步长设成50微秒注入频率1kHz每个周期只有20个采样点解调结果波动特别大。改成1微秒步长后每个周期有1000个采样点波形干净很多。仿真速度当然会慢但无传感器算法的正确性验证阶段不能省这个时间。4.4 参数怎么从“能转”调到“转得好”我先给一组经验初值方便你起步注入电压幅值10V注入频率1000Hz带通滤波器Q值20低通滤波器截止频率150Hz观测器带宽40Hz阻尼0.707。用这些值能把仿真跑通但要进一步压低估测角度误差就要按顺序做精细化调整。调整次序是先调注入幅值让高频电流响应的幅值明显超过噪声底但又不至于让电流谐波过大再调带通滤波器和混频相位补偿确保解调输出的误差信号在位置误差为零时真正过零最后调观测器带宽在响应速度和抑噪之间找平衡点。每调一步都记录位置误差波形的均方根值别只靠眼睛看波形曲线。给我印象最深的一次是某个组合下位置误差波形有一个周期性摆动频率正好是电机机械转频的四倍。查了一圈发现是逆变器死区效应在三相间产生了低次谐波叠加到高频电流响应上。仿真里如果用的是理想开关模型不会出现这个问题但我当时故意开了死区仿真就暴露了。这个后续放到实验环节会成为真实的麻烦仿真里最好早点验证一下死区对解调信号的影响量级。5. 从仿真往前走实验验证前必须补的知识与我的收尾体会5.1 仿真到实验之间有哪些“坑”在等着你仿真里把高频注入调通不代表实验就能直接搬。第一道门槛是电流采样环节实验里的采样电阻或电流传感器都有噪声高频电流信号幅值本来就比基波电流小一个量级滤波和解调的动态范围都要重新核算。第二道门槛是逆变器死区补偿死区会在电机端产生谐波电压频率和高频注入频段一旦交叠会直接污染解调结果。第三道门槛是控制器运算延迟。仿真里步长设得很小计算延迟几乎可以忽略但实验里从采样到PWM更新存在一拍或两拍延迟这些延迟会造成估算角度向后偏移需要在观测器里做角度补偿。补偿量不是固定的它跟速度相关高速时电角度偏移更明显通常要做成查表或者在线计算。还有一个容易被忽略的点是饱和。大负载时电机磁路饱和度变化凸极化方向可能偏转估算角度会额外出现一个偏置误差。实验里可以在带载情况下做一次角度误差的在线标定把它补偿掉。仿真虽然也能模拟饱和但绝大多数仿真模型用的电感是固定值标定思路需要提前留好。5.2 高频注入的边界不是所有电机都适合硬上如果电机凸极性很弱比如某些设计的表贴式电机几乎无磁阻差高频注入的成功率会很低。这时候一味加大注入幅值会带来两个问题一是高频电流在绕组里产生附加铜耗和噪音二是转子永磁体里会产生额外涡流损耗严重时发热明显。我见过有人把注入幅值调到母线电压的15%以上来“硬挖”位置信号最后波形是出来了但电机噪音听起来像电钻这样的方案进不了产品。高频信号注入和反电动势法的速度适用范围正好互补一个擅长零低速一个擅长中高速。比较稳妥的做法是在仿真阶段就把两套算法都搭起来零速到同步速以下用高频注入转速升高到反电动势信噪比足够时切换过去。切换点附近的过渡过程怎么平滑处理又是一个很值得折腾的方向。5.3 我最后想分享的一个小习惯每个仿真工程我都会保留一份参数记录表记录当前方案、电流环带宽、注入频率幅值、滤波器参数、观测器带宽、误差波形特点。不要偷懒省略这一步高频注入的参数耦合关系比普通矢量控制复杂得多改一个值可能同时影响滤波效果、观测器动态和位置稳态精度。没有记录的话三天后再回来看这个模型你可能完全想不起当初为什么选这组参数还得从头开始试。高频注入这个方向给我的最大感受是它不是那种套公式就能直接跑通的算法每一步原理都很清晰但连在一起就非常考验对信号链路的整体理解。但反过来一旦在仿真里把这条链路吃透无传感器控制的大部分核心难点也就基本打通了。后续如果你发现估算误差在某个负载点突然恶化几乎都可以回到“滤波器有没有漏进干扰”“观测器是不是带宽过高”“凸极性有没有饱和偏移”这三个老问题上来重新排查。