在學(xué)習(xí)FOC控制前,我對(duì)于FOC控制完全不懂,只知道中文叫做磁場定向控制,因公司產(chǎn)品開發(fā)需要用到對(duì)永磁同步電機(jī)(PMSM)進(jìn)行精確的位置控制,才開始從網(wǎng)上了解什么是FOC,有哪些數(shù)學(xué)公式,控制的過程是怎么樣的,但由于公司沒有人知道這一塊的知識(shí),所以只能一個(gè)人慢慢找資料學(xué)習(xí),網(wǎng)上有不少關(guān)于FOC的資料,不過講的都不全面,而且有的還會(huì)存在錯(cuò)誤,但是不懂的時(shí)候也無法分辨對(duì)錯(cuò),所以走了不少彎路。所以將個(gè)人的學(xué)習(xí)心得記錄于此,與大家分享,由于需要對(duì)電機(jī)進(jìn)行位置控制,所以使用了14位分辨率的磁編碼器。
FOC主要是通過對(duì)電機(jī)電流的控制實(shí)現(xiàn)對(duì)電機(jī)轉(zhuǎn)矩(電流)、速度、位置的控制。通常是電流作為最內(nèi)環(huán),速度是中間環(huán),位置作為最外環(huán)。
下圖是電流環(huán)(最內(nèi)環(huán))的控制框圖:
圖一:電流環(huán)
在圖一中,Iq_Ref是q軸(交軸)電流設(shè)定值,Id_Ref是d軸(直軸)電流設(shè)定值,關(guān)于交軸直軸不再介紹,大家自行百度。
Ia, Ib, Ic分別是A相、B相、C相的采樣電流,是可以直接通過AD采樣得到的,通常直接采樣其中兩相,利用公式Ia+Ib+Ic=0計(jì)算得到第三相,電角度θ可以通過實(shí)時(shí)讀取磁編碼器的值計(jì)算得到。
在得到三相電流和電角度后,即可以進(jìn)行電流環(huán)的執(zhí)行了:三相電流Ia, Ib, Ic經(jīng)過Clark變換得到Iα, Iβ;然后經(jīng)過Park變換得到Iq, Id;然后分別與他們的設(shè)定值Iq_Ref, Id_Ref計(jì)算誤差值;然后分別將q軸電流誤差值代入q軸電流PI環(huán)計(jì)算得到Vq,將d軸電流誤差值代入d軸電流PI環(huán)計(jì)算得到Vd;然后對(duì)Vq, Vd進(jìn)行反Park變換得到Vα, Vβ;然后經(jīng)過SVPWM算法得到Va, Vb, Vc,最后輸入到電機(jī)三相上。這樣就完成了一次電流環(huán)的控制。
當(dāng)對(duì)PMSM進(jìn)行速度控制時(shí),需要在電流環(huán)外面加一個(gè)速度環(huán),控制框圖如下:
圖二:速度電流雙環(huán)
在圖二中,Speed_Ref是速度設(shè)定值,ω是電機(jī)的轉(zhuǎn)速反饋,可以通過電機(jī)編碼器計(jì)算得到。
將計(jì)算得到的電機(jī)速度ω與速度設(shè)定值Speed_Ref進(jìn)行誤差值計(jì)算,代入速度PI環(huán),計(jì)算的結(jié)果作為電流環(huán)的輸入;比較圖二和圖一的電流環(huán)部分可以發(fā)現(xiàn),圖二中d軸電流被設(shè)定為零(Id_Ref=0),因?yàn)閐軸電流對(duì)于驅(qū)動(dòng)電機(jī)的轉(zhuǎn)動(dòng)不會(huì)產(chǎn)生輸出力,所以通常情況下都會(huì)將d軸電流設(shè)定為零(但不是總是設(shè)定為0的);當(dāng)Id_Ref=0時(shí),Iq_Ref就等于了速度環(huán)的輸出;再結(jié)合上面的電流環(huán),就實(shí)現(xiàn)了速度電流的雙閉環(huán)控制。
當(dāng)對(duì)PMSM進(jìn)行位置控制時(shí),需要在速度電流環(huán)外面加一個(gè)位置環(huán),控制框圖如下:
圖三:位置速度電流三環(huán)
在圖三中,Position_Ref是位置設(shè)定值,Position(θ)是電機(jī)的當(dāng)前位置,可以通過電機(jī)編碼器得知,位置控制可以分為電角度位置控制和機(jī)械角度位置控制。
將得到的當(dāng)前位置Position(θ)和位置設(shè)定值Position_Ref計(jì)算誤差值代入P環(huán),輸出作為速度環(huán)的輸入Speed_Ref,在結(jié)合上面的速度電流環(huán)實(shí)現(xiàn)位置速度電流三閉環(huán)控制。
在實(shí)際使用中,由于磁編碼器無法直接返回電機(jī)轉(zhuǎn)速ω,需要計(jì)算一定時(shí)間內(nèi)的磁編碼值變化量來表示電機(jī)的轉(zhuǎn)速ω(M法測速),假設(shè)1ms的角度變化量為δ個(gè),則ω=δ/1ms=δ,(單位:個(gè)/ms),當(dāng)電機(jī)轉(zhuǎn)速比較快的時(shí)候,這樣的方式是可以的;但是在位置控制的時(shí)候,電機(jī)的速度會(huì)很慢,1分鐘的轉(zhuǎn)速可能只有1、2轉(zhuǎn),用M法測速會(huì)存在非常大的誤差,增大單位時(shí)間可以適當(dāng)降低誤差,但隨之而來整個(gè)系統(tǒng)的延遲也會(huì)增大。
所以為了避免速度環(huán)節(jié)帶來的誤差以及系統(tǒng)延遲帶來的影響,只使用位置和電流組成的雙環(huán)進(jìn)行控制,不過此時(shí)需要對(duì)位置環(huán)做一定的變化,控制框圖如下:
圖四:位置電流雙環(huán)
在圖四中,只使用了位置電流雙環(huán)實(shí)現(xiàn)位置控制。
在位置控制中,會(huì)涉及到電機(jī)的啟動(dòng)加速和剎車減速,所以只有P環(huán)肯定是不夠的,還需要加入I和D實(shí)現(xiàn)PID環(huán)進(jìn)行控制;如果對(duì)于位置控制的精度要求不高,允許存在1、2度的誤差的話,可以只使用P和D實(shí)現(xiàn)PD環(huán)控制即可。
以上簡單介紹了電機(jī)控制中的過程,不難發(fā)現(xiàn),主要包括了PID控制器和FOC控制算法。PID控制器是自動(dòng)控制中最常用的一種控制算法,應(yīng)用非常廣泛,網(wǎng)上關(guān)于PID的資料也非常多,下面詳細(xì)講解FOC控制算法。
從上面的控制框圖中可以看出,F(xiàn)OC主要包含了電流采樣、坐標(biāo)變換(Clark, Park, 反Park)、SVPWM。
前面講過,三相電流Ia, Ib, Ic是可以通過采樣和公式Ia+Ib+Ic=0得到的,并三相電流的相位差是120°,如下圖:
圖五:三相電流
圖五中Ia, Ib, Ic分別是三相電流。
然后經(jīng)過Clark變換得到Iα, Iβ,如下圖:
圖六:Clark變換
Clark變換是將靜止的三相a, b, c變換成靜止的兩相α, β,由于不知道如何在編輯器中輸入矩陣,所以選擇在word中寫好截圖過來,公式如下:
圖六 1
于是可以推導(dǎo)出:
圖六 2
將Ia+Ib+Ic=0代入上面的公式,可以得到:
圖六 3
我們需要關(guān)心的是Iα和Iβ,所以Clark變化最后的公式就是:
Iα = Ia ;
Iβ = (Ia + 2*Ib) /√3 ;
然后經(jīng)過Park變換得到Iq, Id,他們是相互垂直的并且同時(shí)跟隨著磁場方向在旋轉(zhuǎn),如下圖:
圖七:Park變換
如圖七所示,Park變換是將靜止的α,β電流變換成旋轉(zhuǎn)的q軸和d軸電流,θ是旋轉(zhuǎn)的角度,也稱為電角度。
以電角度θ為夾角,分別對(duì)Iα,Iβ進(jìn)行矢量分解,計(jì)算投影到q軸和d軸上的電流分量,可以得到以下公式:
Iq = Iβcosθ - Iαsinθ
Id = Iαcosθ + Iβsinθ
在計(jì)算得到Iq,Id之后,需要分別跟他們的設(shè)定值計(jì)算誤差,然后分別做PI控制,得到Vq,Vd。
然后對(duì)Vq,Vd進(jìn)行反Park變換,如下圖:
圖八:反Park變換
在圖八中,將Vq,Vd反向變換成Vα,Vβ,變換方式與Park變換類似,以電角度θ為夾角,分別對(duì)Vq,Vd進(jìn)行矢量分解,計(jì)算投影到α軸和β軸上的電壓分量,可以得到如下公式:
Vα = Vdcosθ - Vqsinθ;
Vβ = Vqcosθ + Vdsinθ;
在得到Vα和Vβ之后,需要通過SVPWM算法計(jì)算Va,Vb,Vc,關(guān)于SVPWM算法,網(wǎng)上有篇文章講解的非常好,叫做《SVPWM的原理及法則推導(dǎo)和控制算法詳解》,詳細(xì)的內(nèi)容可以去看這篇文章,下面就根據(jù)這篇文章做一些總結(jié)性的講解。
SVPWM的全稱是空間矢量脈寬調(diào)制(Space Vector Pulse Width Modulation),是由三相功率逆變器的六個(gè)功率開關(guān)元件組成的特定開關(guān)模式產(chǎn)生的脈寬調(diào)制波,能夠使輸出電流波形盡可能接近于理想的正弦波形。理論基礎(chǔ)是平均值等效原理,即在一個(gè)開關(guān)周期內(nèi)通過對(duì)基本電壓矢量加 以組合,使其平均值與給定電壓矢量相等。
假設(shè)直流母線電壓為Udc,三相相電壓分別為UA,UB,UC,且相互之間的相位差為120°;假設(shè)Um為相電壓有效值,f為電源頻率,則有:
圖八 1
則三相電壓空間矢量相加的合成空間矢量U(t)就可以表示為:
圖八 2
U(t)是一個(gè)旋轉(zhuǎn)的空間矢量,幅值不變,為相電壓峰值,且以角頻率ω=2πf按逆時(shí)針方向均勻旋轉(zhuǎn),而空間矢量U(t)在三相坐標(biāo)軸(a,b,c)上的投影就是對(duì)稱的三相正弦量。
下面討論一下電壓空間矢量:
圖九:三相逆變電路
圖九是一個(gè)三相逆變電路,每一相在同一時(shí)刻只有一個(gè)橋會(huì)導(dǎo)通,定義這樣一個(gè)開關(guān)函數(shù)Sx(x=a、b、c):
上橋臂導(dǎo)通時(shí),Sx=1;下橋臂導(dǎo)通時(shí),Sx=0。舉個(gè)例子:假設(shè)a相上橋?qū)ǎ琤和c相下橋?qū)?,那么三相的結(jié)果就是a=1,b=0,c=0,組合的結(jié)果就是U4(100)。
在同一時(shí)刻,如果不同相的上下橋同時(shí)存在導(dǎo)通的橋,那么就會(huì)有相電流產(chǎn)生,屬于非零矢量;如果同一時(shí)刻,三相的上橋同時(shí)導(dǎo)通或者三相的下橋同時(shí)導(dǎo)通,此時(shí)并不會(huì)有相電流產(chǎn)生,屬于零矢量。所以總共存在6個(gè)非零矢量:U1(001)、U2(010)、U3(011)、U4(100)、U5(101)、U6(110);以及兩個(gè)零矢量:U0(000)、U7(111)。電壓矢量的坐標(biāo)如下圖所示:
圖十:電壓空間矢量圖
在圖十中,顯示了8個(gè)電壓空間矢量U0 ~ U7,以及六個(gè)扇區(qū)Ⅰ~Ⅵ。
假如Sx(x=a,b,c)=(100),則此時(shí)Ua=?Udc,Ub=-?Udc,Uc=-?Udc,同理可以得到其他各種組合下的空間電壓矢量,如下表:
圖十一:電壓空間矢量表
結(jié)合圖十和圖十一可知,非零矢量的幅值相同,均為?Udc,相鄰的矢量間隔60°,而兩個(gè)零矢量幅值為0,位于中心。在每一個(gè)扇區(qū),選擇相鄰兩個(gè)電壓矢量以及零矢量,按照伏秒平衡原則來合成每個(gè)扇區(qū)內(nèi)的任意電壓矢量,即:
圖十一 1
或者等效成下式:
圖十一 2
其中,Uref為期望電壓矢量,T為周期,Tx、Ty、T0分別對(duì)應(yīng)兩個(gè)非零矢量Ux、Uy和零矢量U0在一個(gè)周期T內(nèi)的作用時(shí)間,其中U0包括U0和U7兩個(gè)零矢量。由于最終要得到的是作用在三相半橋上的占空比,也就是三個(gè)定時(shí)器通道的捕獲比較寄存器的值,所以我們只要能計(jì)算出Tx、Ty、T0的值,就可以知道三個(gè)捕獲比較寄存器值。
先來看一下當(dāng)Uref在第Ⅰ個(gè)扇區(qū)時(shí)的情況,見下圖:
圖十二:電壓空間矢量位于第Ⅰ扇區(qū)
如圖十二所示,Uref位于U4和U6之間,由正弦定理可得:
圖十二 1
得到以U4、U6、U7及U0合成的Uref的時(shí)間后,接下來就是如何產(chǎn)生實(shí)際的脈寬調(diào)制波形。在SVPWM調(diào)制方案中,零矢量的選擇是最具靈活性的適當(dāng)選擇零矢量,可最大限度的減少開關(guān)次數(shù),盡可能避免在負(fù)載電流較大的時(shí)刻的開關(guān)動(dòng)作,最大限度的減少開關(guān)損耗。因此,我們以減少開關(guān)次數(shù)為目標(biāo),將基本矢量作用順序的分配原則選定為:在每次開關(guān)狀態(tài)轉(zhuǎn)換時(shí),只改變其中一相的開關(guān)狀態(tài),并且對(duì)零矢量在時(shí)間上進(jìn)行了平均分配,以使產(chǎn)生的PWM對(duì)稱,從而有效的降低PWM的諧波分量。可以發(fā)現(xiàn)當(dāng)U4(100)切換至U0(000)時(shí),只需改變A相上下一對(duì)切換開關(guān),若由U4(100)切換至U7(111)則需要改變B、C相上下兩對(duì)切換開關(guān),增加了一杯的切換損失。因此要改變電壓矢量U4(100)、U2(010)、U1(001)的大小,需配合零電壓矢量U0(000),而要改變U6(110)、U3(011)、U5(101),需要配合零電壓矢量U7(111)。這樣通過在不同扇區(qū)內(nèi)安排不同的開關(guān)切換順序,就可以獲得對(duì)稱的輸出波形,其他各扇區(qū)的開關(guān)切換順序下表:
圖十二 2
同樣以第Ⅰ扇區(qū)為例,電壓矢量的先后順序?yàn)閁0、U4、U6、U7、U7、U6、U4、U0,將其畫成a,b,c三相的PWM波形的話就如圖十三所示:
圖十三:第1扇區(qū)三相PWM波形
一般我們?cè)诳刂芇MSM的時(shí)候都會(huì)將PWM波形設(shè)定為中央對(duì)齊模式,所以在圖十三中,對(duì)稱中心的兩邊各個(gè)電壓矢量所占的時(shí)間都是該電壓矢量在整個(gè)周期中所占時(shí)間的一半。
要先實(shí)現(xiàn)SVPWM的實(shí)時(shí)調(diào)制,我們首先要知道Uref所在的扇區(qū)位置,然后才能利用所在扇區(qū)的相鄰電壓矢量和適當(dāng)?shù)牧闶噶縼砗铣呻妷菏噶?。由圖十二可以知道,電壓矢量Uref與α軸的夾角θ決定了Uref所在的扇區(qū),所以我們只要判斷θ角的大小即可知道Uref所在的扇區(qū)。
由 tanθ=Uβ/Uα,可知 θ=arctan(Uβ/Uα),當(dāng)Uref位于第Ⅰ扇區(qū)時(shí),θ滿足0<θ<60°,此時(shí),Uα>0,Uβ>0,tanθ滿足 00,Uβ>0,√3Uα>Uβ。
同理可以得出Uref位于其他扇區(qū)時(shí)的等價(jià)條件,如下:
Uref位于第Ⅱ扇區(qū)時(shí)的充要條件是:Uβ>0,√3|Uα|
Uref位于第Ⅲ扇區(qū)時(shí)的充要條件是:Uα<0,Uβ>0,-√3Uα>Uβ;
Uref位于第Ⅳ扇區(qū)時(shí)的充要條件是:Uα<0,Uβ<0,√3Uα
Uref位于第Ⅴ扇區(qū)時(shí)的充要條件是:Uβ<0,√3|Uα|<-Uβ;
Uref位于第Ⅵ扇區(qū)時(shí)的充要條件是:Uα>0,Uβ<0,√3Uα>-Uβ;
進(jìn)一步分析以上的條件就可以看出,電壓矢量Uref所在的扇區(qū)完全由Uβ,√3Uα-Uβ,-√3Uα-Uβ三式?jīng)Q定,
因此令:
圖十三 1
再定義,若U1>0,則A=1,否則A=0;若U2>0,則B=1,否則B=0;若U3>0,則C=1,否則C=0。
再令N=4C+2B+A,則可以通過下標(biāo)計(jì)算Uref所在的扇區(qū)。
圖十三 2
接下來就要來計(jì)算合成Uref的相鄰電壓矢量的作用時(shí)間以及零矢量的作用時(shí)間。
假設(shè)Uref位于第Ⅰ扇區(qū)時(shí)(參照?qǐng)D十二),用到的電壓矢量是U4和U6,所以就需要計(jì)算T4和T6,以及零電壓矢量的T0和T7。計(jì)算過程如下:
Uα*Ts = |U4|*T4 + |U6|T6cos(π/3);
Uβ*Ts = |U4|T40 + |U6|T6cos(π/6);
前面說過,|U4|=|U6|=?Udc,所以有:
UαTs = ?UdcT4 + ?Udc*T6; ①
UβTs = (UdcT6) / √3; ②
解①,②組成的方程組,得:
T4 = (√3/Udc) * Ts * (√3Uα/2 - Uβ/2) = (√3/Udc) * Ts * U2;
T6 = (√3/Udc) * Ts * Uβ = (√3/Udc) * Ts * U1;
又因?yàn)門s=T0+T4+T6+T7,并且T0和T7的給定是靈活的,可以令T0=T7,那么就有:
T0 = T7 = (Ts - T4 - T6) / 2;
這樣就計(jì)算出了Uref位于第Ⅰ扇區(qū)時(shí)各電壓矢量的時(shí)間了。同理可以計(jì)算出位于其他扇區(qū)時(shí)的各電壓矢量時(shí)間:
Uref位于第Ⅱ扇區(qū)時(shí):
T2 = (-√3/Udc) * Ts * (√3Uα/2 - Uβ/2) = -(√3/Udc) * Ts * U2;
T6 = (-√3/Udc) * Ts * (-√3Uα/2 - Uβ/2) = -(√3/Udc) * Ts * U3;
T0 = T7 = (Ts - T2 - T6) / 2;
Uref位于第Ⅲ扇區(qū)時(shí):
T2 = (√3/Udc) * Ts * Uβ = (√3/Udc) * Ts * U1;
T3 = (√3/Udc) * Ts * (-√3Uα/2 - Uβ/2) = (√3/Udc) * Ts * U3;
T0 = T7 = (Ts - T2 - T3) / 2;
Uref位于第Ⅳ扇區(qū)時(shí):
T1 =(-√3/Udc) * Ts * Uβ = -(√3/Udc) * Ts * U1;
T3 = (-√3/Udc) * Ts * (√3Uα/2 - Uβ/2) = -(√3/Udc) * Ts * U2;
T0 = T7 = (Ts - T1 - T3) / 2;
Uref位于第Ⅴ扇區(qū)時(shí):
T1 = (√3/Udc) * Ts * (-√3Uα/2 - Uβ/2) = (√3/Udc) * Ts * U3;
T5 = (√3/Udc) * Ts * (√3Uα/2 - Uβ/2) = (√3/Udc) * Ts * U2;
T0 = T7 = (Ts - T1 - T5) / 2;
Uref位于第Ⅵ扇區(qū)時(shí):
T4 = (-√3/Udc) * Ts * (-√3Uα/2 - Uβ/2) = -(√3/Udc) * Ts * U3;
T5 = (-√3/Udc) * Ts * Uβ = -(√3/Udc) * Ts * U1;
T0 = T7 = (Ts - T4 - T5) / 2;
這樣就完成了Uref位于6個(gè)扇區(qū)時(shí)的各電壓矢量時(shí)間的計(jì)算,其中√3/Udc是SVPWM調(diào)制模式下的最大不失真電壓幅值,在計(jì)算定時(shí)器各通道的捕獲比較寄存器值時(shí)可以將√3/Udc直接去掉;Ts是PWM一個(gè)完整周期的時(shí)間,也就是定時(shí)器的計(jì)數(shù)周期。
在圖十三中,整個(gè)PWM周期中,最先發(fā)生的是T0,接下來依次是T4,T6,T7,其中T4,T6是兩個(gè)非零矢量,且T4先于T6發(fā)生,所以我們可以令先發(fā)生的非零矢量時(shí)間為Tx,后發(fā)生的非零矢量時(shí)間為Ty,并且T0=T7,那么就可以得出加載到三個(gè)捕獲比較寄存器上的時(shí)間分別是:
T1 = (Ts - Tx - Ty) / 4;
T2 = T1 + Tx/2;
T3 = T2 + Ty/2;
只要根據(jù)Uref實(shí)際所在的扇區(qū),確定Tx和Ty實(shí)際所對(duì)應(yīng)的電壓矢量,就可以計(jì)算出T1,T2,T3的值;然后再根據(jù)Uref所在的扇區(qū)畫出類似圖十三的三相PWM波形,就可以確定T1,T2,T3分別對(duì)應(yīng)到三相A,B,C的哪一個(gè)通道,再賦值給對(duì)應(yīng)通道的捕獲比較寄存器,就完成了SVPWM算法。
評(píng)論
查看更多