關(guān) 閉

新聞中心

EEPW首頁 > 工控自動化 > 設(shè)計應用 > 基于模型的設(shè)計簡化嵌入式電機控制系統(tǒng)開發(fā)

基于模型的設(shè)計簡化嵌入式電機控制系統(tǒng)開發(fā)

作者: 時間:2016-10-10 來源:網(wǎng)絡 收藏

本文描述了圍繞基于ARM的嵌入式處理器構(gòu)建的基于設(shè)計(MBD)平臺的詳細情況。 隨后,本文提供最初部署的基本永磁同步電機(PMSM)控制算法示例,并介紹了方便的功能擴展,以包含自動化系統(tǒng)的多軸位置控制。

本文引用地址:http://www.butianyuan.cn/article/201610/306584.htm

長期以來,系統(tǒng)和電路建模一直是系統(tǒng)設(shè)計的重要方面。 采用MBD方法后,電氣、機械和系統(tǒng)級用于在構(gòu)建和測試物理硬件前評估設(shè)計概念。 MathWorks最新的仿真工具可以對完整的嵌入式控制系統(tǒng)進行建模,包括電氣電路和機械系統(tǒng)領(lǐng)域。 同時,嵌入式編碼工具從控制系統(tǒng)生成C語言代碼,將控制算法部署在嵌入式控制平臺上。

這些工具實現(xiàn)了基于模型的設(shè)計過程,人們可以在最終硬件測試前先在仿真平臺上進行設(shè)計并完全測試。 成功構(gòu)建MBD平臺的關(guān)鍵是分隔系統(tǒng)模型和嵌入式軟件代碼。 一旦MBD平臺使用已知算法和系統(tǒng)進行測試后,便可開發(fā)新算法,并在仿真平臺上以系統(tǒng)工作極限安全地測試。

完整的設(shè)計流程

MBD經(jīng)過數(shù)十年的探討,直到最近幾年才發(fā)展為從模型創(chuàng)建到完整實現(xiàn)的完整設(shè)計流程。 MBD是解決設(shè)計復雜嵌入式控制系統(tǒng)相關(guān)問題的數(shù)學和可視化方法。

設(shè)計師無需使用復雜的結(jié)構(gòu)和大量軟件代碼,通過連續(xù)時間和離散時間構(gòu)建模塊,就可以使用MBD定義具有高級功能特性的各種模型。 這些與仿真工具一同使用的模型能夠縮短原型設(shè)計、軟件測試和硬件在環(huán)(HIL)仿真的時間。

通過仿真,我們能夠立即發(fā)現(xiàn)各種規(guī)范差異和模型誤差,不會等到設(shè)計周期的后續(xù)環(huán)節(jié)才發(fā)現(xiàn)。 為了優(yōu)化整體代碼生成過程,可以加入自動代碼生成來減少任何手動部署步驟,并進一步有助于縮短整體產(chǎn)品上市時間。 總而言之,MBD方法使設(shè)計師能夠從更多經(jīng)典設(shè)計方案開始擴展,以可控方式直接從模型創(chuàng)建轉(zhuǎn)到仿真、代碼生成和HIL測試,無需重新設(shè)計整個系統(tǒng)就可對系統(tǒng)行為作出遞增改變。

本文中的實驗性設(shè)置基于交流饋入閉合系統(tǒng),如圖1所示。該系統(tǒng)表示一個功能完整的PMSM市電輸入電機驅(qū)動,具有功率因數(shù)校正、完全控制、通信信號隔離和光學編碼器反饋功能。 該系統(tǒng)的核心是一個ARM Cortex®-M4混合信號控制處理器,即ADI的ADSP-CM408。 它通過搭配IAR和MathWorks公司的工具,實現(xiàn)完整的MBD平臺部署。

交流電機驅(qū)動系統(tǒng)建模

目標驅(qū)動系統(tǒng)是帶有編碼器位置反饋的PMSM,連接三相交流電源逆變器,帶有隔離式相位電流反饋。 驅(qū)動控制算法部署在混合信號專用信號處理器(ASSP),包含外設(shè),可捕獲電機反饋信號并控制電源逆變器。

1.png

圖1. 驅(qū)動系統(tǒng)平臺 (a)交流饋入閉合電機控制系統(tǒng)框圖 (b)系統(tǒng)原型制作

系統(tǒng)有三個主要組件可用于建模: 電源逆變器和電機(對象)、控制反饋電路和數(shù)字控制器。 對象模型使用Simulink Simscape組件來仿真連續(xù)時間域內(nèi)的電源逆變器電氣電路和電機機電元素。 反饋電路模型處理控制器和電機驅(qū)動模型之間的增益和數(shù)據(jù)類型。

Simulink嵌入式編碼器工具創(chuàng)建的C語言代碼可以在仿真平臺和嵌入式控制處理器上精確反映算法的執(zhí)行。 基于模型設(shè)計的成功執(zhí)行有賴于精確的系統(tǒng)和電路模型,以及正確分隔系統(tǒng)模型和嵌入式控制軟件。 由于系統(tǒng)中混合了離散和連續(xù)時間函數(shù),因此該仿真求解器采用了固定步長離散求解器。

驅(qū)動系統(tǒng)硬件包括電源板、控制板、以及帶編碼器反饋的PMSM(參見圖1b)。 電源板包含輸入整流器、三相逆變器模塊、電流和電壓傳感器、數(shù)字和模擬信號隔離電路,以及編碼器信號緩沖器。 控制板包含電機控制ASSP(集成240 MHz ARM Cortex-M4F內(nèi)核)以及專用電機控制外設(shè)(包括PWM定時器、正交編碼計數(shù)器、Sinc濾波器和嵌入式模數(shù)轉(zhuǎn)換器(ADC))。 硬件包含電機電流反饋選項,采用隔離電流傳感器(集成嵌入式ADC)或分流器(集成隔離式ADC Σ-型轉(zhuǎn)換器),以及嵌入式Sinc濾波器。

反饋信號采集和控制算法執(zhí)行通過處理器中斷機制與PWM開關(guān)頻率同步。 由于對象中被關(guān)注的時間常數(shù)遠長于PWM開關(guān)周期,系統(tǒng)仿真采用相同的時間步長。 由于全開關(guān)信號仿真無法提供有用的控制信息,電源逆變器使用平均值模型。

PMSM電機模型來源于MathWorks SimPower系統(tǒng)庫,受配置菜單(甚至預設(shè)模型參數(shù))的支持。 用戶可以在自定義電機或逆變器模型之間切換,具體取決于設(shè)計開發(fā)的要求。

電機控制(MC)算法模型是一組離散時間函數(shù),每一個時間步進均在仿真和嵌入式平臺上執(zhí)行。 通常,MC算法函數(shù)包含在單個子系統(tǒng)模塊內(nèi),簡化代碼產(chǎn)生過程。 代碼生成器創(chuàng)建C語言代碼,來執(zhí)行算法輸入、輸出和狀態(tài)變量的控制算法和數(shù)據(jù)結(jié)構(gòu)。 算法本身是常用的磁場定向控制(FOC),具有外部速度環(huán)路、內(nèi)部d軸和q軸電流環(huán)路,如圖2所示。

逆變器接口和反饋路徑分為傳感器信號調(diào)理和嵌入式接口模塊。 電流傳感器和信號調(diào)理模型是簡單的增益元素,因為它們的帶寬超出了控制反饋所關(guān)心的范圍。位置傳感器模型更為復雜,因為它提供高分辨率增量位置信號和低分辨率絕對位置信號。

嵌入式信號接口模型包括類型轉(zhuǎn)換函數(shù),因為ADC、Sinc濾波器、計數(shù)器和定時器外設(shè)具有16位或32位定點輸出數(shù)據(jù)寄存器。 每個嵌入式接口的增益都是外設(shè)系統(tǒng)時鐘速率、采樣速率和接口外設(shè)寄存器設(shè)置的函數(shù)。 模型參數(shù)必須匹配嵌入式系統(tǒng)配置,確保仿真結(jié)果的精確性。

軟件分隔和代碼生成

電機驅(qū)動系統(tǒng)執(zhí)行多種功能和電機控制算法。 嵌入式軟件分為多個功能模塊,來實現(xiàn)平臺靈活性,并方便開發(fā)。 關(guān)鍵的代碼功能是系統(tǒng)初始化、通信接口、應用任務、電機控制接口和電機控制算法。 圖3顯示的是高電平驅(qū)動程序流程圖,圖4顯示的是代碼結(jié)構(gòu)。

主程序調(diào)用初始化例程來配置ASSP硬件,然后將處理器置于連續(xù)等待環(huán)路。 所有其它函數(shù)都由事件驅(qū)動型中斷服務例程(ISR)調(diào)用。 ADC中斷具有最高優(yōu)先級,而當新傳感器數(shù)據(jù)樣本就緒時,ADC ISR調(diào)用電機控制函數(shù)。

ADC采樣與PWM切換同步,為控制環(huán)路提供執(zhí)行時序。 ADC ISR每一個PWM周期執(zhí)行一次,但僅在電機運行標置位時才調(diào)用電機控制例程(PMSMctrl)。 在代碼構(gòu)建前選擇電機電流反饋路徑。

PWM觸發(fā)中斷是異步的;它僅在響應硬件故障時才會調(diào)用,而且是延遲故障的唯一函數(shù),因為硬件PWM觸發(fā)函數(shù)會自動關(guān)斷逆變器PWM信號。 通信端口ISR具有較低的優(yōu)先級,處理用戶命令,并發(fā)送調(diào)試監(jiān)控器函數(shù)捕捉的數(shù)據(jù)。 內(nèi)核定時器ISR管理背景應用任務,比如電機啟動和停止序列、調(diào)試監(jiān)控器接口以及其它管理類任務。

2.png

圖2. FOC算法

2 | 基于模型的設(shè)計簡化嵌入式電機控制系統(tǒng)開發(fā)

3.png

圖3. ISR說明

4.png

圖4. 代碼分隔

嵌入式代碼按照功能組織而不是按編程順序組織。系統(tǒng)初始化代碼時以標準方式設(shè)置處理器時鐘、電源和內(nèi)核定時器,與應用程序函數(shù)幾乎無關(guān)。 通信和應用程序任務代碼通過用戶接口和系統(tǒng)管理要求定義,與電機控制算法幾乎沒有關(guān)系。

電機控制(MC)接口函數(shù)管理電機驅(qū)動硬件和控制算法之間的信號數(shù)據(jù)流。此代碼專門用于控制驅(qū)動電路以及控制為控制算法提供反饋信號的電機控制相關(guān)外設(shè)。電機控制算法是獨立于平臺的代碼,由Simulink生成,包含反饋和輸出信號的數(shù)據(jù)結(jié)構(gòu)。所有其它驅(qū)動代碼均為手動編碼。

實現(xiàn)細節(jié)

若要發(fā)揮MBD的最大效益,理解電機控制系統(tǒng)不同部分的建模詳細要求并盡可能將關(guān)鍵物理系統(tǒng)參數(shù)與相應模型參數(shù)相匹配很重要。 這包括將已建模的系統(tǒng)分隔為不同的詳細部分。 總體而言,以PWM平均值方式對整個系統(tǒng)建模就足夠了。 例如,在高頻PWM開關(guān)周期中以平均值處理所有信號,并且在電壓或電流信號中不包含PWM紋波或開關(guān)分量。

系統(tǒng)模型分隔至邏輯模塊內(nèi),如圖5所示(圖中顯示相關(guān)信號流)。 每一個模塊再進一步細分(如圖中右側(cè)所示),且每一個子模塊采取適當?shù)慕7椒?,如?中所列。表中未列出用戶命令模塊。 用戶命令通過C語言代碼內(nèi)部的全局參數(shù)結(jié)構(gòu)與內(nèi)核算法通信;一旦它們在Simulink算法中定義為全局可調(diào)參數(shù)后,便可正確處理。

5.png

圖5. 系統(tǒng)模型分隔

6.png

*括號中的數(shù)字對應圖5中的框圖。

除了基本設(shè)置(比如類型大小、字節(jié)順序等),通過使自動代碼生成變?yōu)椴会槍δ硞€特定目標,便可最大程度實現(xiàn)代碼便攜性和易于維護。 MathWorks提供特定處理器的代碼生成模塊,可直接尋址處理器外設(shè)和驅(qū)動器。 雖然某些情況下這種功能非常吸引人,其缺陷是代碼便攜性不足,且設(shè)備驅(qū)動程序或外設(shè)配置的任何改變(比如新處理器變體)都將要求更改代碼。 因此,在本文所述的設(shè)計示例中,代碼生成僅限控制算法,而Simulink模型包含全部外設(shè)函數(shù)模型,并在應用項目中手動編碼。 此方法在圖6中強調(diào);由圖可知,MathWorks控制器模型生成的代碼連接至主應用程序項目的其它代碼和庫模塊。

61.png

62.png

圖6. 模型代碼接口

帶分隔模型模塊的Simulink模型如圖7所示。如圖所示,代碼由模型的電機控制算法部分生成。 代碼生成的重要設(shè)置可在配置代碼 → 硬件部署窗口中選擇(該窗口中可以選擇整體設(shè)備類型),以及在配置參數(shù) → 代碼生成 → 接口窗口中選擇(在該窗口中選擇標準數(shù)學庫)。

影響代碼效率的另一個因素是使用的C語言“方言”。 大部分代碼生成工具以及嵌入式工作臺支持的常見“方言”是C89/C90和C99。 最重要的是,在工具中應當使用相同的“方言”。 例如,如果嵌入式工作臺配置為根據(jù)C99構(gòu)建代碼,則自動代碼生成工具必須同樣依據(jù)C99標準構(gòu)建代碼。 如果不能做到這一點,則代碼性能會大打折扣,甚至在最差的情況下會使代碼產(chǎn)生非預期的作用。

另一個重要的因素是定點和浮點類型表示。 兩種編碼“方言”均支持定點,因此這種情況下選擇何種“方言”并不重要,只要在所有工具中使用相同的“方言”即可。 然而,如果使用了浮點類型,則C“方言”的選擇就變得很重要。

C89/C90不區(qū)分單精度浮點和雙精度浮點。 如果代碼要在支持雙精度的處理器上運行,那這樣做也許是可以接受的;但對于僅支持單精度的處理器而言(比如ARM Cortex-M4),情況就大為不同了。 請記住,應當確保自動代碼生成工具以及嵌入式工作臺設(shè)置為使用C99“方言”。

Simulink提供Simscape和SimMechanics等工具箱,當物理參數(shù)已知時可用來為機電系統(tǒng)輕松建模。 即使物理參數(shù)未完全特性化,預定義組件模型(比如電機)可以加載大致相當?shù)囊?guī)格,實現(xiàn)電機控制算法的初步設(shè)計。 就算法本身來說,某些模塊很有用,比如Park變換和正弦余弦CORDIC近似模塊可以簡化電機控制算法的開發(fā)。

自動代碼接口由初始化函數(shù)調(diào)用和一個或多個時間步長函數(shù)調(diào)用定義,必須在主應用程序代碼內(nèi)以適當?shù)臅r間步長調(diào)用。 本例中有兩個時間步進函數(shù)——主控制算法,在10 kHz PWM速率時調(diào)用,以及速度測量函數(shù),在1 kHz速率時調(diào)用。 自動生成的代碼模塊集成至主項目中,如圖8所示。

7.png

圖7. 建模和代碼生成部署

8.png

圖8. 代碼模塊組織和算法函數(shù)調(diào)用

如圖所示,代碼以模塊化方式組織,集成特定應用函數(shù),比如聯(lián)網(wǎng)和保護,非常直觀。 高優(yōu)先級任務(比如電機控制算法)從圖3中的ISR處調(diào)用。應用程序級任務從基本調(diào)度程序內(nèi)核處作為調(diào)度任務調(diào)用。 MC接口例程包含于電機控制和測量代碼模塊中,后者包含所有電流反饋信號處理代碼。 ADI電機代碼包含用于系統(tǒng)測試的調(diào)試監(jiān)視器函數(shù),可以在電機運行時捕捉應用和控制算法信號數(shù)據(jù)。 數(shù)據(jù)通過串行鏈路傳輸至PC,以供顯示和分析。

系統(tǒng)測試與調(diào)試

通過測量、計算和查閱數(shù)據(jù)手冊確定表1中的關(guān)鍵參數(shù)后,速度和電流環(huán)路的正確控制器增益便可使用Simulink模型確定。 這可以利用標準PID調(diào)諧法[2]或MathWorks提供的調(diào)諧工具(比如PID調(diào)諧器工具)實現(xiàn)。 該過程詳見參考文獻3。

建模和實驗操作的電流環(huán)路性能如圖9和圖10所示。該曲線中的實驗數(shù)據(jù)僅每隔5 ms采樣一次,因此存在一些混疊,但整體趨勢非常明顯。

基于模型的自動生成代碼的性能可以通過在PWM周期內(nèi)檢查代碼執(zhí)行的時間期限確定。 這可以使用I/O引腳和示波器來完成,或更簡單地使用IAR Embedded Workbench C-SPY調(diào)試器中的ITM事件功能來完成。 PWM周期中事件的序列如圖11時間期限所示。

PWM同步脈沖發(fā)生在每一個新PWM周期開始處,并在硬件中連接ADC定時器,控制每個ADC通道的采樣。 這種情況下,電機電流將在PWM同步脈沖之后立即采樣,并直接存儲器存儲(DMA)至存儲器,然后執(zhí)行算法,并生成PWM占空比更新值。 如圖11所示,執(zhí)行基于模型的自動生成代碼消耗的PWM周期不到10%,從而允許有大量的其它背景任務開銷。 以前對于自動生成代碼效率的擔憂將不復存在。

9.png

圖9. 比較模型操作和經(jīng)驗操作的(a)速度響應以及(b) q軸電流參考

10.png

圖10. 電流環(huán)路性能——模型和經(jīng)驗結(jié)果

11.png

圖11. 代碼執(zhí)行時間期限

111.png

新應用程序開發(fā)

本文所討論的軟件假設(shè)為含有兩個主要組件的系統(tǒng)。 第一個是基于模型的組件,部署控制算法。 雖然模型以嵌入式目標為原則開發(fā),從自動生成工具獲取的代碼本質(zhì)上是通用的。 第二個是手寫軟件組件,將通用算法代碼綁定至嵌入式目標,處理調(diào)度并分配處理器資源。 在重用模型和擴展性方面,這種系統(tǒng)分隔有一定優(yōu)勢。

本文討論了單個電機(單軸)的控制開發(fā)。 現(xiàn)在,想象驅(qū)動程序規(guī)格通過同一個處理器調(diào)用兩個電機(雙軸)控制。 無疑,這對系統(tǒng)來說是一個很大的變化,但采用通用模型進行工作的優(yōu)勢也得以凸顯。 已經(jīng)完成開發(fā)的單軸模型不對處理器外設(shè)作出任何假設(shè)——它是PM電機的通用控制算法。 因而,創(chuàng)建一個可以控制單軸/雙軸的模型就變成了創(chuàng)建單軸模型第二個實例的問題。

自然,手寫代碼需要修改才能支持單軸/雙軸,但假設(shè)處理器具有一組正確的外設(shè)和計算資源來控制雙軸,則手寫代碼的修改也很直觀。 無論控制的是單軸或是雙軸,手寫代碼的主要任務都是將數(shù)值分配至模型的輸入、將模型的輸出寫入處理器外設(shè),以及調(diào)度模型的執(zhí)行時間。 因此,從單軸到雙軸只不過是外設(shè)的分配/配置,并調(diào)度增加軸的算法執(zhí)行時間。 該過程是無縫的,并由于模型是通用的這一事實而得以實現(xiàn)。

如果只開發(fā)一個單控制系統(tǒng),那么使用基于模型的設(shè)計優(yōu)勢有限。 然而,大多數(shù)情況下,產(chǎn)品開發(fā)意味著多個產(chǎn)品變體,并且對于這些情況而言,重用模型具有很大的吸引力——不僅因為縮短了開發(fā)時間,還由于使用受信任模型而導致的質(zhì)量不斷上升。 隨著時間的推移,算法開發(fā)人員將會創(chuàng)建模型庫;如果部署正確,這些模型可在不同產(chǎn)品之間重用。 由于模型是通用的,它們可以運行在目前和未來的處理器上。

除了滿足產(chǎn)品變體的潛在要求或控制多軸之外,開發(fā)人員有時候還能提供不同的控制器模式。 一個典型的例子便是提供扭矩控制、速度控制和位置控制模式的應用。 在電流和速度控制算法的基礎(chǔ)構(gòu)建塊上可以部署位置控制算法。

在大多數(shù)應用中,位置控制環(huán)路作為圍繞內(nèi)層速度和電流環(huán)路的外層。 基本的位置控制器僅需比例增益項。 一般不需要積分項,因為位置環(huán)路中的任何穩(wěn)態(tài)誤差都會導致非零速度參考。 若內(nèi)層電流和速度環(huán)路經(jīng)過良好調(diào)諧,則這些可以視為理想的單位增益模塊,以及調(diào)諧位置環(huán)路變?yōu)橐粋€直觀的任務。

除了外層比例控制環(huán)路,包含一個位置參考也可能很重要,以便負載遵循定義的周期和加速度與減速度速率。 這對于最大程度減少很多系統(tǒng)中的機械應力而言十分重要。 在本應用示例中,恒定加速度、恒定速度和恒定減速度曲線施加到位置參考變化, 如圖12所示;圖中表示位置參考、曲線位置參考以及相應的理想速度曲線。 至于哪個實際速度遵循該曲線則取決于速度控制器的動態(tài)響應。

12.png

圖12. 位置參考曲線

所有這些功能——位置環(huán)路增益、位置曲線以及輔助功能(比如回零定位和終端-停止檢測)作為額外模塊部署在代碼中基于模型的部分。 唯一需要的手寫代碼更改是I/O配置,以支持家庭位置和終端-停止信號。

結(jié)論

基于模型的設(shè)計是強大的工具,可以加速電機驅(qū)動制造商的嵌入式開發(fā)。 如果以通用方式設(shè)置和配置,則可以大幅減輕手寫代碼開發(fā)和維護的重擔。 它還能加快產(chǎn)品上市時間,因為代碼開發(fā)可在缺少硬件的情況下初始處理——只要提供關(guān)鍵系統(tǒng)組件的合理精確模型。

這些特性已在PMSM驅(qū)動器情形中得到證實,該驅(qū)動器在擴展至多軸和位置控制的FOC下操作。 對軟件模塊和基于模型的組件進行分割的方法已經(jīng)詳細說明,可以優(yōu)化基于模型的解決方案提供的數(shù)值。 實驗數(shù)據(jù)也表明了模型在優(yōu)化速度控制器參數(shù)、代碼生成緊湊性和效率方面的優(yōu)勢。



關(guān)鍵詞: 模型 電機控制

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉