FreeMASTER Cortex-M4 永磁同步馬達 PMSM 嵌入裝置 DSP ARM 函式庫 馬達 除錯

善用嵌入式軟體與程式範例 馬達控制開發加速達陣

進階馬達驅動是許多家電、工業和汽車應用系統中不可或缺的一部分。在過去幾年,市場對馬達驅動的要求已經發生很大的變化。對安全和環境友好、效能,當然還有對生產成本的要求,迫使廠商做出改變。
能效要求是一個關鍵要求,它要求使用與進階控制演算法鏈結的高效節能馬達。效能要求則包括變速馬達運行、具有高度的靈活性,及提供多種運行速度選擇。低噪音要求則促使廠商使用正弦波驅動,而非簡單的換相控制。結果,採用複雜演算法來控制的三相馬達的使用越來越廣泛。全球設計者正在解決的一個任務是永磁同步馬達(PMSM)的無感測器向量控制。成功開發該應用的一個關鍵點是處理器生態系統的形成,有了這個生態系統,開發者就可以在合理的時間內設計出複雜的驅動。

與其他嵌入式系統相比,馬達控制應用程式的開發是一項非常具體的任務。馬達控制演算法要求大量的數學計算,而且還必須在短週期內完成這種計算。永磁同步馬達的向量控制分為兩個控制迴路:慢速(速度)控制迴路和快速(電流)控制迴路。通常,快速控制迴路的週期為25?200微秒(μs),這對中央處理器(CPU)負載至關重要,而慢速控制迴路週期通常是快速控制迴路週期的十倍。永磁同步馬達無感測器向量控制演算法的簡化示意圖如圖1所示。

利用向量控制演算法

交流馬達的向量控制,也被稱為磁場定向控制(FOC)演算法的發明主要來自於一個關鍵想法,那就是試圖獲得與獨立激勵直流馬達的特性相似的交流馬達轉矩/轉速特性。直流馬達的最大扭矩可自動產生,因為有稱為換向器的機械轉換開關,只饋送電流,繞組的位置垂直於定子永磁體或勵磁繞組產生的磁場方向。永磁同步馬達採用逆向構造,由轉子產生激勵,馬達沒有換向器,但是,由於定子電流可分解為產生磁場的部分和產生扭矩的部分(isd、isq),因此可以對這兩個分量分別加以控制,達到所需要的效能。

為保持恆定的理想轉矩,定子繞組產生的旋轉磁場的速率必須與轉子的旋轉速度同步。因此,為成功地執行向量控制,必須知道轉子軸的位置,它是向量控制演算法中的一個關鍵變數。為此,要使用機械位置感測器(編碼器、解析器等等),或從馬達相電流和電壓計算(預測)出軸位置。於是這種沒有使用感測器的演算法就稱為「無感測器控制」。

圖1所示的控制結構的目的是按照預定的標準調整馬達速度。速度值由高層控制設定。快速控制迴路執行兩個獨立的電流控制迴路,它們是直軸和正交軸電流(isd,isq)PI控制器。直軸電流(isd)控制轉子磁通,正交軸電流(isq)對應於馬達轉矩。電流PI控制器的輸出為去耦定子電壓的相應d和q軸分量之和。如此一來,就獲得施用於馬達的定子電壓的理想空間向量。快速控制迴路執行所有必要任務,對定子電流分量進行獨立控制,這些任務包括三相電流重構、前向Clark轉換、前向和後向Park轉換、轉子磁通位置的估算、DC匯流排電壓波動消除,以及空間向量調變(SVM)。

圖1 永磁同步馬達無感測器向量控制示意圖

慢速控制迴路執行速度控制、磁場弱化控制,以及低優先順序的控制任務。PI速度控制器輸出為定子電流iq_ref和磁通電流id_ref的產生扭矩的正交軸分量提供參考基準。

善用嵌入式軟體/馬達控制庫

控制程式包括一套基本的標準演算法,如轉換、控制器、三角函數和空間向量調變,以及無感測器轉子位置估算的一些進階演算法。

在圖1的示意圖中,永磁同步馬達向量控制的演算法表示為一連串的函數,一個函數的輸出作為其他函數的輸入。每個函數結構都包括數學公式,且不涉及周邊。

為加快馬達控制應用的開發,馬達控制函數與一些常用的數學演算法,如三角函數、控制器或限制條件和數字篩檢程式放在一個集中,其構成嵌入式軟體和馬達控制庫(ESMCLib)。為最大化利用現有的核心特性,有些微控制器業者如飛思卡爾(Freescale)Kinetis ARM Cortex-M4還提供嵌入式軟體和馬達控制庫,其所提供的函數已經使用目標在迴路(TIL)方法進行測試。測試過程自動化,利用MATLAB Simulink環境開發測試程式。在MATLAB Simulink為每個函數建立模型,並從測試向量輸入每個函數的輸入值。它們輸入到該函數的Simulink模型,同時還透過RS232介面輸入到目標微控制器,在這裡計算測試函數。然後,比較結果,產生一份測試報告,並根據函數特徵選取測試向量的大小和數值。必須檢查函數的邊界條件,以及檢查函數的飽和或溢出值,或可估算支路的值,測試流程如圖2所示。

圖2 嵌入式軟體和馬達控制庫函數的目標在迴路測試程式結構

嵌入式軟體和馬達控制庫,包括四個函數有關聯的子庫:

通用函數庫(GFLIB)</td>
  基本的三角函數和一般的數學函數,例如sin、cos、tan、hyst、limit等。

通用數位篩檢程式庫(GDFLIB)
  設計用於馬達控制應用的數位IIR和FIR篩檢程式。

通用馬達控制庫(GMCLIB)
  用於馬達控制的標準演算法,如Clarke /Park轉換、空間向量調變等。

進階控制庫(ACLIB)
  轉子位置估算所用的進階演算法,例如d軸和q軸的反電動勢觀測器,即追蹤觀測器。

嵌入式軟體和馬達控制庫是分層結構,只有通用函數庫和通用數位篩檢程式庫是完全獨立,能夠單獨使用。通用馬達控制庫和進階控制庫依賴於通用函數庫與通用數位篩檢程式庫,不能單獨使用。

嵌入式軟體和馬達控制庫採用32位元定點小數運算,採用C語言編寫,利用Cortex-M4 DSP指令集的飽和指令(QADD、QSUB)。使用小數運算給應用開發帶來幾個主要的條件,例如乘法從不溢出,因為應用中僅有一個數值格式,所以只需要一個物理量標度。

要實現快速資料傳輸,通常輸入和輸出結構的位址指標在函數調用時傳送。嵌入式軟體和馬達控制庫的所有函數都已記錄齊全,除應用程式介面(API)定義外,計算描述還包括程式碼長度,並列出執行時鐘週期。

讓設計變得更容易

通常,馬達控制應用的結構可分為三部分。開始時,執行微控制器初始化程式--設置周邊的內核和配置,然後應用程式進入永無終結的後台迴圈,在此可啟動應用程式狀態機,執行較進階的應用程式任務。通常,控制演算法在高優先順序中斷服務程式中進行。

若使用飛思卡爾嵌入式軟體和馬達控制庫時,可簡化圖1所示的永磁同步馬達向量控制演算法的運用,如右列部分程式碼所示。

無感測器和基於編碼器的永磁同步馬達向量控制的快速控制迴路運行一圈所需的機器週期數和執行時間如圖3所示。除控制演算法的執行外,還要考慮周邊維護,亦即從類比數位轉換器結果計數器中讀取類比數位轉換的結果,在完成控制演算法計算後,更新脈衝寬度調變模組的工作週期計數器,以及為下一步設定類比數位轉換器等。可以看出,憑藉飛思卡爾嵌入式軟體和馬達控制庫,永磁同步馬達的無感測器向量控制的設計變得相對容易。但是,開發者真正面臨的挑戰是如何正確地設置所有調節器的常數,主要是反電動勢觀測器結構中的調節器。這些取決於馬達和驅動參數,考慮到驅動的動態變化,通常要憑實證經驗來設置。在這部分應用程式開發過程中,開發工具FreeMASTER的使用非常重要。

圖3 63μs控制迴路的機器週期、執行時間和中央處理器負載

馬達控制應用軟體是即時嵌入式應用軟體,有許多系統變數和控制參數。為優化開發、設置和調整控制演算法,須要對這些參數和變數進行即時觀測和估算。通常,開發者使用程式碼除錯器和示波器進行馬達控制應用的開發。除錯器用於顯示處理器的內部記憶體,而示波器用於顯示訊號的輸入和輸出。

這種傳統的開發模式非常困難。多數情況下,除錯器不允許在目標處理器運行時視覺化和更改應用變數。而且,也不可能視覺化作為時間函數的所選變數。為獲得變數,除錯器往往要求終止目標處理器。這種解決方法不適用於馬達控制應用--開發者不可能僅為了接入處理器的內部記憶體,就停止馬達運行,然後又讓馬達運行。

透過FreeMASTER除錯/監測

透過示波器可觀測輸入和輸出變數。示波器的使用有一個限制因素,即驅動器的真實訊號通常不同於處理器測得的訊號。使用的傳感電路、測量噪音,以及數位類比轉換器的偏置和增益誤關等,都可能影響測得的訊號。脈衝寬度調變(PWM)可調變產生的訊號,所以須要過濾訊號,以獲得實際值。訊號過濾會影響測量的精度。用示波器來顯示內部變數有相當大的局限性。使用數位類比轉換器(DAC)可觀察內部變數。令人沮喪的是,馬達控制處理器或馬達控制應用主板上的周邊也不標準。

傳統處理方式的另一個重大缺點是示波器和必備附件(如電流探針)的成本和供應情況。通常,可提供雙通道的示波器,不足以支援多相馬達控制系統的開發,尤其是須要同時觀察多個內部輸入/輸出變數時。

簡化即時嵌入式應用開發

為幫助開發者開發即時嵌入式應用,飛思卡爾提供FreeMASTER即時除錯、監測和資料視覺化工具(圖4)。FreeMASTER能夠完全以非入侵方式監測嵌入系統上運行的變數。嵌入式系統開發者可在類似示波器的顯示器上顯示一段時間多個應用程式變數的變化,或以文本形式查看資料。用戶還可從個人電腦(PC)主機控制目標上運行的嵌入式應用程式。基於HTML的資料視覺化區域具有高擴展性。控制視窗中,用戶可提供基於Active-X的儀器儀表、表盤、旋鈕和游標,來建立自定義的顯示儀表盤,或複雜或優雅,可以隨心所欲。

圖4 FreeMASTER控制頁面和變數視窗

控制頁面可控制應用程式。它採用HTML格式建立,因此很容易新增所有要求的功能。控制頁面的各個組成部分與目標處理器的有關變數鏈結。控制頁面可用於創建應用程式演示。憑藉這個獨特的方法,建立HTML網頁的任何人也可建立FreeMASTER軟體的控制頁面。典型的例子是啟動或關閉馬達的按鈕,或設置/顯示馬達速度的柱狀圖。當用戶單擊控制頁面螢幕的按鈕時,就可更新啟動應用控制的目標處理器內的有關變數。

變數視窗顯示目標處理器的所選變數或記憶體位址。從變數視窗可直接設置目標處理器中的變數。用戶可選擇變數位址、變數類型(符號/無符號定點數、浮點數、符號/無符號小數、字串)、變數長度、取樣週期等。設置的主要部分是變數的實際類型轉換,它能夠讓目標處理器內的變數轉換成用戶更容易理解的格式如伏特、安培、每分鐘轉數等。此外,變數視窗和控制頁面可以顯示變數。

範圍視窗則可顯示目標處理器中的變數,方式類似於傳統示波器。FreeMASTER 軟體定期與目標處理器進行通訊。它每次都讀取和顯示選定的變數,作為一個進程。範圍視窗能夠顯示八個進程。個人電腦與目標控制器間的通訊速度取決於範圍和變數視窗的所選變數數目。通常,每隔10毫秒(ms)對變數進行一次更新。範圍可用於追蹤變化相對較慢的變數。變數改變頻率應與範圍視窗內的變數更新頻率差不多,典型例子就是馬達速度。

記錄儀視窗可顯示變化較快的變數(圖5)。存在於用戶程式碼中的小段程式將所選變數儲存在板載記憶體緩衝區。完成記錄後,它們載入到個人電腦中並進行顯示,整個作為一個進程。緩衝長度受到可存取的空閒板載資料隨機存取記憶體(RAM)的限制。當變數變化太快,以至於範圍視窗不能追蹤變數時,記錄儀可用來追蹤這些變數。典型例子就是馬達電流。

圖5 FreeMASTER記錄儀

模擬器可模擬所選變數。FreeMASTE軟體根據規定的變數定義更新目標處理器中的變數。因此,可觀察和評估系統的回應。模擬器有助於馬達控制和應用程式的開發,典型例子就是洗衣機應用程式的速度配置。用戶可預先設置馬達速度並評估驅動的表現,毋須使用馬達控制軟體。

幾乎所有馬達控制應用程式皆使用控制器。控制器用於控制馬達控制演算法中的變數和應用演算法本身。馬達速度、電流、電壓、磁鏈或馬達轉矩是最典型的馬達控制變數。壓力、負載、壓力不足、速度、溫度等是典型的應用變數。系統控制器須要設置和精確調整,以獲得控制過程的最優結果。

儘管理論分析可提供控制參數的初始值,多數情況下,需要在實際系統中進行反覆調整。在調整時,需要觀察控制器的輸入和輸出變數。FreeMASTER軟體簡化即時控制器的調整。可顯示受控制的變數、線上修改控制參數並可立即獲得結果。使用範圍(Scope)或記錄儀可觀察輸入和輸出資料。

總之,各種類型的驅動會越來越多地使用進階無感測器演算法控制的三相馬達。經過測試的軟體庫、隨時可用的應用程式範例,還有豐富的支援工具,可幫助開發者加快開發速度,專注於達成與其應用有關的技術挑戰。

(本文作者任職於飛思卡爾)

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!