作者:Dara O’Sullivan, Jens Sorensen, and Aengus Murray
本文介紹圍繞基于 ARM 的嵌入式電機控制處理器構建基于模型的設計 (MBD) 平臺的詳細步驟。以下是最初部署的基本永磁同步電機(PMSM)控制算法的示例,以及擴展功能以包括自動化系統的多軸位置控制的便利性。
長期以來,系統和電路建模一直是電機控制系統設計的一個重要方面。使用 MBD 方法,在構建和測試物理硬件之前,使用電氣、機械和系統級模型來評估設計概念。MathWorks 的最新仿真工具可以對完整的嵌入式控制系統進行建模,包括電路和機械系統域。同時,嵌入式編碼工具從控制系統模型中生成C代碼,以便在嵌入式控制平臺上直接部署控制算法。
這些工具支持基于模型的設計流程,在最終硬件測試之前,可以在仿真平臺上設計和全面測試控制算法。構建成功的 MBD 平臺的關鍵是分區系統模型和嵌入式軟件代碼。一旦使用已知的算法和系統對MBD平臺進行了測試,就可以在系統操作的極端極限下在仿真平臺上開發和安全地測試新算法。
完整的設計流程
幾十年來,MBD 一直是一個討論話題,但直到最近幾年才演變成一個完整的設計流程 — 從模型創建到完整實現。MBD是一種數學和可視化方法,用于解決與設計復雜的嵌入式控制系統相關的問題。
設計人員可以使用 MBD 來定義具有高級功能特征的模型,而不是使用復雜的結構和廣泛的軟件代碼,而是使用連續時間和離散時間構建塊。這些模型與仿真工具配合使用,可實現快速原型設計、軟件測試和硬件在環 (HIL) 仿真。
仿真可以立即發現規格差異和建模錯誤,而不是在設計周期的后期發現。為了優化整個代碼生成過程,可以添加自動代碼生成,以減少任何手動實施步驟,并幫助進一步縮短總體上市時間。總而言之,MBD方法允許設計人員從更經典的設計方案擴展,直接從模型創建轉向仿真、生成、HIL和受控方式的測試,從而允許更改系統設置,而無需完全重新設計系統。
本文中使用的實驗設置基于交流饋電閉合電機控制系統,如圖1所示。該系統代表功能齊全的PMSM主輸入電機驅動器,具有功率因數校正,完全控制通信信號隔離和光學編碼器反饋。該系統的核心是ADI公司的ARM Cortex-M4混合信號控制處理器ADSP-CM408。這是通過IAR和MathWorks的組合工具進行編程的,以實現MBD平臺的完整實現。?
圖1.驅動系統平臺。(a)交流饋電閉合電機控制系統的框圖,以及(b)系統的原型。
交流電機驅動系統建模
目標驅動系統是具有編碼器位置反饋的PMSM,連接到具有隔離相電流反饋的三相交流電源逆變器。驅動控制算法在混合信號專用信號處理器(ASSP)上實現,該處理器包括用于捕獲電機反饋信號和控制電源逆變器的外設。
出于建模目的,該系統具有三個主要組件:電源逆變器和電機(工廠)、控制反饋電路和數字控制器。該工廠模型使用 Simulink Simscape 組件在連續時域中仿真電源逆變器電路和電機機電元件。反饋電路模型負責控制器和電機驅動模型之間的增益和數據類型轉換。
Simulink 嵌入式編碼器工具可創建嵌入式 C 代碼,準確反映仿真平臺和嵌入式控制處理器上的算法執行。成功執行基于模型的設計需要精確的系統和電路模型,以及系統模型和嵌入式控制軟件的適當分區。使用的仿真求解器是固定步長離散求解器,因為系統中混合了離散和連續時間函數。
驅動系統硬件由電源板、控制板和帶編碼器反饋的 PMSM 組成(如圖 1b 所示)。電源板包括輸入整流器、三相逆變器模塊、電流和電壓傳感器、數字和模擬信號隔離電路以及編碼器信號緩沖器。該控制板包括具有 240 MHz ARM Cortex-M4F 內核的電機控制 ASSP 和專用電機控制外設,包括 PWM 定時器、正交編碼器計數器、sinc濾波器和嵌入式模數轉換器 (ADC)。硬件包括電機電流反饋選項,可將隔離電流傳感器與嵌入式ADC配合使用,或將分流器與隔離式ADC Σ-?轉換器和嵌入式sinc濾波器配合使用。
反饋信號采集和控制算法的執行使用處理器中斷機制與PWM開關頻率同步。系統仿真使用相同的時間步長,因為工廠中感興趣的時間常數比PWM開關周期長得多。功率逆變器使用平均值模型,因為全開關信號仿真不能提供有用的控制信息。
PMSM電機模型來自MathWorks SimPowerSystems庫,由配置菜單甚至預設模型參數支持。用戶可以根據設計開發的重點切換定制電機或逆變器型號。
電機控制(MC)算法模型是一組離散的時間函數,在仿真和嵌入式平臺上執行每個時間步。通常,MC 算法函數包含在單個子系統塊中,以簡化代碼生成過程。代碼生成器創建 C 代碼以執行算法輸入、輸出和狀態變量的控制算法和數據結構。該算法本身是常用的磁場定向控制(FOC),具有外部速度環路以及內部d軸和q軸電流環路,如圖2所示。
圖2.FOC 算法。
逆變器接口和反饋路徑分為傳感器信號調理和嵌入式接口模塊。電流傳感器和信號調理模型是簡單的增益元件,因為它們的帶寬超出了控制反饋的目標范圍。位置傳感器模型更復雜,因為它提供高分辨率增量位置信號和低分辨率絕對位置信號。
嵌入式信號接口的模型包括類型轉換功能,因為ADC、sinc濾波器、計數器和定時器外設具有16位或32位定點輸出數據寄存器。每個嵌入式接口的增益是外設系統時鐘速率、采樣速率和接口外設寄存器設置的函數。模型參數必須與嵌入式系統配置相匹配,以確保準確的仿真結果。
軟件分區和代碼生成
電機驅動系統與電機控制算法一起執行多種功能。嵌入式軟件分為多個功能模塊,以實現平臺靈活性和易于開發。關鍵代碼功能包括系統初始化、通信接口、應用任務、電機控制接口和電機控制算法。圖 3 描述了高級驅動器程序流程,而圖 4 描述了代碼結構。
圖3.ISR的描述。
圖4.代碼分區。
主程序調用初始化例程來配置 ASSP 硬件,然后將處理器置于連續等待循環中。所有其他函數由事件驅動的中斷服務例程 (ISR) 調用。ADC 中斷具有最高優先級,當新的傳感器數據樣本準備就緒時,ADC ISR 調用電機控制函數。ADC采樣與PWM開關同步,并提供控制環路執行時序。ADC ISR 執行每個 PWM 周期,但僅在設置電機運行標志時調用電機控制例程 (PMSMctrl)。在構建代碼之前選擇電機電流反饋路徑。
PWM跳閘中斷是異步的;它僅在響應硬件故障時才調用,并且是唯一滯后故障的功能,因為硬件PWM跳閘功能會自動關閉逆變器PWM信號。通信端口 ISR 的優先級較低,處理用戶命令,并傳輸調試監視器函數捕獲的數據。內核計時器 ISR 管理后臺應用程序任務,例如電機啟動和停止排序、調試監視器接口和其他內務管理任務。
嵌入式代碼按功能而不是根據程序流進行組織。系統初始化代碼以標準方式設置處理器時鐘、電源和內核計時器,幾乎獨立于應用程序功能。通信和應用任務代碼由用戶界面和系統管理要求定義,幾乎不依賴于電機控制算法。
電機控制(MC)接口功能管理電機驅動硬件和控制算法之間的信號數據流。該代碼特定于驅動電路連接和MC外設配置,以便為控制算法提供適當的反饋信號。電機控制算法是由 Simulink 生成的獨立于平臺的代碼,包括用于反饋和輸出信號的數據結構。所有其他驅動器代碼都是手工編碼的。
實施詳細信息
為了從MBD方法中獲得最大價值,重要的是要了解電機控制系統不同部分的建模細節要求,并將關鍵物理系統參數盡可能與相應的模型參數相匹配。這涉及將建模系統劃分為不同的細節區域。作為總體規則,以PWM平均方式對整個系統進行建模就足夠了。例如,將所有信號視為高頻PWM開關周期內的平均值,不包括電壓或電流信號中的PWM紋波或開關分量。
系統模型被劃分為圖5所示的邏輯塊以及相關的信號流。如右圖所示,這些塊中的每一個都進一步細分,每個子塊都有適當的建模方法,如表 1 所示。用戶命令塊不包括在此列表中。用戶命令通過 C 代碼中的全局參數結構傳達給核心算法,一旦這些命令在 Simulink 算法中定義為全局可調參數,它們就會得到正確處理。
圖5.系統模型分區。
塊 | 建模/代碼生成 | 關鍵參數 |
機電系統 (1)* |
逆變器:平均功能模型,非常簡單 | 沒有 |
電機:標準機電DQ型號 | 定子電感,反電動勢/扭矩常數 | |
機械系統:標準剛度-慣性-摩擦模型,特定應用 | 負載慣量 | |
傳感器和接口 (2) |
功能模型 | 增益、抵消 |
處理器 (3) |
外設:功能模型 | 比例因子、量化效應 |
核心算法:從這里生成代碼 | 高效實現,定點/浮點邊界 | |
驅動電路 (4) | 功能模型 | 沒有 |
*括號中的數字是指圖 5 中的塊。 |
除了基本設置(如類型大小、字節排序等)之外,通過使自動代碼生成不特定于目標,可以實現最大的代碼可移植性和易于維護性。MathWorks 提供特定于處理器的代碼生成模塊,可直接處理處理器外設和驅動程序。雖然此功能在某些情況下可能很有吸引力,但缺點是代碼變得不那么可移植,并且設備驅動程序或外圍配置(例如,在新的處理器變體中)的任何更改都需要更改代碼。因此,在這里介紹的設計示例中,代碼生成僅限于控制算法,所有外設在 Simulink 模型中都具有功能模型,并在應用程序項目中手動編碼。圖 6 強調了這種方法,其中可以看出,從 MathWorks 控制器模型生成的代碼鏈接到主應用程序項目中的其他代碼和庫模塊。
圖6.型號代碼接口。
具有分區模型塊的 Simulink 模型如圖 7 所示。如圖所示,代碼是從模型的電機控制算法部分生成的。在硬件實現窗口→配置參數(可選擇整體設備類型)和“配置參數→代碼生成→接口窗口(選擇標準數學庫)中選擇代碼生成的重要設置。
圖7.建模和代碼生成實現。
代碼效率的另一個因素是使用的C語言方言。大多數代碼生成工具和嵌入式工作臺支持的兩種非常常見的方言是 C89/C90 和 C99。首先,重要的是在所有工具中使用相同的方言。例如,如果嵌入式工作臺配置為根據 C99 構建代碼,則自動代碼生成工具也必須根據 C99 標準構建代碼。如果不這樣做,可能會導致代碼性能顯著下降,在最壞的情況下,可能會導致代碼意外運行。
另一個重要因素是定點與浮點類型表示。兩種編碼方言都支持定點,因此在這種情況下,只要在所有工具中使用相同的方言,方言的選擇并不重要。但是,如果使用浮點類型,則 C 方言的選擇變得更加重要。
C89/C90 不區分單精度浮點和雙精度浮點。如果代碼要在支持雙精度的處理器上運行,這可能是可以接受的,但對于僅支持單精度的處理器(如 ARM Cortex-M4),這種區別會產生很大的不同。考慮到這一點,確保自動代碼生成工具以及嵌入式工作臺設置為使用 C99 方言至關重要。
Simulink 提供了 Simscape 和 SimMechanics 等工具箱,一旦知道物理參數,它們就可用于輕松對機電系統進行建模。即使物理參數沒有完全表征,也可以加載電機等組件的預定義模型,以大致匹配的規格,以實現電機控制算法的初始設計。對于算法本身,有一些有用的模塊,例如Park變換和正弦余弦CORDIC近似模塊,可以簡化電機控制算法的開發。
自動編碼接口由初始化函數調用和一個或多個時間步長函數調用定義,這些函數調用必須在適當的時間步從主應用程序代碼中調用。在本例中,有兩個時間步長函數 - 主控制算法(在 10 kHz 的 PWM 速率下調用)和速度測量函數(以 1 kHz 速率調用)。自動生成的代碼模塊集成到主項目中,如圖 8 所示。
圖8.代碼模塊組織和算法函數調用。
如前所述,代碼以模塊化方式組織,這使得應用程序特定功能(如網絡和保護)的集成非常簡單。高優先級任務(如電機控制算法)從圖 3 的 ISR 調用。應用程序級任務從基本調度程序內核作為計劃任務調用。MC 接口例程包含在電機控制和測量代碼塊中,后者包括所有電流反饋信號處理代碼。ADI監控代碼包括用于系統測試的調試監控功能,可在電機運行時捕獲應用和控制算法信號數據。數據通過串行鏈路傳輸到PC進行顯示和分析。
系統測試和調試
通過測量、計算和數據手冊確定了表 1 中的關鍵參數后,可以使用 Simulink 模型確定速度和電流環路的適當控制器增益。這可以使用標準的PID調諧方法[2]或MathWorks提供的調諧工具(如PID調諧器工具)來實現。參考文獻 3 中更詳細地描述了此過程。
電流環路在建模和實驗操作中的性能如圖9和圖10所示。在此圖中,實驗數據僅每 5 ms 采樣一次,因此存在一些混疊,但總體趨勢足夠清晰。
圖9.建模和實驗操作的(a)速度響應和(b)q軸電流參考的比較。
圖 10.電流環路性能——建模和實驗結果。
基于模型的自動生成代碼的性能可以通過檢查PWM周期內的代碼執行時間線來確定。這可以使用I/O引腳和示波器來完成,或者更簡單地說,使用IAR嵌入式工作臺C-SPY調試器中的ITM事件功能。PWM周期內的事件順序如圖11所示。
圖 11.代碼執行時間線。
PWM同步脈沖在每個新的PWM周期開始時發生,該脈沖在硬件中連接到ADC定時器,ADC定時器控制每個ADC通道的采樣。在這種情況下,電機電流在PWM同步脈沖和直接存儲器訪問(DMAed)到存儲器之后立即采樣,然后執行算法并生成PWM占空比的更新值。如圖 11 所示,執行基于模型的自動生成代碼消耗不到 PWM 周期的 10%,從而為額外的后臺任務提供了大量開銷。歷史上對自動生成代碼效率的擔憂不再是一個重要因素。
在代碼占用空間方面,算法自動編碼的相對大小如表 2 所示,可以看出自動生成的代碼占用的內存剛剛超過 10 kb,幾乎相當于總占用空間的 15%。ADSP-CM408上的可用SRAM為384 kB,顯然可以毫無困難地滿足這種存儲器要求,允許程序以盡可能快的速率從SRAM運行,并為更復雜的算法和額外的監控或用戶界面功能提供足夠的裕量。
模塊 | 代碼(字節) | 數據(字節) | 總 |
電機控制外設 (脈寬調制、編碼器) | 1584 | 94 | 2.3% |
測量外設 (模數轉換器、辛克、串行監控) | 2224 | 2691 | 6.7% |
功率因數校正控制器配置 和監測 | 3032 | 2149 | 7.1% |
用戶界面外設 (UART, LCD) | 1484 | 5055 | 9% |
系統(內核、狀態機、啟動) | 1192 | 1364 | 3.5% |
算法自動編碼 | 5656 | 5022 | 14.7% |
驅動程序、庫 | 21,596 | 19,737 | 56.7% |
總 | 36,768 | 36,112 | 72,880 (100%) |
新應用程序開發
本文討論的軟件的前提是一個由兩個主要組件組成的系統。第一個是基于模型的組件,用于實現控制算法。盡管開發模型時考慮了嵌入式目標,但從自動生成工具獲得的代碼本質上是通用的。其次,有一個手寫的軟件組件,它將通用算法代碼綁定到嵌入式目標,處理調度,并分配處理器資源。在模型重用和可伸縮性方面,這種系統分區有幾個好處。
本文討論了單電機(單軸)的控制開發。現在,假設驅動器規范要求由同一處理器控制兩個電機(雙軸)。不言而喻,這是系統的根本變化,但使用通用模型的優勢正在變得明顯。已經開發的單軸模型沒有對處理器外設做出任何假設,它是永磁電機的通用控制算法。因此,要創建能夠控制單軸/雙軸的模型,只需創建單軸模型的第二個實例即可。
當然,手寫代碼需要定制以支持單軸/雙軸,但假設處理器具有正確的外設集和控制雙軸的計算資源,則對手寫代碼的修改非常簡單。無論是控制單軸還是雙軸,手寫代碼的主要任務都是為模型的輸入賦值,將模型的輸出寫入處理器外設,并安排何時執行模型。因此,從單軸到雙軸主要是分配/配置外設和計劃執行添加軸的算法的問題。該過程是無縫的,并且由于模型是通用的這一事實而啟用。
如果只開發一個控制系統,則使用基于模型的設計的好處可能會受到限制。然而,在大多數情況下,產品開發意味著多個產品變體,在這些情況下,模型的重用變得很有吸引力——不僅因為縮短了開發時間,還因為使用可信模型提高了質量。隨著時間的推移,算法開發人員將創建一個模型庫,如果正確實現,這些模型可以跨產品重用。而且由于這些模型是通用的,它們可以在今天可用的處理器以及明天可用的處理器上運行。
除了滿足產品變體或多軸控制的潛在要求外,開發人員有時還可以提供不同的控制器模式。一個典型的示例是提供扭矩控制、速度控制和位置控制模式的應用。位置控制算法的開發可以在電流和速度控制算法的基本構建塊上分層。
在大多數應用中,位置控制環路作為圍繞內速度和電流環路的外環路應用。基本位置控制器只需要一個比例增益項。通常不需要積分項,因為位置環路中的任何穩態誤差都會導致非零速度參考。只要內部電流和速度環路調諧良好,就可以將其視為理想的單位增益模塊,并且調諧位置環路的任務變得非常簡單。
除了外部比例控制回路外,包括位置參考輪廓儀也很重要,以便負載遵循定義的加速和減速周期和速率。這對于最小化許多系統中的機械應力非常重要。在此應用示例中,將恒定加速度、恒定速度和恒定減速曲線應用于位置參考變化。如圖12所示,其中顯示了位置參考、輪廓位置參考和相應的理想速度曲線。實際速度遵循此輪廓的程度取決于速度控制器的動態響應。
圖 12.剖析位置參考。
所有這些功能(位置環路增益、位置刻畫器以及輔助功能(如原點定位和末端停止檢測)都作為附加模塊在代碼的基于模型的部分實現。唯一需要額外的手寫代碼更改是配置I/O以適應初始位置和結束停止信號。
結論
基于模型的設計可以成為加速電機驅動器制造商嵌入式開發的強大工具。如果以通用方式設置和配置,則可以顯著減輕手寫代碼開發和維護的負擔。它還可以加快上市時間,因為如果沒有硬件,代碼開發可以在沒有硬件的情況下進行,如果關鍵系統組件的合理準確模型可用。
這些功能已在 FOC 下運行的 PMSM 驅動器的上下文中得到展示,并擴展到多軸和位置控制。詳細介紹了軟件模塊和基于模型的組件的分區方法,該方法優化了基于模型的解決方案提供的價值。實驗數據還說明了該模型在優化速度控制器參數方面的優勢,以及代碼生成的緊湊性和效率。
審核編輯:郭婷
-
處理器
+關注
關注
68文章
18924瀏覽量
227199 -
驅動器
+關注
關注
51文章
7997瀏覽量
145004 -
嵌入式
+關注
關注
5045文章
18816瀏覽量
298442
發布評論請先 登錄
相關推薦
評論