STM32控制永磁同步電機 | FOC電機控制算法概述


1. FOC基本概念

參考:https://www.sohu.com/a/432103720_120929980

FOC(field-oriented control)為磁場導向控制,又稱為矢量控制(vector control),是一種利用變頻器(Variable-frequency Drive,VFD)控制三相交流馬達的技術,利用調整變頻器的輸出頻率、輸出電壓的大小及角度,來控制馬達的輸出。其特性是可以分別控制馬達的磁場及轉矩,類似他激式直流馬達的特性。由於處理時會將三相輸出電流及電壓以矢量來表示,因此稱為矢量控制。是目前無刷直流電機(Brushless Direct Current Motor,BLDCM)和永磁同步電機(Permanent-Magnet Synchronous Motor,PMSM)高效控制的最佳選擇。FOC精確地控制磁場大小與方向,使得電機轉矩平穩、噪聲小、效率高,並且具有高速的動態響應。由於FOC的優勢明顯,目前已在很多應用上逐步替代傳統的控制方式,在運動控制行業中備受矚目。

FOC按照電機有無傳感器來區分,可以分為有感FOC和無感FOC。對於有感FOC,由於電機的傳感器(一般為編碼器)能反饋電機轉子的位置信息,因此在控制中可以不使用位置估算算法,控制起來相對無感FOC簡單,但是對帶傳感器的電機應用來說,往往對控制性能要求較高。對於無感FOC,由於電機不帶任何傳感器,因此不能通過簡單讀取傳感器的測量值來得到電機轉子的位置信息,所以在控制中需要通過采集電機相電流,使用位置估算算法來計算轉子位置。雖然無感FOC的控制難度較大,但是它可以避免傳感器故障的風險,並且省去了傳感器的成本,同時簡化了電機與驅動板間的布線。目前,無感FOC多應用在風機類的場合中。

矢量控制可以適用在交流感應馬達及直流無刷馬達,早期開發的目的是為了高性能的馬達應用,可以在整個頻率范圍內運轉、馬達零速時可以輸出額定轉矩、且可以快速的加減速。不過相較於直流馬達,矢量控制可配合交流馬達使用,馬達體積小,成本及能耗都較低,因此開始受到產業界的關注。矢量控制除了用在高性能的馬達應用場合外,也已用在一些其他行業中。目前就有太兆智控公司以矢量控制技術為核心,將矢量控制廣泛應用於服務機器人、家電、AGV、電動工具和工業控制等行業中,並不斷拓展其他領域。

稚暉君關於FOC的總結:https://zhuanlan.zhihu.com/p/147659820

2. FOC的最簡理解

參考:https://bbs.elecfans.com/jishu_538586_1_4.html

FOC作為目前使用較多的控制算法,對於初學者來說要迅速理解該其中理論確實有很多問題,但在學習該理論之前,我們先在腦海里建立一個磁場定向控制(FOC)的直觀概念,理解起來就顯得容易多了。
顧名思義,FOC是磁場定向控制,所以我們控制的是磁場方向,轉子的力矩正比於定子磁場向量與轉子磁場向量的X乘(矢量積)。因此當定子磁場向量與轉子磁場向量垂直時,我們可以得到最大轉矩。

有了以上概念,剩下的便是通過驅動電路來產生電壓繼而得到電流來產生相應磁場,其中,磁場正比於電流且兩者方向一致。

電壓->電流->磁場

那么這里就有兩個問題:

1、三相電壓如何確定?

2、電流向量,即磁場向量的方向如何確定?

先來說第一個問題:三相電壓如何確定?

電壓與電流應該是同頻同向,只是由於感性負載的原因,電流相位上滯后於電壓,所以比較普遍的做法是通過建立PI控制器,輸入為電流,輸出為電壓來得到需要的電流。具體實現請查找相關文獻。

再來說第二個問題:電流向量,即磁場向量的方向如何確定?

電流向量的方向與轉子垂直,因此需要得到轉子實時位置,這里分有無傳感器兩種方式。有了轉子的位置后,我們就可以得到控制電流的方向。

在FOC里常用的控制模式有兩種:

1、力矩模式
2、速度模式

力矩模式為直接控制電流向量大小,而速度模式通過PID控制器,輸入為參考速度與實際速度,輸出為電流向量大小。

3. FOC實現概述

FOC控制的其實是電機的電磁場方向。轉子的轉子力矩正比於定子的磁場向量與轉子磁場矢量的矢量積。由矢量的關系可知,若使電機的轉矩時刻保持最大,則定子磁場向量應與轉子磁場向量相互垂直。又因為磁場的大小與方向與電流的大小與方向有着直接的關系,所以在用FOC控制算法控制BLDC時的關鍵就是控制三相輸入的電流大小與方向。而控制電流產生定子磁場與轉子磁場垂直的關鍵在:控制穩定的三相輸入電壓及其電流向量,並且我們得知道轉子的實時位置。

輸入電流的方向控制,FOC給出了空間電流矢量的概念。其實質是將三相的電流矢量結合,再分解為垂直和平行於轉子磁體軸方向的兩個分量即d-q結構。垂直方向的電流分量所產生磁場正交於轉子的磁場,這就產生了旋轉力矩。而平行於轉子磁軸方向的電流分量,所產生的磁場與轉子磁場一致,就不會產生任何的力矩。另外,一個好的控制算法就需要使這個平行於轉子磁軸方向的電流分量盡量最小化,因為,這個電流分量只會使電機產生多余的熱量,並加劇軸承的磨損。我們需要控制線圈的電流,以使垂直於轉子磁軸方向的電流分量達到最大。由此而得到的電機力矩和這個電流分量的大小成比例。

為了使與轉子磁場同向的定子電流矢量最小化(為零)且垂直的磁場最大化,定子線圈內的弦波電流需要隨着轉子的轉動角度實時地進行相位調整。控制穩定的三相電流輸入可以建立P-I控制器,P-I控制是在不停的調制輸入,一旦電機電流被轉化成d-q結構,控制將變得非常簡單。我們需要兩路P-I控制器;一個控制平行與轉子磁場的電流,一個控制垂直向電流。因為平行向電流的控制信號為零,所以這就使電機平行向的電流分量也變成零,這也就驅使電機的電流矢量全部轉化為垂直向的電流。由於只有垂直向電流才能產生有效的力矩,這樣電機的效率被最大化。另一路P-I控制器主要用來控制垂直向的電流,以獲得與輸入信號相符的需求力矩。這也就使垂直向電流按照要求被控制以獲得所需的力矩。

3.1 FOC算法原理

參考:https://www.cnblogs.com/yueze/p/7078486.html

FOC原理框圖如下:

其中涉及到兩種坐標轉換:

1. Clark變換:常規的三相坐標系→靜止的二相坐標系α、β

正變換矩陣

 

 

逆變換矩陣

 

2. Park變換:二相靜止坐標系α、β→二相旋轉坐標系d、q

正變換矩陣

 

逆變換矩陣

 

其中最關鍵的一步是確定轉子位置和速度。FOC的應用可分為異步電機和永磁同步電機(PMSM):

1. 在異步電機的控制中,根據磁鏈觀測方法的不同,FOC又可分為直接磁場定向控制和間接磁場定向控制。直接磁場定向控制通過磁場檢測或者運算來確定轉子磁鏈矢量的空間位置,方法簡單,但受電機齒槽影響較大,檢測信號有脈動,實際難以應用,通常通過一定計算估計磁鏈位置,因此又稱為磁鏈觀測法。間接磁場定向控制通過控制轉差頻率實現,計算方便。

磁鏈觀測法有電流模型和電壓模型,電流模型嚴重依賴於轉子時間常數T,高速時,如果T存在偏差,會引起磁通震盪,因此電流模型適用於中低速;電壓模型依賴於定子電阻R,R易受負載和溫度的影響而變化,且低速時,電壓檢測困難,因此電壓模型適用於中高速。實際中長結合兩者使用。但因需要計算反正切,計算量較大。

為了減少計算量,更多使用間接觀測法。

 

2. 對於同步電機的FOC控制,有位置傳感器(比如編碼器)的情況下,轉子位置和速度可由HALL傳感器或編碼器得到;

在無感情況下,通常用估算器法(滑模觀測器(SMO)和PLL估算器)、MRAS法(模型參考自適應)、卡爾曼濾波法高頻注入法神經網絡等方法。

FOC的控制策略:i=0控制、最大轉矩電流比控制、最大輸出功率控制、弱磁控制等。

3.2 SVPWM算法實現

FOC控制原理圖:
  1. 采集到兩相電流 
  2. 經過clarke變換后得到兩軸正交電流量, 
  3. 經過旋轉變換后得到正交的電流量 Id、Iq,其中Iq與轉矩有關,Id與磁通有關。在實際控制中,常將Id置為0。得到的這兩個量不是時變的,因此可以單獨的對這兩個量進行控制,類似直流量控制一樣。而不需要知道具體要給電機三相具體的電壓為多少。 
  4. 將第3步中得到的Iq與Id量分別送進PI調節器,得到對應的輸出Vq和Vd; 
  5. 通過傳感器得到電機轉過的角度。 
  6. 進行逆park變換,得到二軸電流量。 
  7. 對第6步中的Va,Vb進行逆clarke變換,得到實際需要的三相電壓輸入給逆變電橋,驅動電機轉動。

其實現流程大致如下所示:

1. 判斷合成矢量所在扇區

將U、V、W三相電壓矢量合成矢量電壓Uref並在二相坐標系中形成分量Uα、Uβ(在FOC中由逆Pack變換得到)由合成矢量落在各扇區的充分必要條件分析可知合成矢量所屬扇區。

2. 計算相鄰矢量作用時間

3. 計算各橋臂導通時間及各相PWM占空比

4.  更新相應寄存器值

  將上面計算出的TCM1、TCM2、TCM3送入單片機定時器寄存器即可產生SVPWM

三電阻電流采樣的可行性:

由於逆變器三相橋臂的上下橋的IGBT的開通與關斷是互補的,則每一橋臂的上下橋臂的控制信號也應均是互補輸出。假定對其單一相位,如A相位,進行導通取樣。當IGBT2導通,IGBT1必然關斷,此時電流流向應與A相電流大小相等方向相反。因此將此時采樣到的電流進行取反就能得到A相電流。(由於IGBT的開關頻率非常高,從而導致采樣頻率也就遠大於相電流頻率,由采樣定理可知,此時根據采樣電流即可恢復出為A相電流的值)

參考:http://blog.sina.com.cn/s/blog_8e32a5940102xy78.html

該博主的FOC控制記錄博客:http://blog.sina.com.cn/s/articlelist_2385683860_0_1.html

 

4. 影響電流采樣的一個因素——延遲源

參考:https://mp.weixin.qq.com/s/4PBl62YVFx_6bp4ghrJWkA

在電機驅動的FOC控制開發過程中,如果出現電機噪聲過大、效率偏低甚至無法運轉的情況,有可能源於相電流的采樣異常,從而導致FOC算法中無法重建正確的三相電流!這里分析影響電流采樣的一個因素——延遲源!

在雙電阻采樣的電機驅動FOC控制中,采樣點設置為驅動橋下管打開的中間時刻。注意,這里是驅動橋下管打開的中間時刻,而不是MCU輸出的PWM周期中間時刻。因為從MCU計算生成PWM到電流信號送入MCU的ADC模塊,這個典型的驅動拓撲中,存在多達七個延遲源!

 

圖片

 

4.1 延遲類型及典型時間

下面表格詳細指明了電機驅動系統拓撲中存在的七個延遲源及其典型的時間。這些延遲將疊加在一起,產生的影響是:實際輸出PWM波形滯后於MCU計算預期輸出的PWM波形,按照這個計算,相電流采樣點需要滯后於MCU計算預期輸出的PWM波形的中間時刻。

4.2 延遲源詳細分析

(1)PWM死區時間插入

在三相無刷電機驅動系統中,需要三個橋臂來控制相線電流流向,在每個橋臂上有兩個功率器件,如MOSFET、IGBT。這一對功率器件不能同時導通,否則就會出現短路的情況。這里以MOSFET作為功率器件來說明。在控制中,必須插入死區時間以確保上部和下部MOSFET不會同時處於打開狀態。死區時間的典型值可能在100ns到2μs之間,具體取決於系統中的各種因素,如MOSFET驅動電壓、MOSFET型號。

在所需的PWM波形插入死區時間之后,我們得到的是PWM中點和上升沿都向右移動。因此,在FOC控制算法計算出適當的PWM之后,我們立即開始看到第一個延遲,即死區時間。

 

圖片

 

(2)光耦延遲和預驅動器延遲

在MCU控制FTM模塊輸出PWM波形到MOSFET柵極受控制的那一刻之間,各種光電耦合器和預驅動器的信號響應導致了額外的延遲。

 

與MCU引腳輸出的波形相比,預驅動器的輸出延遲了一段時間(Delay1)。

  

圖片

(3)晶體管開關延遲

經過預驅動器后,PWM波形到達MOSFET晶體管,但由於其固有特性,所有晶體管都需要一定的時間導通和截止。根據晶體管類別及導通/截止之間切換所需要的電壓電平,此延遲時間有所不同。

Delay2為相線電壓理論切換點(CMP2)與實際切換點的時刻之間的整個延遲。

 

圖片

最后,柵極電壓到達了能令晶體管導通的程度,電流通過相線和采樣電阻,在采樣電阻兩端產生電壓差,紅色波形為理想狀態下的相電流波形。此時與MCU計算生成的PWM周期中點存在延遲總時間如圖中“相電流中點移位”。

 

圖片

  

(4)其他延遲

 如下圖所示,影響電流采樣的最后延遲鏈是由放大器轉換速率、MCU引腳上的低通濾波器和ADC轉換速率構成的。圖中用紅色圓圈標記的時刻為正確的電流采樣時刻,可以看出,與FTM輸出的PWM中點相比,相電流采樣點大大延遲。

 

圖片

所有的電子電路中,都會存在信號的延遲問題。信號延遲不可能被完全消除,但可通過選用低延遲的器件以減小影響。

在電機驅動中,除了選用合適的器件外,還需要對信號延遲進行軟件補償。文中提及的這些延遲源的精確延遲時間,我們可以通過示波器和計算得出,在軟件上補償這些延遲,才可得出正確的電流采樣時刻。這樣在正確的時刻采集到的數據才能作為FOC控制中重建電機三相電流的數據來源。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM