恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
单矢量控制占空比计算:原理、公式与调试要点
首页
资讯中心
/
单矢量控制占空比计算:原理、公式与调试要点
单矢量控制占空比计算:原理、公式与调试要点
发布时间:2026/10/19 20:20:15
做电机控制这些年单矢量控制下的占空比计算是我觉得最容易被低估的环节。很多人觉得单矢量控制不过是每个控制周期选出一个电压矢量剩下的交给PWM发生器就行但真到实现的时候占空比算不准电流波形会畸变转矩脉动会放大甚至会导致系统在高转速下噪声变大。这篇内容我就把单矢量控制模式下占空比计算的原理、公式、数字化实现步骤和调试经验一次说清楚希望能帮到正在搭传动系统的同行尤其是做DTC和有限集模型预测控制方向的朋友。单矢量控制在很多场合有天然优势算法简单、输出直接、不依赖复杂的调制表。它常见于占空比直接转矩控制DTC和模型预测控制这类策略中但无论策略叫什么名字只要最终落到“一个周期输出一个有效矢量、再用零矢量配合调节电压幅值”这个动作上占空比就一定是系统的核心变量。占空比特性的好坏直接决定这套控制策略能不能跑出和SVPWM同等水平的稳态精度。下面我从原理推导开始一直讲到具体的寄存器配置和波形现象把单矢量占空比计算的完整链路讲明白。1. 单矢量控制为什么离不开占空比1.1 逆变器的离散输出与“时间换取幅值”三相两电平逆变器是绝大多数电机驱动系统的主电路三个桥臂的开关组合一共2的3次方等于8种其中6个非零电压矢量幅值相等、相位依次相差60度分布在整个电压平面上另外两个零矢量让电机三相端子短接。这8个矢量就是逆变器能给出的所有离散输出状态。如果一个控制目标要求逆变器输出一个角度任意、幅值在某一范围内的期望电压那么仅凭这8个固定矢量是做不到绝对精确的除非在时间上做文章。经典SVPWM的做法是一个开关周期内取两个相邻非零矢量加一个零矢量按伏秒平衡配比时间。单矢量控制则更“激进”每个开关周期只选一个非零矢量然后用零矢量去“削”它的作用时间。也就是说单矢量控制必须靠占空比去调节该矢量在周期内的平均幅值。所以占空比不是一个锦上添花的变量而是单矢量控制能够输出连续电压幅值的唯一手段。它把逆变器的离散输出状态变成连续可调的等效电压这正是它和纯查表式DTC拉开差距的关键。在我的实际调试经验里很多刚接触这个方案的工程师会忽略这层物理含义直接把D当寻常的调制比系数使用一旦遇到极限工况就容易出问题。1.2 单矢量控制与经典SVPWM的分工差异为了更清楚地看清单矢量占空比控制的定位我习惯把这两种调制方式放在一个表里对比对比项经典SVPWM单矢量加占空比控制每周期矢量子集两个相邻非零矢量加一个零矢量一个非零矢量加一个零矢量调制自由度两个时间变量加分配比例一个时间变量也就是占空比D输出电压精度高一个周期内平均误差小中等取决于D的量化与投影精度算法复杂度扇区判断加三相占空比映射矢量选择加单占空比计算适用场景传统FOC和SVPWMDTC、模型预测控制、资源受限场合单矢量控制的优势很明显每个控制周期只需要做一次矢量选择、算一个占空比计算量非常小尤其适合控制周期很短、主控资源有限的场合。代价是单个周期内只用一个有效矢量谐波性能不如SVPWM。有人会问那为什么不直接用SVPWM这就涉及系统约束了。在很多模型预测控制里代价函数本身已经囊括了磁链、转矩、开关次数甚至电容电压均衡等多个目标如果再让每个周期都做完整SVPWM的时间分配计算量会翻好几倍算法实时性就保不住了。单矢量加占空比控制正是为了在这个约束下尽量降低稳态误差。1.3 占空比在控制目标中的两种角色从物理上看占空比D等于有效矢量作用时间T_active除以控制周期Ts度量的是在一个控制周期内选中的非零电压矢量作用时间的比例描述的是平均电压幅值。零矢量作用期间虽然不提供有效电压但它为绕组电流提供了续流回路让电流不至于突变。用生活类比就是水龙头只有开关两个状态时把开和关的时间按比例组合就能模拟出中间流量。单矢量控制里的占空比也是这个道理但它还必须满足系统方程要么让等效电压矢量等于期望参考电压要么让某个状态量比如转矩或者电流在周期末达到期望值。这两种目标给出了两种不同的占空比公式也正是我在下一章要展开的内容。实际项目中这两种公式都有大量应用需要根据控制策略的结构来选择。2. 占空比计算的推导与核心公式2.1 伏秒平衡单矢量框架下的投影逻辑不管用哪种公式伏秒平衡都是数学基础。把控制周期看作一个积分区间电压矢量在开关周期内的积分等效为平均电压乘以时间。写成表达式就是参考电压矢量乘以开关周期等于有效矢量乘以作用时间再加上零矢量乘以作用时间。由于零矢量的电压为零整理后就得到参考电压矢量等于占空比乘以有效矢量。严格来说单矢量占空比控制的D只有一个自由度所以这个式子并不是一个普通的二维矢量方程而是要把参考电压投影到有效矢量方向上的标量方程。投影的本质是在选定的矢量方向上尽可能逼近参考电压垂直于矢量方向的分量靠下一个控制周期更换矢量来补偿。这就是伏秒平衡在单矢量框架下的实际含义。它不再追求一个开关周期内完整复现参考矢量而是沿选定矢量方向做最优逼近。把这个理解到位后面所有公式就不容易钻牛角尖了。我见过有人在DTC调试中把占空比直接取成参考矢量和有效矢量的模长比结果在参考矢量与有效矢量存在夹角的区域出现明显的过调制就是没搞懂这层投影逻辑。2.2 电压矢量投影法公式与实例如果系统的外环已经计算出了参考电压幅值和相位比如FOC中的d轴和q轴电压指令反变换得到的参考电压矢量单矢量控制选好有效矢量后最简单的占空比就是投影公式用参考电压矢量点乘选定有效矢量再除以有效矢量幅值的平方。设参考电压矢量与选定有效矢量的夹角为西塔在等幅值坐标变换下三相两电平逆变器非零电压矢量的幅值等于母线电压的三分之二。于是占空比可以进一步写成一点五倍的参考电压幅值除以母线电压再乘以夹角余弦。这里我举一个具体的数值例子。假设某一时刻参考电压幅值是60伏特与选定有效矢量的夹角是10度母线电压是310伏特。按照公式先算参考电压在有效矢量方向上的投影分量约等于59.1伏特除以非零矢量幅值也就是三分之二倍的310伏特约等于206.7伏特最终占空比约等于0.286。这个结果的含义是在该控制周期内有效矢量作用时间约为28.6%零矢量作用时间约为71.4%。实际工程中不会真的去求夹角而是把每个非零矢量在静止坐标系下的方向余弦预先存在表里用参考电压的两个分量做点乘就够了。注意这里的参考电压幅值定义必须和坐标变换系数保持一致否则算出来的D会整体偏大或偏小。我建议在落地第一版代码时先用一组静态工况的观测值和仿真结果对一下D的数值确认坐标系统一后再做动态调试这样能省掉很多隐性故障排查时间。2.3 转矩脉动最小化公式从误差倒推占空比另一类单矢量控制直接把控制目标定为转矩典型就是占空比DTC。在这种策略里占空比的目标不是让等效电压等于参考电压而是让一个开关周期结束时的转矩误差趋近于零。以表贴式永磁同步电机为例电磁转矩等于一点五倍极对数乘以定子磁链和定子电流的叉积。在一个控制周期内施加某个非零电压矢量时转矩变化率为k_on施加零矢量时转矩变化率为k_zero。在转速和磁链近似不变的条件下周期内的总转矩增量可以近似表示为k_on乘以D再乘以周期加上k_zero乘以一减D再乘以周期。如果希望这个转矩增量正好等于当前转矩误差也就是参考转矩减去当前实际转矩那么就可以反解出占空比D。公式形式为D等于期望转矩增量除以周期再减去k_zero然后除以k_on与k_zero之差。这里k_on和k_zero的计算依赖电机模型和当前运行点。非零矢量作用时转矩变化率与定子磁链幅值、定子电压、磁链角度和转速有关零矢量作用时转矩变化率只与磁链衰减速度和转速有关通常为负。实际工程中为了方便一般把这两个变化率做成查表或者在线简化模型不必每个周期都解完整的解析式。这套公式的好处是直接从“转矩脉动最小”出发比电压投影法更能抑制低速时的转矩抖动。代价是需要比较精确的磁链和转矩估算参数失配时占空比会偏移甚至出现振荡。很多工程师在实际系统中用电压投影法做基础再在转矩闭环内加一个比例积分修正项等效于把两种思路结合起来既能保证稳态精度又有一定的参数鲁棒性。2.4 两种公式的取舍与组合用法给出一张决策表方便读者根据自己项目的控制架构做选择决策依据电压投影法转矩误差最小化法依赖的主要变量参考电压、母线电压转矩估算、磁链估算对模型精度敏感度低高稳态性能好适合FOC上叠加单矢量调制好适合DTC直接控制转矩动态响应依赖电流环调节速度快直接控制转矩变化率实现难度低代码量小中高需要辨识参数组合用法我推荐这样如果系统本身是FOC构架只是在某个调制受限工况下切到单矢量模式就选电压投影法如果系统本身是DTC或模型预测控制构架转矩估算已经存在就选转矩误差最小化法。还有一种折中做法是用投影法算初值再用转矩误差最小化法的结果对初值做一次限幅修正这样即使转矩估算有点偏差也不会让D跑得太离谱。3. 数字化实现从公式到PWM波形的关键步骤3.1 主循环与中断处理流程假设控制周期为100微秒对应开关频率10千赫兹主控在PWM中断里依次执行采样电流和电压、坐标变换、磁链和转矩估算、选择电压矢量、计算占空比、把占空比映射为定时器比较值最后在中断结束时更新PWM寄存器。整套流程中最容易出错的是最后一步映射关系因为不同平台的定时器计数方式不同。以浮点DSP最常见的中心对齐PWM为例定时器从0向上计数到周期值再从该值递减到0构成一个三角波。比较值决定了输出电平翻转的时刻。如果在一个开关周期内采用对称序列则一个周期内有效矢量会出现两段分别在三角波的上升段和下降段。实际调试时我通常先把占空比的计算流程写成独立函数输入是参考电压分量、母线电压和选中的矢量编号输出是两个比较寄存器的值这样既方便仿真也方便在硬件上单独验证。流程中出现任何一步的时间开销过大都会挤占PWM更新时刻导致控制延迟增加。我建议定时器中断服务的总耗时控制在30微秒以内给剩余的70微秒留足裕量给主循环和其他外设通信。如果模型预测控制里的代价函数遍历很大可以考虑把矢量选择放在子程序里按扇区并行优化不要把所有判断都写在一个中断里。3.2 矢量选择与零矢量分配单矢量控制首先要选出当前周期最合适的非零矢量。常见做法是在静止坐标系里把参考电压矢量的角度映射到0到360度然后按扇区查表。角度在0到60度选V160到120度选V2依次类推。也可以复用SVPWM的扇区判断公式用参考电压分量的符号和大小关系判断但直接角度查表更简洁。选矢量的原则通常有两个。第一个是夹角最小原则选择与参考电压夹角最小的非零矢量让投影误差最小。第二个是转矩变化方向原则在DTC里根据磁链和转矩滞环选择使转矩增加或减少的矢量集合再从中挑当前磁链偏差最小且能保持磁链幅值的矢量。在有限集模型预测控制框架下矢量选择本身是用代价函数遍历6个非零矢量加2个零矢量得出的选择完成后同样需要算占空比来优化电压幅值。也就是说不管矢量是怎么选出来的只要最终动作是“单矢量加零矢量”占空比计算逻辑就可以独立复用。这也是我把占空比计算单独拎出来讲的原因。这里还要特别注意零矢量的选择。零矢量有两个一个是三相全低边的000一个是三相全高边的111。选择不同的零矢量会直接影响开关动作次数。比如当前选中的非零矢量是V1也就是A桥臂上管导通、B和C桥臂下管导通如果选择零矢量000A相桥臂的开关状态不需要变化只有B和C桥臂切换开关次数少如果选择零矢量111三个桥臂全部切换开关损耗明显增大。实现时应该优先选择使开关动作次数更少的零矢量。3.3 中心对齐PWM下的比较值映射中心对齐PWM下三角波的周期值记为TBPRD比较值记为两个。为了在一个周期内形成有效矢量和零矢量交替的对称模板可以这样设置在三角波上升段比较值CMP_A等于二分之一乘以一减占空比再乘以周期值比较值CMP_B等于二分之一乘以一加占空比再乘以周期值。这样在一段三角波内有效矢量的时间占比正好等于占空比D而且两个比较值的中点就是三角波峰值。举个例子如果TBPRD等于7500占空比D等于0.286那么CMP_A约等于2677CMP_B约等于4823。在上升段里从0到CMP_A输出零矢量从CMP_A到CMP_B输出有效矢量从CMP_B到波峰再输出零矢量。下降段自动对称展开不需要额外更新寄存器。对于边沿对齐的锯齿波模式比较值就简化成占空比乘以周期值但谐波特性和采样点不如中心对齐好我建议电机控制首选中心对齐。还需要注意占空比的量化误差。15位定时器在TBPRD等于7500时一个计数步长对应的占空比分辨率大约是万分之一点三电压分辨率不到0.05伏特完全够用。但在占空比接近0或接近1时量化误差和死区时间叠加影响会非常明显需要配合最小脉宽限制处理。3.4 死区补偿与最小脉宽处理死区时间的本质是防止桥臂上下管直通在开关动作时插入一小段同时关断的时间。对于单矢量占空比控制当占空比较小时有效矢量作用时间可能与死区时间处于同一量级导致有效电压完全没有建立起来输出被死区吃掉。所以软件侧一定要加最小脉宽限制如果占空比乘以周期小于两倍死区时间直接令占空比等于0并记录一次饱和标志方便示波器分析。死区补偿的思路是根据电流方向在比较值基础上增加或减少死区时间对应的计数步数近似补偿死区带来的电压损失。具体做法是先根据电流极性确定每相桥臂是否需要补偿再把死区时间换算成定时器步数最后对占空比做正负修正。注意补偿只适用于电流方向稳定的区域在电流过零点附近死区补偿方向频繁变化反而容易引入抖动不如在采样侧做好滤波。还有一个容易被忽略的细节死区时间在上升沿插入但不同PWM模块对死区计数的基准不一样换算步数时最好用示波器实测确认一次。我习惯把死区补偿做成独立小函数用电流极性和死区时间两个输入输出修正后的比较值这样在不同项目之间移植很方便。4. 现场调试中的常见问题与排查方法4.1 母线电压波动占空比虚高的根源占空比的计算依赖母线电压。如果母线电压有波动比如整流桥带容性负载并且负载突变系统按标称母线电压算出来的占空比会和实际电压不符导致输出电压偏低或偏高。解决方式是在每个控制周期采样母线电压用实时电压做归一化。为了防止单点采样噪声影响占空比我会对母线电压采样值做一阶低通滤波时间常数约10毫秒。这样既缓解纹波影响又不会让电压动态响应滞后太多。另外还要注意在母线电压跌落的瞬间即使占空比被钳位到1实际输出电压仍然不足电流环会立刻产生积分饱和。比较好的做法是在控制器侧设置一个电压限制标志让电流调节器进入抗饱和模式而不是靠占空比限幅硬扛。4.2 采样时序与PWM对齐问题单矢量占空比控制如果沿用SVPWM的对称采样点也就是在三角波峰值点采样电流在极端占空比下可能会采到有效矢量作用中点或者零矢量作用中点导致电流纹波影响采样。这个问题在占空比很小或很大时尤其明显。排查手段有两个。第一个是把采样点分别设置在有效矢量中点和零矢量中点各采一次比较两次结果判断纹波影响的大小。第二个是把控制周期错开在占空比更新时刻完成之后再启动采样。很多工程师在仿真里忽略这一点一到硬件实测就发现电流反馈抖动其实不是算法问题而是采样与PWM的相位关系没有对齐。我通常在中断服务里先判断当前是在三角波上升段还是下降段只在确定的时间窗口触发ADC采样。4.3 过调制区限幅与积分抗饱和当参考电压超过线性调制范围也就是合成电压矢量幅值达到母线电压除以根号三时单矢量控制的占空比可能接近1部分角度方向甚至无法通过单一有效矢量达到所需的投影分量。此时进入过调制区占空比被限幅到1但要注意转矩动态会下降需要额外处理积分器抗饱和。处理过调制的一种常见策略是检测到参考电压幅值超过边界后主动把电流环的积分器清零避免积分器在不可达指令下持续饱和。同时可以适当降低动态响应要求让系统在过调制区内平稳过渡而不是反复冲击电流环。这里给出一个简表运行状态条件处理方法线性区参考电压幅值低于边界值按投影公式正常计算占空比过调制区参考电压幅值超过边界值占空比限幅到1积分器抗饱和边界抖动区参考电压幅值在边界附近往复加滞回控制避免策略频繁切换实测下来滞回范围取边界值的百分之三到百分之五比较合适既能抑制抖动又不会明显损失动态性能。4.4 参数敏感性与轻载振荡如果使用转矩误差最小化公式占空比计算结果对定子电阻、电感、磁链和转速都敏感。参数不准时算出的占空比可能超过1或者变成负值甚至在切换点附近跳变。我遇到过的情况是电感参数偏大百分之五低速运行时占空比在0.3附近振荡导致转矩噪声显著增大。实战建议是不要直接拿设计值当参数用离线辨识或在线递推最小二乘辨识获取更贴近实际的值。同时在占空比公式解析解旁边加一个滞回避免占空比在0和1之间来回跳。更简单的办法是和电压投影法对比如果两者在稳态时差异超过百分之十就说明参数或估算模型有问题。轻载振荡是另一个常见现象占空比很小甚至小于最小脉宽时开关动作是断续的转矩由续流维持系统看起来会有“一抖一抖”的滞后感。这种情况下不要盲目增大比例增益而是要通过减小最小脉宽限制或者调整零矢量分配来优化。5. 一个调试案例2kW表贴式永磁同步电机上的对比验证5.1 实验条件与对比方法验证平台用的是一台2千瓦表贴式永磁同步电机额定转速3000转每分极对数4母线电压310伏特开关频率10千赫兹控制周期100微秒。控制策略采用模型预测式单矢量选择加电压投影法占空比计算PWM模式为中心对齐定时器周期值7500死区时间2微秒。对比方法分三步第一步关闭占空比计算让选中的非零矢量完整作用整个周期相当于占空比恒为1记录电流波形和转矩估算波形第二步开启占空比计算其他条件不变记录同样工况下的数据第三步在母线电压跌落工况下比较有无母线电压实时归一化对电流幅值的影响。5.2 波形现象与数据统计第一组对比结果非常直观。未加占空比时电流纹波明显偏大电流总谐波畸变率约百分之十二电磁转矩估算波形呈明显锯齿状峰峰转矩脉动约为额定转矩的百分之十八。加入占空比计算后同一工况下电流总谐波畸变率降到百分之七转矩脉动降到约百分之十。在200转每分的低速段改善效果更加明显。原来纯单矢量模式在电流过零附近有明显的抖动加上占空比后抖动消失。原因也好理解低速时反电动势小电流主要由电压差值决定占空比调节电压幅值的能力在低速段尤其重要。母线电压跌落试验中把母线电压从310伏特突然降到280伏特如果没有母线电压实时归一化电流幅值在跌落期间偏低约百分之八动态恢复时间约30毫秒。加入实时母线电压归一化后动态恢复时间缩短到约10毫秒。这说明占空比计算中的母线电压归一化不是可有可无的优化项而是影响动态响应的关键环节。5.3 调试中排除的几个隐性问题在调试过程中排除了三个隐性问题。第一个是换矢量的时刻和PWM比较值更新时刻不同步。有一次电流波形每过一个扇区就出现一个毛刺查到最后是矢量切换在中断里先执行而比较值更新在中断末尾中间相差了十几微秒导致输出波形出现异常开关沿。把两者放在同一时刻更新后问题消失。第二个问题是占空比数值在轻载时于0.04和0.06之间往复跳动虽然幅度很小但叠加在电机电流上却表现为可闻噪声。后来在占空比输出加了一阶低通滤波转折频率设为一千赫兹噪声明显下降。这里要特别注意低通滤波不要加在电流环反馈通道上只加在占空比输出端否则会引入相位滞后。第三个问题是死区补偿方向在电流过零附近频繁切换导致占空比出现尖刺。后来我给电流极性判断加了滞回区间电流绝对值小于一定阈值时保持上一次的补偿方向占空比尖刺随即消失。这个阈值一般取额定电流的百分之二到百分之三。6. 几句没有套路的实操体会在我个人实际项目里单矢量控制的占空比计算真正决定成败的不是公式本身而是三步参考坐标系的统一、母线电压的实时归一化、PWM比较值映射时对中心对齐模式的理解。只要这三步保持一致系统就能稳定运行在生产环境里。最后分享一个压箱底的小技巧。硬件调试时我习惯把每次算出来的占空比通过DAC输出到示波器上和电流波形同步观察。你会发现很多看似玄学的电流振荡其实是占空比在小数点后三位来回跳导致的这时只要给占空比加一个轻量的低通滤波或者滞回就能把问题压下来。这个方法在SVPWM时代就很好用单矢量控制下同样有效。先保证占空比稳定再谈控制性能是这条技术路线上最省事的调试思路。