资讯动态

融合随机开关频率与低共模电压矢量的永磁同步电机模型预测控制

发布时间:2026/10/21 18:53:51 来源:尧图企业网站定制
做电机驱动这些年我对两件事一直很敏感一是重载工况下电机传来的高频电流啸叫二是拆开电机后轴承滚道上密密麻麻的麻点。前者多半来自开关谐波的离散频谱后者则和共模电压脱不开干系。永磁同步电机的模型预测控制MPC这两年热度很高靠的是“直接根据模型预测未来状态、逐个枚举开关状态选最优解”的思路动态响应快、约束处理灵活可惜常规有限集MPC天生带着两个毛病——开关频率不规律导致谐波频谱难看候选矢量里又默认包含后果严重的零矢量于是共模电压偏高。把随机开关频率和低共模电压矢量融合进同一个MPC框架这个话题我前前后后折腾了大半年踩过的坑比收获的经验还多趁今天把原理、设计、仿真和实验里的门道一次讲透。如果你正在做电机控制器、变频器或者纠结要不要把MPC搬进量产项目这篇内容值得看完。1. 两个孤立痛点为什么非要绑进同一个MPC1.1 常规FCS-MPC动态性能确实好代价也实在模型预测控制的基本思路很直接把逆变器所有可能的开关状态列出来用电机数学模型挨个“预演”下一个采样时刻的电流再通过代价函数挑选结果最优的那个状态接下来的一个控制周期就按它来。两电平逆变器一共8个开关状态就算全部枚举计算量也比解算一个连续最优控制问题小太多了所以它最大的卖点就是概念简单、动态响应快、多目标和约束都好处理。但这里有个隐含的坏消息一个控制周期只作用一个开关状态没有载波调制去不断“打磨”输出电压电流纹波天然偏大更麻烦的是开关状态每个周期都在变开关频率不是设计值而是由代价函数和当前工况共同“碰”出来的。稳态运行时不时切换拓扑谐波频谱因此变成一堆位置不固定的离散尖峰。你在机房里听到那种高频“滋滋”声很多情况下就是这些东西在作祟。这里插一句我见过不少刚接触MPC的朋友一上来就说“这个方案完美”实际上拿功率分析仪测一下相电流THD会发现它比经过精心整定的SVPWM差一截。1.2 共模电压不是玄学是轴承电蚀的元凶共模电压指的是三相输出对公共参考点的电压成分注意这里的重点是“共有”而不是“差模”。两电平逆变器里同一时刻三个桥臂的导通状态决定了共模电压大小零矢量000或111时三相桥臂同进同出共模电压会冲到母线电压的一半而六个有效矢量造成的共模电压最多也只有母线电压的六分之一。这个差别不是静态常数而是一连串高速跳变的脉冲每一次跳变都会通过电机绕组对地电容、轴承内外滚道之间的寄生电容形成共模电流。共模电流的终点往往就是轴承微小电弧反复击穿润滑油膜长期运行下来滚道表面就会出现电蚀麻点这也是很多电机异响、振动增大的隐藏原因。同时线缆和机壳构成的回路会向周围辐射电磁骚扰EMC测试里常见的超限频段很多就是共模回路贡献的。所以在MPC的候选矢量里引入“低共模电压”约束本质上是把可靠性和电磁兼容问题前置到算法层面而不是等样机出来后到处贴磁环、加共模电感去补救。1.3 随机开关频率的真正靶点把频谱打散随机开关频率很多人误解成“让开关频率不固定损耗就小了”其实不完全是。固定开关频率下谐波能量高度集中在该频率以及整数倍附近呈一根根尖刺。人耳和EMI接收机对这些尖峰最敏感所以主观听感刺耳测试也容易在某几个频点超限。随机开关频率的思路恰恰相反让每个控制周期在均值附近随机抖动把原本集中的能量铺开放到更宽的频带里。能量总量并没有凭空消失但尖峰高度显著下降频谱包络变得平缓听感从尖哨声变成类似白噪声的背景声。这个思路一旦移植到MPC里影响的是整个时间尺度控制周期本身就是MPC的预测步长和执行步长周期一随机预测公式里的离散化步长也在变这件事不做对后面全是坑。回头再看这个标题随机开关频率管的是“时间域”低共模电压矢量管的是“空间域”一个是把周期性激励打散一个是从源头上掐掉高共模状态的产生。两者天然需要在同一个控制器里共享候选集、预测模型和执行时序这也是我为什么说把它们“融合”不是标题党的组合而是确实绕不开同一个框架。2. 机理拆解零矢量出局之后随机周期怎么落地2.1 一张表看懂两电平逆变器的共模电压分布先把硬件事实摆出来。忽略器件压降以直流母线中点为参考点三相输出相对该点的电位要么是Vdc/2要么是-Vdc/2。那么8个开关状态的共模电压可以算得非常清楚我做了一张现成的表开关状态矢量共模电压相对母线中点是否选入低共模候选集000V0-Vdc/2剔除111V7Vdc/2剔除100V1-Vdc/6保留110V2Vdc/6保留010V3-Vdc/6保留011V4Vdc/6保留001V5-Vdc/6保留101V6Vdc/6保留这个表非常好用它直接说明了为什么“低共模电压矢量”策略的第一步就是剔掉V0和V7。只要候选集里还留着零矢量优化器在某个特定位点一定会贪婪地选它因为零矢量能让平均输出电压变得很“小巧”代价函数看着很舒服。可一旦选上共模电压峰值就直接跳到母线电压的一半。剔掉零矢量之后单周期单矢量方案迎来了新问题一个有效矢量作用整个周期平均电压的最小步长下不来。低速轻载时需要很小的输出电压可单个有效矢量在一整个周期里积出来的电流变化量偏大于是代价函数只能在相邻有效矢量之间反复横跳。这也是后面要引入占空比合成的原因先记住结论。2.2 随机开关频率的工程约束周期不是想跳就能跳随机开关频率落到工程上最朴素的做法就是让控制周期围绕基准值抖动Ts(k) T_base ΔT * ξ_k其中ξ_k取[-1,1]之间的均匀分布随机数ΔT一般取T_base的20%到30%。这个范围不是拍脑袋定的开得太大电流环带宽和预测模型的离散化误差都扛不住开得太小频谱扩散效果不明显和定频就没区别了。实际操作中还有三个硬约束必须守住周期下限必须大于ADC采样转换时间、枚举计算时间和死区时间之和否则下一次中断还没执行就被截断了指令和实际动作会错位周期上限受电流环带宽限制通常不要让Ts超过T_base的40%到50%太长时间不更新控制电流容易过冲相邻两个周期的变化幅度最好也做限幅防止连续大跳变让电流波形出现一吸一扩的“呼吸感”实测这种包络非常难看还会激励机械谐振。这些约束归结起来就是一句话随机频率的“随机”应该是受控的随机而不是失控的抖动。2.3 随机周期下的离散预测模型公式要逐周期刷新永磁同步电机在dq旋转坐标系下的电压方程是u_d R_s * i_d L_d * di_d/dt - ω_e * L_q * i_qu_q R_s * i_q L_q * di_q/dt ω_e * (L_d * i_d ψ_f)常规做法是用一阶欧拉法把它离散化得到电流预测公式i_d(k1) i_d(k) Ts(k)/L_d * [u_d(k) - R_s * i_d(k) ω_e * L_q * i_q(k)]i_q(k1) i_q(k) Ts(k)/L_q * [u_q(k) - R_s * i_q(k) - ω_e * (L_d * i_d(k) ψ_f)]注意这里的关键变化Ts(k)是当前随机周期的真实值不是平均基准值。我最初做仿真的时候就折在这里后面会专门讲。另外一个随机周期内默认转速不变这个假设在Ts偏大的时候会被放大误差所以随机范围一定要留余量如果非要大范围随机建议把一阶欧拉换成梯形法或二阶离散否则高速弱磁区间的预测值会明显偏掉。3. 可以直接照搬的控制器实现框架3.1 候选集怎么设单矢量入门双矢量实用低共模MPC的第一个设计决策是候选集。最省事的方案是从8个矢量里删掉两个零矢量候选集只剩6个有效矢量每周期枚举6次计算量极小。这个方案适合用来理解原理但低速电流纹波偏大实用性有限。更实用的是双矢量方案一个控制周期内先后作用两个相邻的有效矢量通过分配两者的作用时间来等效合成任意大小的平均电压。这样既不必用零矢量兜底又能把低速下“电压步长太大”的问题解决掉。候选集从6个矢量变成6个相邻矢对枚举过程会多一点但对于常见DSP来说仍然很轻松。需要提醒的是双矢量方案的开关次数会比单矢量多必须在代价函数里放一个“开关次数损失”项否则开关频率失控逆变器温升先爆炸。3.2 代价函数三个目标怎么加权才不打架这一节是整套算法的灵魂。我用的代价函数长这样J γ_i * [(i_d* - i_d(k1))² (i_q* - i_q(k1))²] γ_sw * n_sw(k) γ_cmv * g_cmv(k)三个部分各管一件事第一项电流误差这是主目标建议权重固定为1方便其他权重对比第二项n_sw(k)是当前所选开关状态相对于上一周期状态的桥臂切换次数范围0到3直接约束开关频率第三项g_cmv(k)是共模惩罚项如果候选集已经剔除了零矢量这项目前就是0可以省掉只有当你决定在候选集里“留一个零矢量备用”时才需要给它一个很大的惩罚。随机周期下第二项有个细节一次开关动作在一个长周期里分摊的频率贡献比短周期里小所以更公平的写法是把n_sw(k)折算成n_sw(k)/Ts(k)也就是以“估计开关频率”参与代价函数。这个折算我强烈建议写上否则长周期出现时算法会过度珍惜开关次数导致波形在长短周期交界处产生毛刺。权重的初调没有灵丹妙药我的顺序是先把γ_i固定为1γ_sw从0.1到1之间做线性扫描观察电流THD和平均开关频率的折衷再把γ_cmv在需要时调到1到3之间保证它优先压住共模峰值。最终值还是要在稳定工况和阶跃响应之间反复搓直到两个工况都看得过去。3.3 一个控制周期的完整执行时序说一千道一万算法最终要落到固定的执行流水线上。以双矢量低共模MPC为例一个周期内的顺序大致是周期起点触发ADC采样同时读取转子位置和母线电压计算本周期随机值Ts(k)写入定时器并做限幅钳位ADC数据就绪读取三相电流并变换到dq坐标系更新当前工作点电角速度、磁链估算枚举候选矢对逐个预测i_d(k1)、i_q(k1)代入代价函数选出最优矢对和占空比输出开关状态保持到周期结束若采样值触发过流阈值立即跳进保护流程优先级最高。这里必须强调一拍延时补偿。从ADC采样到开关动作真正落实中间隔了一个控制周期的计算延迟所以严格的做法是先按上一拍实际作用的开关状态预测出k1时刻的电流再枚举候选矢量去预测k2时刻的电流。随机周期下这段时间跨度等于Ts(k)Ts(k1)两个周期都必须使用各自真实值缺一个都不行。4. 仿真和上机调试里我踩过的那些坑4.1 第一轮仿真翻车把随机周期当常量代入模型我最初做随机MPC仿真的时候想得很天真既然平均开关频率是20kHz那把离散模型里的Ts写死成50微秒不就行了吗结果电流波形像穿了一层带花边的袜子——纹波一大一小来回包络怎么看怎么不对劲。排查到最后原因非常低级实际执行的长周期里真实电流变化量早就超出了按固定Ts计算出来的预测值每个随机周期末尾预测值和实测值之间的误差被周期性地放大。后来改成每个控制周期开始时先读入真实Ts(k)再拿它去刷新预测公式包络立刻消失。这个坑很小但特别容易踩因为仿真环境里固定步长默认值会掩盖问题等你换到真实控制器上才爆发。4.2 参数漂移在长周期下被成倍放大电机是“加热体质”转子磁钢温度升了磁链ψ_f会变负载重了铁心饱和导致L_d、L_q明显下降。预测公式里Ts(k)直接乘在电压误差项上长周期样本会把参数失配的误差放大选出来的矢量越来越偏。我的经验是三个对策按需组合在预测模型上加扰动观测器把参数失配和未建模动态折算成集总扰动每次预测时从电压项里扣掉每隔几十毫秒在后台跑一次最小二乘参数辨识把结果更新到预测模型里如果暂时不想上复杂观测器至少做一次离线参数辨识把初始模型摸准别拿铭牌参数硬算。4.3 剔除零矢量后低速工况会跟你玩“颤振”这是低共模MPC最现实的代价。没有零矢量低速轻载时需要的平均电压很小但单个有效矢量作用整个周期产生的电流变化量明显过大代价函数在相邻两个有效矢量之间来回横跳每个周期开关次数又多电流又纠结听起来就像电机在打哆嗦。解决路径就是前面说的双矢量占空比合成一个周期内先作用矢量1一段时间再作用相邻矢量2一段时间等效合成一个更小的平均电压。这样低速纹波能压下来共模电压还维持在±Vdc/6附近。代价是开关次数上升需要靠代价函数里的开关频率项来找平衡。还有一个连带问题剔零矢量后电压利用率会有损失直流母线电压波动大的场合尤其明显。我当时在某个母线波动测试里看到输出基波开始削顶代价函数像“不知所措”一样总是在两个矢对之间徘徊那之后我就把过调制判断加进了保护逻辑一旦进入线性区边缘就限制随机范围并提示母线欠压。4.4 上机调试最容易忽略的三个细节第一个是随机数生成。中断服务程序里现场算随机数既不节省资源还会引入不确定延时。我习惯离线预生成一张1024点的随机周期表循环读取或者用移位寄存器做伪随机序列实测都很稳定。第二个是采样触发相位。必须固定在每个随机周期的开始时刻触发ADC不要在周期中间或末尾触发。否则采样点相对电压矢量中点的位置不断漂移电流谐波测量结果会乱到没法看频谱分析出来的数据基本不能用。第三个是死区补偿。随机周期下死区时间占总周期比例不固定低速时误差电压会随周期长度抖动中高速跑起来很容易出现低频毛刺。建议在死区补偿逻辑里把当前Ts(k)一起算进去别用固定补偿值。5. 这套方案到底值不值指标体系、三方对比与失效边界5.1 评价指标怎么搭研究做没做成不能只看一条曲线。我通常把评价拆成六项指标关注原因常用测量手段相电流THD波形质量和损耗功率分析仪或FFT共模电压峰值轴承电蚀风险差分探头测对地/对中性点电压谐波频谱包络/EMI峰值传导骚扰和主观噪声频谱分析仪加电流探头平均开关频率器件损耗和温升统计单位时间开关次数转矩脉动机械噪声和振动转矩传感器或加速度计电流阶跃响应时间闭环动态性能记录电流阶跃波形上升时间这里有个容易被误解的点随机开关频率方案改善的是EMI峰值不是EMI总能量。能量守恒摆在那里算法只是把能量从几根尖刺摊到一片宽带里所以评估时一定要看频点峰值别只看总发射功率。5.2 定频PWM、常规MPC与融合方案的三方对比用一张表把三者的定位说清楚方案电流THD共模电压峰值EMI谱形状动态响应算法复杂度典型适用场景常规定频PWMSVPWM较好高含零矢量离散尖峰依赖PI带宽低通用工业变频常规FCS-MPC一般高离散且频移快低高动态伺服融合方案随机低共模中等低连续而低矮快中高动态EMC/轴承寿命要求高的场合融合方案不是把两个技巧简单叠加就能白嫖好处实测结果往往是THD比常规MPC略高一点需要用占空比合成和参数辨识去“找补”但换来的是共模电压峰值从母线电压一半降到六分之一、EMI峰值明显下压、主观噪声从刺耳变柔和。对电动汽车类高可靠、高动态、强EMC需求的场景这个交易是划算的。5.3 失效边界别指望它包打天下任何算法都有适用范围融合方案也不例外。我总结出四个最容易翻车的场合极低速、零速工况候选集无零矢量会陷入高频颤振除非加入“低速切换回常规MPC”的工况调度逻辑大功率器件开关频率预算很低随机范围开不大频谱扩散效果有限低共模的优势还在但随机频率这一项的红利大打折扣参数严重漂移又没有在线校正预测模型失真后MPC选矢量基本就是“拍脑袋”再好的候选集也救不回来对EMC要求极其苛刻的规范算法能把共模峰值压到Vdc/6但高频共模电流的dv/dt仍然不低该加共模扼流圈、Y电容屏蔽等硬件手段还得加算法只能做辅助不能当全部指望。最后说几句实操体会。融合随机开关频率与低共模电压矢量技术含量不在某一个技巧上而在如何把时间域的随机化、空间域的矢量约束同时塞进一个逐周期枚举的框架里还要保证每个环节互相不打架。没有仿真里摔过的几次跟头这些细节根本记不住。以后如果再往下做我想把它往三电平甚至更大电压等级上搬但会先回查这一套在两电平上的设计骨架毕竟坑是排完了但设备也该换了。

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

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

免费获取报价 →
↑