ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

SVPWM过调制详解:突破线性区,榨干母线电压利用率

SVPWM过调制详解:突破线性区,榨干母线电压利用率 最近在帮一个做电动工具的客户调FOC方案碰到一个很有意思的现象电机在高速段转速就是上不去母线电压已经拉到极限SVPWM输出波形也已经削顶了可电机还是软绵绵的。后来把过调制逻辑加进去同样的母线电压转速直接提了一截客户当场就说“这板子还能再战两年”。这个经历让我一直想写点东西把SVPWM过调制这块彻底讲清楚。先给不熟悉的朋友做个铺垫FOC磁场定向控制是当前PMSM/BLDC高性能调速的主流方案SVPWM空间矢量脉宽调制是FOC里决定三相逆变桥开关状态的核心环节而过调制就是SVPWM超出线性调制区之后继续压榨母线电压利用率的那部分算法。这篇博文适合正在做电机控制驱动开发的工程师、搞无感FOC入门的学生以及想搞清楚“为什么SVPWM会削顶”“调制度到底能拉到多少”的人。我会从原理、实现到调试坑位把过调制这条线完整串一遍。1. 过调制到底解决什么问题1.1 母线电压利用率是FOC的隐形天花板做电机控制的人都知道母线电压一旦定死电机能跑到的最高转速和最大输出转矩就跟着被框死了。很多人一开始只盯着电流环和速度环的PI参数调觉得转速上不去就是闭环没调好其实更常见的原因是你根本没把母线电压这摊水榨干。这里要引入一个概念母线电压利用率。简单说就是逆变器能把直流母线电压转成多少交流线电压有效值给到电机。理想情况下如果六个功率管能输出完美的正弦波线电压峰值最多也就等于母线电压Udc。但在实际PWM调制里三相桥臂的输出电压受限于开关组合正弦波的等效幅值不可能无限接近母线电压线性区有一个严格的几何边界。以SVPWM为例线性调制区的电压矢量幅值上限是 Udc/√3。什么意思就是你要输出一个相位连续旋转的电压矢量它的幅值最多到 Udc 的 0.577 倍。如果需求电压幅值超过这个值矢量就会超出六个扇区组成的正六边形内切圆此时如果硬按照线性SVPWM去算得到的占空比就会出现负值或超过100%也就是我们常说的“过调制”。很多工程师第一次看到这里会问那我把占空比直接饱和比如算出来120%就截断成100%不也一样吗这其实是“限幅”而不是“过调制”。直接截断会造成电压矢量幅值和相位都发生严重畸变电流波形变差转矩脉动增大甚至导致电流环饱和。而过调制算法做的事情要精细得多它主动重新规划电压矢量的轨迹在牺牲少量波形质量的前提下把调制深度有控制地推到极限。1.2 为什么普通SVPWM喂不饱电机普通SVPWM在调制度小于1的时候输出的是一个完全线性的关系给定电压矢量多大实际平均输出就多大谐波很小电流波形漂亮。但在FOC的实际工况里电机一旦进入高速区或重载区电流环给出来的电压指令通常会超过线性区上限。举一个实际的例子。某款额定转速3000rpm的PMSM母线电压48V反电动势系数Ke约0.045V/rpm。在3000rpm时反电动势已经有135V的线电压峰值折算到相电压峰值约78V。而48V母线经SVPWM线性区最多只能输出 48/√3 ≈ 27.7V 的相电压峰值。显然如果只靠线性区这电机根本到不了3000rpm。实际系统中还会叠加电感和电阻的压降需求电压更高。这时候你有两条路一条是弱磁控制通过注入直轴去磁电流来压低反电动势另一条就是过调制直接提高逆变器对母线电压的利用率。两者不冲突工程上经常配合使用过调制负责把线性区那层天花板顶破弱磁负责处理反电动势过高的问题。很多只做弱磁不加过调制的方案其实并没有把母线电压用满导致弱磁电流偏大、铜耗升高、效率下降。1.3 过调制在什么场景下真正有用不是所有FOC项目都需要过调制。我大致归纳了三类典型场景。低速大扭矩场景通常不需要因为电压需求不高线性区完全够用。高速轻载场景价值很大比如电动工具、吸尘器、无人机电机电机转速要求很高但负载不大过调制几乎免费蹭出一截转速。重载高速场景价值也很大比如电动汽车主驱、电动摩托车既要转速又要转矩过调制可以在不提高母线电压的前提下把转矩输出能力进一步提升代价是谐波和噪音变大。另外在电池供电的便携设备里母线电压是电池电压直接给的没法随便升高过调制就是“不加硬件成本白捡性能”的手段。2. 过调制的原理拆解从线性区到非线性区2.1 电压矢量与调制比的数学关系先规定变量。三相逆变器有六个非零电压矢量V1~V6幅值都是 2Udc/3方向相隔60度还有两个零矢量V0和V7。SVPWM的基本思想是在一个PWM周期内用相邻的两个非零矢量加零矢量去合成任意方向和幅值的电压矢量。定义调制度或调制比 M Vref / Vlin_max其中Vlin_max Udc/√3。当 M≤1 时系统工作在线性调制区当 M1 时进入过调制区。SVPWM理论上能达到的最大相电压基波幅值是多少是正六边形顶点到中心的距离也就是 2Udc/3。因此 M 的理论最大值为 (2Udc/3) / (Udc/√3) 2/√3 ≈ 1.1547。这意味着过调制最多只能把基波电压幅值再提升约15.47%。不要小看这15%对转速来说在反电动势占据主导的高速段转速提升比例几乎直接等于电压提升比例。对转矩来说在电流环不饱和的前提下输出转矩也能提升相近的比例。但代价是电压矢量不再沿着圆轨迹走而是往六边形边界靠输出电压里会多出大量5、7、11、13次谐波。2.2 线性调制区的边界很多教材把SVPWM线性区说成“内切圆”但工程上理解更简单你画一个正六边形六个顶点对应六个非零电压矢量正六边形的内切圆就是线性区的边界。当电压矢量旋转到某个扇区时如果它的幅值超过内切圆半径在扇区边界附近就会出现“合成不出来”的情况算法算出来的作用时间会出现负数。为什么内切圆半径是 Udc/√3拿第一扇区举例V12Udc/3方向0度V22Udc/3方向60度。要合成一个角度θ、幅值Vref的矢量V1和V2的作用时间比例为 t1:t2 sin(60°-θ) : sin(θ)。两个时间的总和 t1t2 Vref·cos(θ-30°)·T·√3/Udc。要让 t1t2≤T也就是 Vref≤Udc/(√3·cos(θ-30°))。这个不等式在θ30°时最严格得到 Vref≤Udc/√3。这就是内切圆半径的来历。一旦M超过1原来的时间计算公式直接失效。如果只是简单把负时间钳到0、把超出的钳到T电压矢量会变成一个贴着六边形边界走的轨迹相位误差忽大忽小。这种“硬限幅”在过调制深度比较浅时还能忍但M超过1.05之后谐波会急剧恶化工程上很少裸用。2.3 过调制带来的谐波代价过调制本质上是用波形失真换电压增益。M1时输出还是标准正弦谐波几乎可以忽略M1.1时相电压里已经有明显的削顶现象主要谐波是5、7、11、13次THD可能到百分之十几M逼近1.1547时电压矢量轨迹退化成贴着正六边形走相电压波形接近梯形波谐波分量更丰富THD轻松超过25%。谐波增大带来的直接后果是电流波形变差。电机电感对高次谐波有滤波作用但不可能完全滤掉所以相电流里会出现明显的波纹和“平顶”特征。进而导致电磁转矩脉动增大噪音变刺耳铁损增加效率反而下降。所以过调制不是无脑拉满而是要在电压需求和波形质量之间找平衡点。工程上一般把M控制在1.02~1.12之间比较常见。具体看应用电动工具这种短时爆发工况M拉高到1.15都能接受因为只是峰值功率阶段持续几秒但风机、水泵这种长期运行的设备M超过1.05就要慎重噪音和温升可能不划算。3. 双模式过调制算法与实现3.1 单模式过调制最小相位误差思路过调制算法学术界提了很多种工程上落地最广的是两类单模式过调制和双模式过调制。单模式过调制的核心思想是当电压矢量幅值落在内切圆之外时不再追求精确的圆形轨迹而是把电压矢量强制“拉”到六边形边界上并尽量保持相位误差最小。具体做法是先判断角度落在哪个扇区然后计算该角度下六边形边界对应的幅值将实际输出幅值钳到边界值。这种算法的优点是实现简单只需要一个查表或者一条三角函数计算。缺点是整个过调制区间只用一种处理方式在大调制比时误差比较大在浅度过调制时又过分激进谐波增加偏快。早期一些低成本方案喜欢这么做因为MCU资源紧张能省一点是一点。如果是做高端伺服或者车用主驱我不太建议用单模式扛过调制区效果不够细腻。3.2 双模式过调制I区、II区双模式过调制把 1M≤1.1547 这个区间再切开分成过调制I区和过调制II区不同区间用不同的处理策略。过调制I区的范围大约是 1M≤1.05。这个区间里电压矢量大部分时间还能沿着圆走但每到一个扇区的边界附近会有一小段需要贴到六边形的边上。算法上可以这样理解保持电压矢量的相位基本不变但在幅值超限的区域把幅值钳到六边形边界而在其他区域仍按线性区输出同时要补偿因为钳位损失掉的面积把整个周期的基波幅值修正回来。工程实现上很多方案直接引入一个修正系数把参考电压先放大一点相当于把内切圆“胀大”到一个偏心的椭圆用相位修正去逼近理想的六边形。过调制II区的范围大约是 M1.05。此时电压矢量在绝大部分角度都贴着六边形边界走只在过零点附近短暂脱离边界。极端情况下输出波形已经非常接近六步换向的方波或梯形波。这时算法会干脆利落地切换到一种类似方波的模式用一个保持角α来控制六边形边界的停留时间。保持角越大波形越接近方波基波电压越高。双模式的好处是在浅度过调制区能保持较好的波形质量在深度过调制区又能平滑过渡到极限状态不会出现跳变。实际调参时关键是确定I区和II区的切换点这个点跟电机参数、负载特性都有关系不能照抄别人的数值。3.3 考虑死区与最小脉宽做过分调的工程师都知道过调制真正难的不是算法本身而是和硬件限制的配合。这里重点提两个硬约束死区时间和最小脉宽。死区时间是上下桥臂防止直通而插入的延迟一般几百纳秒到几微秒。在正常调制时死区只带来很小的电压误差PI环能自动补。但在过调制区输出电压脉冲宽度可能被压得很窄。当理论占空比小到比死区时间还短时桥臂实际上输出的是死区主导的无效脉冲电压误差会变得很大电流波形出现明显的抖动。最小脉宽限制是驱动芯片和功率管自身决定的通常要求PWM高电平或低电平的持续时间不小于某个值比如1微秒否则驱动芯片跟不上开关管不能完全导通或关断损耗剧增甚至炸管。过调制计算出来的脉宽如果小于这个限制不能简单丢弃要通过修正算法把窄脉冲合并或调整到相邻周期保证输出平均值尽量不变。我见过不少过调制调试崩溃的案例最后查下来都是最小脉宽处理没做好。算法层面推得天花乱坠一到低温、低压、大电流工况就炸基本都是窄脉冲惹的祸。3.4 实现要点与参数计算双模式过调制在MCU里的实现我总结了一套比较顺的流程第一步电流环输出得到Vα和Vβ计算参考电压幅值 Vref sqrt(Vα² Vβ²) 和角度 θ atan2(Vβ, Vα)。第二步判断 Vref 是否大于 Udc/√3如果小于或等于走正常SVPWM如果大于进入过调制处理。第三步根据调制度 M 的大小选择过调制I区还是II区策略。第四步把修正后的电压矢量重新做反Park或直接做SVPWM扇区判断和时间计算。第五步对计算出的占空比做最小脉宽修正和死区补偿输出PWM。这里有一个容易被忽略的细节过调制修正后的电压矢量幅值和相位都变了如果你用的还是原来电流环算出的角度去查扇区可能会在扇区边界出现抖动。所以修正逻辑最好输出一个新的参考矢量幅值角度再交给SVPWM模块重新处理不要只改幅值不改角度否则扇区判断会频繁跳变。关于保持角α的计算这里给一个工程近似思路。对过调制II区可以事先做一次标定在不同M值下扫描保持角记录输出基波幅值建立M-α查表。如果不想做离线标定也可以用解析近似公式但精度略差。考虑到MCU的算力余量查表法是更稳妥的选择256点表格基本就够用了。4. 实际调试当中踩过的坑4.1 母线电压波动会直接改变调制度过调制算法里几乎处处要用到母线电压Udc。你把这个数取错了后面全是白算。很多方案在初始化时读一次母线电压就当成常量用这在电池供电的设备里是大坑。电池在放电过程中电压会持续下降尤其是大电流负载下内阻压降非常明显。如果你还用初始Udc去算调制度实际调制深度会比预期高可能已经进入深度过调制还在按浅度过调制处理谐波严重超标。反过来如果电池电压回升又可能错误进入深度过调制区。所以在过调制模块里母线电压必须实时采样最好是做一阶低通滤波避免采样噪声导致调制度来回跳。滤波时间常数取几毫秒比较合适太快会有高频扰动太慢跟不上母线波动。另外母线电压采样最好和电流采样同步特别是在单电阻采样方案里母线电压抖动量在开关切换瞬间很大异步采样会引入明显误差。这一点在做高母线电压平台比如400V时尤其关键因为相同的采样误差在高电压下对应的电压绝对误差更大。4.2 电流采样噪声在过调制区被放大FOC的电流环对电流采样质量极其敏感。正常线性调制区电流波形光滑采样点选在PWM中心噪声相对小。进入过调制后波形出现削顶电流中存在大量开关频率边带谐波采样点的信噪比明显下降。单电阻采样在这种工况下尤其难受。单电阻采样依赖上下桥臂开关状态产生有效的采样窗口但过调制区窄脉冲很多零矢量时间被压缩采样窗口可能不够宽导致采样点落在电流建立过程的中间采到的值根本不是相电流平均值。轻则电流环抖动重则触发过流保护误动作。我建议所有做FOC且打算上过调制的项目优先设计双电阻或三电阻采样。如果成本实在压得紧必须用单电阻那就要在算法上做“采样窗口预测”提前判断当前PWM周期内哪个采样窗口宽度够用动态调整采样时刻必要时跳过一拍用上一拍的电流值顶替。这属于进阶玩法新手不建议一上来就搞。4.3 轻载空载下的转矩脉动与振荡过调制在重载高速下表现很好但轻载或空载时容易出问题。原因是轻载时电流环给出来的电压指令本来就小按理说不该进入过调制区。但由于反电动势在高速段很高电压指令里被反电动势占了大头即使负载很轻电压幅值仍然可能超过线性区上限也会触发过调制。这种工况下电机的电流有效值很小谐波电流幅值虽然不大但相对占比很高容易引起明显的转矩脉动。表现出来就是电机在高速空转时噪音变大、转速有微弱的高低起伏甚至速度环在小范围内振荡。解决思路有两个方向一是给过调制加一个使能条件只有电流环输出转矩电流足够大时才允许进入过调制区轻载时宁可在线性区限幅也不要让过调制参与二是把速度环带宽适当降低过滤掉过调制引入的脉动但这会牺牲动态响应看实际工况取舍。4.4 弱磁和过调制配合时先调谁很多PMSM系统是弱磁加过调制一起用的这就有个先后顺序问题。我踩过的一个坑是一开始把弱磁调得太激进导致去磁电流过大电压指令反而被压回线性区过调制模块一直没触发相当于白做了。后来把顺序反过来先让过调制把电压用满再用弱磁弥补剩余电压缺口整体效果明显改善。工程上我的建议是正常情况下优先使用过调制直到M接近1.10~1.15左右再切入弱磁。如果有动态工况可以在弱磁和过调制之间做一个平滑过渡避免两个模块抢调节权引起电流环抖动。这个平滑过渡可以用一个权重系数实现权重根据M的值连续变化不要做成硬切换。4.5 常见问题速查表现象可能原因排查与解决转速提不上去过调制未触发或M上限设太低确认Udc采样正确检查M计算逐步提高M上限电流波形严重畸变过调制过深或死区补偿不足降低M上限检查死区补偿增大电流环带宽电机噪音刺耳5、7次谐波过大用较浅的过调制区优化I区和II区切换点轻载高速抖动轻载误入过调制区增加电流转矩分量使能条件单电阻采样偶发过流窄脉冲导致采样窗口不足改用双电阻采样或实现动态采样窗口预测母线电压跌落时失稳调制度计算滞后实时低通滤波Udc缩短滤波时间常数过调制区温升过快谐波损耗过大降低M上限或缩短进入过调制的时间占比注意上表是通用排查经验不同功率等级和电机参数下现象会有差异建议用示波器同时抓母线电压、相电流和PWM脉冲波形综合判断。5. 过调制对FOC控制环路的整体影响5.1 对电流环PI参数的影响进入过调制区后电流环的感受是电压指令的“增益”发生了变化。在线性区你加大比例环节增益电流环响应基本线性但在过调制区电压被六边形边界限制电压指令的一部分被钳位掉电流环等效增益下降表现出来是电流动态响应变慢。这就造成一个很尴尬的情况你用同样的PI参数线性区电流环表现良好一进过调制区就变肉如果把PI调急了回到线性区又可能振荡。比较实用的做法是根据调制度M动态调整电流环增益M越大适当增加Kp补偿被钳位吞掉的增益。这个补偿系数可以通过实验扫出来或者做在线辨识。但别把这个问题想得太严重。过调制区通常只在高速和重载时出现这时电流环的主要任务是保证稳定而不是追求极致的动态响应。只要不振荡动态稍微慢一点问题不大。真正的难点在过调制区和线性区的交界处两个区域的等效增益变化最大电流环最容易在这里出现波动调试时要重点关注这个切换点。5.2 谐波电流对转矩和温升的影响谐波电流是过调制必须承受的代价。这些谐波电流不产生有效的平均转矩但会在绕组里产生铜耗在铁芯里产生铁耗导致电机温升明显上升。尤其对于内置式PMSM凸极效应使得某些次数的谐波电流还会产生额外的脉动转矩影响低速运行的平顺性。我实测过一个案例M从1.0提升到1.12基波电压提升了约10%但电机相同输出功率下的温升上升了约15度噪音增大了5dB以上。这对某些应用是致命的比如医疗器械、家用净化器这类对噪音敏感的产品过调制策略就要很克制宁可牺牲一点最高转速也要保住舒适性。所以过调制参数不是一次性调好就一劳永逸的。比较好的做法是设计一个“过调制深度-时间”的管理策略短时间冲刺可以允许拉到1.15但持续运行超过若干秒就自动降到1.05以下。这在电动工具上尤其实用因为钻孔和冲击的持续时间都很短过调制带来的散热压力平均下来是可以接受的。5.3 与传统六步方波控制的关系聊到深度过调制就绕不开六步方波控制。传统无感方波控制也叫梯形波控制本质上就是把SVPWM过调制拉到极致电压矢量完全贴着六边形边界走每60度换一次开关状态基波电压利用率达到理论极限。深度过调制算法的波形越来越接近方波正是在往这个极限靠。但两者有一个本质区别方波控制只有六个离散的电压矢量位置电流换相逻辑简单但转矩脉动大、噪音尖锐而FOC加深度过调制只是电压波形接近方波电流环和磁链定向依然在运行电机还是按矢量控制的方式驱动转矩输出更平滑。所以深度过调制可以理解成“披着方波外衣的FOC”既有接近极限的电压利用率又保留了矢量控制的动态性能。对于想做低成本方案的人来说如果产品工况一直稳定在高转速与其用复杂的深度过调制算法不如直接切六步方波来得实在。过调制的真正价值在于“从线性区到极限状态的全过程平滑过渡”适合那些需要宽调速范围的应用而不是只会闷头跑高速的工况。5.4 过调制对无感FOC启动和高速辨识的影响无感FOC在低速段通常用高频注入高速段切换回反电动势观测器。过调制主要在高速段激活对启动阶段没有直接影响。但高速段的电压谐波会进入反电动势观测器的输入如果观测器设计时只按理想正弦电压模型来写谐波会被当成观测误差导致角度估计出现波动严重时甚至失步。解决思路一般是两个一是在观测器前端加陷波器把5、7次谐波滤掉二是调整观测器带宽让它对低频分量敏感、对高频分量不敏感牺牲一点动态响应换取稳定性。个人经验是两种手段一起用更稳妥光靠调带宽往往顾此失彼。另外如果过调制导致电流波形出现削顶用滑模观测器做反电动势提取的方案通常会比龙伯格观测器更抗造因为滑模本身对参数变化和谐波有更强的鲁棒性。但这也不是绝对具体要看实际系统表现。6. 过调制功能优化的工程实践建议6.1 先离线仿真再上板过调制算法虽然原理不复杂但参数标定和时序细节很容易出错。我的标准流程是先在Simulink或PLECS里搭一套PMSMFOCSVPWM过调制的仿真模型把电机参数、母线电压、载波频率都按实际值填进去先在仿真里把M-α曲线和相关参数扫出来。仿真模型里我会特意加上死区模型和最小脉宽限制否则仿真结果和实机会差很远。有些人在仿真里跑得很好一上板就废十有八九是没建模死区和窄脉冲效应。仿真阶段把这些坑都踩一遍能省很多调板时间。6.2 用示波器观察的关键点上板调试时我一般会用示波器抓四个信号相电流、线电压、母线电压、PWM脉冲。相电流看波形畸变程度和采样噪声线电压看削顶情况判断调制度是否达到预期母线电压看动态跌落判断调制度计算是否准确PWM脉冲看最小脉宽是否被压缩到危险区域。在关注电流波形时不要只看一个扇区的波形。过调制在不同扇区边界表现差异很大要连续旋转观察整个电角度周期的波形。最好用示波器的余晖模式叠加多个电周期的波形看包络包络越干净说明算法越稳定。6.3 过调制参数标定流程参考我常用的一套标定流程是先把M上限设到1.05确认系统稳定再逐步提高到1.10观察温升和噪音变化如果一切正常再往1.15探同时密切关注电流波形和管子温度。每一步都记录母线电压、相电流有效值、电机温度、噪音等级和转速形成一张完整的数据表。参数标定时要注意环境温度的影响。母线电容、功率管的导通压降和开关时间都会随温度变化导致最小脉宽特性漂移。如果条件允许最好在常温、高温、低温三个温度点各做一轮标定尤其是低温工况下驱动芯片的传输延迟变大更容易出现窄脉冲问题。6.4 后续可扩展的方向过调制本身已经快把SVPWM的潜力榨干了。再往上看还有两个方向可以做一个是模型预测控制MPC它可以在每个控制周期直接求解最优开关状态天然把过调制和动态性能统一考虑但计算量大目前多用于高端伺服另一个是优化PWM如不连续PWM DPWM通过让某一相钳位到母线或负母线来减少开关次数、降低开关损耗同时也能提高电压利用率在光伏逆变器领域用得比较多。如果是做电动工具或家电电机驱动我觉得先把SVPWM过调制吃透就够用了。毕竟这类产品对成本敏感MCU算力有限过调制是性价比极高的性能提升手段。我个人的经验是过调制这活儿千万不要试图“毕其功于一役”。先把基础版跑通再根据实际产品的热、噪、效率表现做精细化调整。每次改一个参数验证一轮多留数据少拍脑袋。电机控制这东西台架数据不会骗人。
返回列表