2.3 計(jì)算相鄰兩個(gè)基本矢量電壓的作用時(shí)間:
扇區(qū)判斷結(jié)束后,就是計(jì)算相鄰兩個(gè)基本矢量電壓的作用時(shí)間
在扇區(qū)1時(shí),由U6和U4合成,設(shè)在一個(gè)時(shí)間周期Ts內(nèi),U4作用的時(shí)間為T4,U6作用的時(shí)間為T6。由 基本矢量電壓在αβ軸上的投影 和 目標(biāo)矢量電壓在αβ軸上的投影 分別相等建立等式:
到這里,計(jì)算出來的公式看著有點(diǎn)復(fù)雜,所以我們通過下面的方式稍稍簡(jiǎn)化一下,記:
則在各個(gè)扇區(qū)內(nèi)的作用時(shí)間就分別為:
到這里,合成目標(biāo)矢量電壓Uref需要的兩個(gè)相鄰矢量電壓Ux,Uy以及分別作用的時(shí)間Tx,Ty就計(jì)算好了,但這里計(jì)算出來的時(shí)間不一定剛好滿足Tx+Ty=Ts,當(dāng)Tx+Ty>Ts時(shí)需要進(jìn)行等比例縮小處理,處理方式如下:
當(dāng)Tx+Ty
2.4 三路PWM占空比計(jì)算
目標(biāo)矢量電壓的所在扇區(qū)知道了,相鄰兩個(gè)基本矢量電壓及其作用時(shí)間也知道了,接下來就是7段式SVPWM的生成了。所謂的7段式SVPWM,即在一個(gè)周期Ts內(nèi),基本電壓矢量的作用順序?yàn)?/p>
,
作用的時(shí)間分別為:
。
以在第1扇區(qū)為例:基本電壓矢量作用的順序?yàn)?/p>
,
對(duì)應(yīng)的三相電壓波形為:
這里,可能會(huì)問,Tx,Ty和U4,U6是怎么對(duì)應(yīng)的呢?為什么要先U4再U6呢?把各個(gè)扇區(qū)的作用順序豎著列出來就能看出來了:
扇區(qū) | U0 | Ux | Uy | U7 | Uy | Ux | U0 |
---|---|---|---|---|---|---|---|
1 | 0 | 4 | 6 | 7 | 6 | 4 | 0 |
2 | 0 | 2 | 6 | 7 | 6 | 2 | 0 |
3 | 0 | 2 | 3 | 7 | 3 | 2 | 0 |
4 | 0 | 1 | 3 | 7 | 3 | 1 | 0 |
5 | 0 | 1 | 5 | 7 | 5 | 1 | 0 |
6 | 0 | 4 | 5 | 7 | 5 | 4 | 0 |
1 | 0 | 4 | 6 | 7 | 6 | 4 | 0 |
可以看出,從一個(gè)扇區(qū)進(jìn)入相鄰的另一個(gè)扇區(qū)時(shí),只有一個(gè)基本矢量電壓發(fā)生改變。即通過這樣的作用順序,可以減小開關(guān)管的切換次數(shù),從而減少開關(guān)損耗,尤其是在負(fù)載電流較大時(shí)更應(yīng)該減小開關(guān)切換次數(shù)。
然后就是根據(jù)基本矢量電壓的作用時(shí)間去計(jì)算逆變H橋的占空比了,
仍然先以第1扇區(qū)為例:基本矢量電壓作用的順序?yàn)?/p>
即在一個(gè)周期Ts時(shí)間內(nèi),前面定義的開關(guān)函數(shù)
S(C)=1的時(shí)間為,
S(B)=1的時(shí)間為,
S(A)=1的時(shí)間為。
對(duì)應(yīng)的ABC三路PWM的占空比就分別為。注意的是,看上面的三相電壓波形可知,輸出的PWM波時(shí)高電平中間對(duì)齊,所以在對(duì)你所使用的微控制器MCU的PWM定時(shí)器進(jìn)行配置的時(shí)候要注意設(shè)置好計(jì)數(shù)方向(一般先向上計(jì)數(shù)在向下計(jì)數(shù))和輸出極性(超過閾值為高電平)。
對(duì)于其他幾個(gè)扇區(qū)類似,這里不再重復(fù)詳細(xì)敘述,列個(gè)表出來
這里說明一下,前面進(jìn)行Clarke變換和park變換的所有電壓電流參數(shù)都是標(biāo)幺值,這里的Uα和Uβ采用的也是標(biāo)幺值。
我們合成的輸出目標(biāo)矢量電壓也用標(biāo)幺值表示(令Uref_max=1),并令Ts=1時(shí),這里的系數(shù)K就等于常數(shù)1,這樣的話,我們計(jì)算的時(shí)間Ta,Tb,Tc就等于占空比。下面簡(jiǎn)單證明一下why。
仍以第1扇區(qū)為例:
已知最終的目標(biāo)矢量電壓最大不失真的幅值為,
則,我們已經(jīng)計(jì)算的有,
即(這里的Ux,Uy已經(jīng)是標(biāo)幺值)
令Uref_max=1把目標(biāo)矢量電壓標(biāo)幺值化,再令Ts=1,就可以把非零電壓作用的時(shí)間轉(zhuǎn)化為標(biāo)幺值。
所以,我們?cè)诔绦蛴?jì)算處理的時(shí)候,直接令K=1,然后按照上面列表計(jì)算出來的Ta,Tb,Tc就可以直接作為占空比了,占空比再乘以PWM定時(shí)器的計(jì)數(shù)周期值,就可以得到比較寄存器的值了,這樣計(jì)算量就減小很多了,然后就完成了整個(gè)SVPWM的操作。
剩下的就是PWM定時(shí)器相關(guān)的操作了,這里不詳說,后面有時(shí)間我再針對(duì)DSP和STM32這兩款處理器做簡(jiǎn)要介紹。
04.算法流程
接著上一篇的坐標(biāo)變換(上一篇鏈接:https://mp.weixin.qq.com/s/4PbY2FbnXcN2ai4aolGVcg)
上篇已經(jīng)介紹,由park逆變換計(jì)算得到Uα,Uβ
step1:扇區(qū)判斷
計(jì)算,根據(jù)U1,U2,U3的符號(hào)計(jì)算N=4C+2B+A,再結(jié)合扇區(qū)表判斷所處的扇區(qū)。
C語(yǔ)言代碼示例:
v.U1 = v.Ubeta; \\
v.U2 = ( v.Ualpha*0.8660254) - (v.Ubeta*0.5); \\
v.U3 = (-v.Ualpha*0.8660254) - (v.Ubeta*0.5); \\
v.Sector = 0; \\
if(v.U1 > 0) v.Sector += 1; \\
if(v.U2 > 0) v.Sector += 2; \\
if(v.U3 > 0) v.Sector += 4; \\
step2:計(jì)算基本矢量電壓作用時(shí)間(占空比)
計(jì)算,并根據(jù)扇區(qū)確定相鄰兩個(gè)基本矢量電壓及其作用時(shí)間,然后對(duì)作用時(shí)間進(jìn)行等比例縮小處理或引入零矢量電壓處理,使得總的作用時(shí)間等于Ts,或總的占空比等于1。
C語(yǔ)言代碼示例:
v.Tx = v.Ubeta; \\
v.Ty = ( v.Ualpha*0.8660254) + (v.Ubeta*0.5); \\
v.Tz = (-v.Ualpha*0.8660254) + (v.Ubeta*0.5); \\
switch(v.Sector) \\
{ \\
case 1:{ \\
v.t1=v.Tz; v.t2=v.Ty; \\
if((v.t1+v.t2)>1){ \\
v.t1 = v.t1/(v.t1+v.t2); \\
v.t2 = v.t2/(v.t1+v.t2); \\
} \\
v.Tb = 0.5*(1-v.t1-v.t2); \\
v.Ta = v.Tb + v.t1; \\
v.Tc = v.Ta + v.t2;}break; \\
case 2:{ \\
v.t1=v.Ty; v.t2=-v.Tx; \\
if((v.t1+v.t2)>1){ \\
v.t1 = v.t1/(v.t1+v.t2); \\
v.t2 = v.t2/(v.t1+v.t2); \\
} \\
v.Ta = 0.5*(1-v.t1-v.t2); \\
v.Tc = v.Ta + v.t1; \\
v.Tb = v.Tc + v.t2;}break; \\
case 3:{ \\
v.t1=-v.Tz; v.t2=v.Tx; \\
if((v.t1+v.t2)>1){ \\
v.t1 = v.t1/(v.t1+v.t2); \\
v.t2 = v.t2/(v.t1+v.t2); \\
} \\
v.Ta = 0.5*(1-v.t1-v.t2); \\
v.Tb = v.Ta + v.t1; \\
v.Tc = v.Tb + v.t2;}break; \\
case 4:{ \\
v.t1=-v.Tx; v.t2=v.Tz; \\
if((v.t1+v.t2)>1){ \\
v.t1 = v.t1/(v.t1+v.t2); \\
v.t2 = v.t2/(v.t1+v.t2); \\
} \\
v.Tc = 0.5*(1-v.t1-v.t2); \\
v.Tb = v.Tc + v.t1; \\
v.Ta = v.Tb + v.t2;}break; \\
case 5:{ \\
v.t1=v.Tx; v.t2=-v.Ty; \\
if((v.t1+v.t2)>1){ \\
v.t1 = v.t1/(v.t1+v.t2); \\
v.t2 = v.t2/(v.t1+v.t2); \\
} \\
v.Tb = 0.5*(1-v.t1-v.t2); \\
v.Tc = v.Tb + v.t1; \\
v.Ta = v.Tc + v.t2;}break; \\
case 6:{ \\
v.t1=-v.Ty; v.t2=-v.Tz; \\
if((v.t1+v.t2)>1){ \\
v.t1 = v.t1/(v.t1+v.t2); \\
v.t2 = v.t2/(v.t1+v.t2); \\
} \\
v.Tc = 0.5*(1-v.t1-v.t2); \\
v.Ta = v.Tc + v.t1; \\
v.Tb = v.Ta + v.t2;}break; \\
step3:計(jì)算PWM定時(shí)器比較寄存器值
這個(gè)很簡(jiǎn)單,就是用占空比乘以定時(shí)器的計(jì)數(shù)周期
C語(yǔ)言代碼如下:
EPwm1Regs.CMPA.half.CMPA = (int16)(MPeriod * Svpwm1.Ta);
EPwm2Regs.CMPA.half.CMPA = (int16)(MPeriod * Svpwm1.Tb);
EPwm3Regs.CMPA.half.CMPA = (int16)(MPeriod * Svpwm1.Tc);
-
電壓
+關(guān)注
關(guān)注
45文章
5620瀏覽量
116009 -
SVPWM
+關(guān)注
關(guān)注
14文章
614瀏覽量
90658 -
FOC
+關(guān)注
關(guān)注
20文章
324瀏覽量
42891
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論