作者:超神约
链接:https://www.zhihu.com/question/26858454/answer/266275376
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
PWM波是一个“神器”...
它实现了直流电与交流电的等效转化...
使电压“逆变”具有可操作性...
然而...
作为“矢量控制”这个控制系统的“执行”环节...
我们怎么把直流电压转化为三相交流电压...
而且还拥有较高的电压利用率呢?
打个不恰当的比方...
如果我们想吃“蒜薹肉丝”这道菜...
而猪肉是一整块的...
所以...
首先要把肉块切成肉丝...
但是...
在这个过程中...
一斤的肉块如果切成了半斤的肉丝...
那就造成浪费了...
所以...
想吃到美味而且有嚼劲的肉丝...
好的刀法是关键...
一方面要切出完美的肉丝...
不能是肉片...
也不能是肉泥...
一方面尽可能的减少下刀次数...
这样黏在刀锋上的肉屑(损耗)就会减少...
这样一斤的猪肉可能会吃到八两的肉丝...
这个不外传的厨艺绝学...
就是传说中的“SVPWM”
不管什么样的教科书...
说起SVPWM...
都是满满的计算公式...
以及各种状态表、扇区、持续时间的确定...
霍金他老人家说过...
每多写一个公式就吓跑一半读者...
好吧...
为了多留读者...
小神试试不写公式...
能不能把SVPWM说明白...
先看上图...
通过这个经典的三相逆变桥式电路...
我们经过周密复杂的计算和推导...
可以得出这样的结论...
上桥和下桥的开关(IGBT)是不能同时导通的(短路)...
好吧...
我们简单点...
来点初中物理学的知识...
这个直流母线的电压值我们假定为Ud...
三路上下桥开关同时关断的情况先不考虑...
上桥开通下桥关断定义为状态0...
上桥关断下桥开通定义为状态1...
这样...
这三路开关状态两两拼凑组合...
就变成了八种开关状态...
但是...
不管组合有多少种...
输出去三相ABC中两辆引线的电压值...
在这八种开关状态下...
不是Ud就是-Ud...
或者就是0...
也就是说...
电机的线电压值在某一时刻只能有Ud、-Ud和0三种状态...
是没有中间状态的...
那么...
电机的相电压是多少呢?
显然不能这样算...
相电压的定义是该相与“中性点”之间的电压...
而“中性点”我们还不知道选在哪里...
不过我们可以把三个相电压用未知数的形式假设出来...
根据基尔霍夫电流定律(KCL)...
列个方程组...
来求出相电压的值...
这个算法很简单...
小神就不多说了...
最大值就是传说中的2/3Ud...
OK...
我们可以动手画这八个开关状态的电压矢量图了...
咦?
为什么不是圆形?
是个六边形!!!
答:
因为相电压只能在这六个状态(向量)...
出现这个最大值2/3Ud...
其他角度的电压矢量是靠这六个状态合成出来的...
是达不到这个最大值的...
那么...
为什么是六个顶点呢?(八个开关状态啊)
答:
因为000和111这两个开关状态...
ABC三相不管哪两路的线电压都是0...
所以...
只能“龟缩”在原点了...
别着急,精彩继续...
三相正弦交流是可以合成一个旋转矢量的...
同样...
三相正弦电压也是可以合成一个旋转的矢量Us的...
期望电流Id和Iq通过PI调节器得到Ud和Uq...
位置检测装置(旋转变压器)又给了转子位置θ...
Ud和Uq就华丽的蜕变成Uα和Uβ...(帕克变换)...
Us²又恰好等于Uα²+Uβ²...
So...
Us就成为了已知量...
好了...
Us我们知道了...
Us旋转的范围界限(六边形)我们也知道了...
接下来...
挥舞你的菜刀(IGBT)...
尽情的演绎你的厨艺(SVPWM)吧...
这个世界是一个连续的世界...
然而...
你眼睛里的世界...
却可能是离散的...
在看电影时...
如果把时间缩小到足够小...
画面就会一帧一帧的播放...
但你却认为画面的场景是“连续”的...
不不不...
不要在意这些细节...
再来个比喻...
一个电灯泡...
只能处于“亮”和“不亮”的状态...
但你嫌灯泡太亮了...
想让它处于“较亮”的状态...
怎么办?
选一个10ms的时间周期...
前5ms让它处于“亮”的状态...
后5ms让它处于“不亮”的状态...
因为时间足够短...
在你眼中呈现的状态...
就是“较亮”...
调制一个Us也是同样的道理...
六边形可以划分成六个扇区...
为了减小电压谐波...
这个调制合成电压Us的旋转范围会留一些余量...
是这个多边形的内切圆...
或略小于这个内切圆(IGBT的死区影响)...
当Us的相位和幅值确定以后...
我们就能确定Us的起始位置在哪个扇区...
这样就知道用哪两个相邻的边(开关状态)来合成...
然后...
再把这个圆分成有限个(R个)、足够小的等面积小扇区...
这个R其实就是所设定的载波频率...
也就是Us旋转这个动作的“分辨率”...
像灯泡一样...
在一个载波周期内...
通过两个开关状态的先后顺序...
每个状态持续一定时间(占空比)...
再配上000和111的这种全部关断的0矢量状态...
最终合成Us的起始状态.
当Us旋转至下一个位置时...
就是下一个载波周期...
同样开关状态的占空比就会稍微校正一下...
来合成下一个步长的Us...
如果Us旋转的位置跨越了大扇区...
两个相邻的边(开关状态)就会切换...
当然这种切换也是有规则的...
为了保证每次状态切换只开通和关闭一个管子...
就形成了传说中的“七段式SVPWM”...
比如Us在扇区I...
那就必须用100和110的开关状态来合成电压矢量...
加上零矢量状态(111、000)...
会拆分成七次切换来满足合成矢量...
这种调制出来的Us...
经过之前所讲的逆Clark、Park变换...
分解出的三相电压正弦度还是很高的...
当然...
这个相电压是PWM正弦波...
然而...
把本来是四种开关状态(相邻两边开关状态、000、111)...
分成了七段...
你的“下刀”次数还是太多...
不免还是有些损耗...
所以就有了五段式SVPWM...
也就是传说中的DPWM技术...
开关损耗减小了30%有木有....
不过....
调制出的电压正弦度反而不怎么高了...
谐波会大量提升...
控制器的效率提升了...
电机的效率却下降了...
拆了东墙补了西墙...
So...
一般人不这么干...
所以七段式SVPWM还是比较广泛的...
当然...
有的吃瓜群众会问...
Us旋转的 "分辨率"(载波频率)是死的...
旋转的速度确是跟电压的频率(电机的转速)有关的.....
电机高速时你的"分辨率"就低了...
低速时你的"分辨率"就有可能高了...
那岂不是高速时谐波多...
低速时控制性能好吗?
所以就诞生了变载频算法...
低速载频可以低一点...
高速载频高一些...
也是提升电机系统效率的手段嘛...
又一个围观群众发问了...
为什么Us的旋转范围不能是外接圆?
进一步提升调制出来的电机相电压...
这样...
电机在弱磁区的弱磁电流就会小一些...
电机的损耗就变小了....
这不就是提升电机系统效率的手段嘛...
好吧...
这就是传说中的过调制算法...
毕竟六边形是能力...
外接圆是期望...
如果Us的旋转超出了六边形的区域...
还是得采用一定手段(算法)让它收收心...
把Us“勒”回到六边形的边长上的...
好了...
小神今天码的有点多...
算作弥补更新时间长的愧疚了...
SVPWM算法再看不懂...
那你的智商只能去翻教科书了...
至于Us起始位置的扇区确定...
开关状态的时间计算...
IGBT的死区补偿...
电流采样的误差校正...
这些书上都有套路公式...
网上也有编程模板...
这些没有“技术含量”的东东...
小神就不在赘述了...
最后...
小神再解释一下...
为什么那么多教科书(甚至百度百科)....
都写了SVPWM的电压利用率比SPWM提升了15%...
因为...
根据电压利用率的定义(“调制”出来的交流电的线电压与直流电压之比)...
SVPWM使电机的线电压幅值达到了Udc...
而SPWM调制的三相相电压幅值最多达到Udc/2...
那么..
它的线电压幅值就是Udc/2 * √3 = 0.866Udc...
比一下...
1/0.866就是1.15...
就是这样提升了15%...
就酱...
参考资料:
1. 《svpwm的仿真实现》;
2. 部分图片来源于百度;
3. 部分GIF制作于SooGif,如有侵权,请联系我删除。
微信公众号:超神约
电机学也是一种艺术...