徐建明,支文龍,周家豪
(浙江工業大學 信息工程學院,杭州 310023)
運動控制系統課程是高校自動化專業一門很重要的專業課程,該課程是一門綜合了多學科的綜合性課程,具有很強的實踐性和應用性[1]。因此實驗操作對于該課程非常重要,通過在課程中結合實驗對于學生學習直流與交流電機的調速系統理論知識有很大的幫助,與此同時在實驗設計電機驅動控制系統過程中學生實踐能力也能夠得到提高。
在傳統的運動控制系統實驗教學中,一般常見的實驗方式有:一種是在實驗室中,對電機的基本參數進行測量,通過工程設計的方法設計出電流調節器和轉速調節器,然后在實驗臺上進行接線,調參等操作來實現對電機的控制。另一種是在Matlab/Simulink中搭建控制模型,通過仿真的模式來對控制系統進行研究[2]。兩種方式都有一定的局限性,前者側重實際應用,因此在實驗前需要經過繁瑣的設計與計算;后者側重仿真,結果會偏于理想化。
針對運動控制系統課程實驗平臺的不足,國內外對于運動控制系統課程實驗平臺設計的研究也有不少。文獻[3]介紹了一種基于 TMS320F2812 DSK 的低成本電機控制測試臺。文獻[4]介紹了一種用于設計和實現嵌入式控制軟件的實驗平臺。文獻[5]將Matlab/Simulink和SimPowerSystems工具箱引入到了運動控制系統課程的實驗教學中。文獻[6]介紹了將Matlab/Simulink仿真與實際硬件設備控制相結合的實驗平臺。文獻[7]從運動控制系統課程特點和實踐環節各類實驗的特點分析入手來建設實驗平臺。文獻[8]介紹了一種新型的快速控制原型系統,該系統將控制類課程仿真與動手實踐相結合,學生通過該系統可以專注于控制系統設計、仿真和實驗控制驗證,而不是單純編程。文獻[9]介紹了一種永磁同步電機控制系統的實驗平臺,該平臺實現了仿真和硬件平臺控制的結合。
基于模型設計(MBD,model based design)是一種系統工程方法,其基本思想是通過對系統進行建模、仿真和驗證,實現對系統的整個周期設計、開發和測試的自動化管理[10]。MBD在工程實踐中應用廣泛,包括航空、汽車、醫療器械等領域[11-12]。MBD的重點是建模語言和工具的研究,在建模工具方面,Simulink是應用最廣泛的基于模型設計的工具之一,dSPACE、NI LabVIEW、Rhapsody等軟件也是MBD工程實踐中使用最多的工具[13-14]。此外,研究者還致力于探索新的建模語言和工具,以提高MBD的建模效率和可靠性[15]。
除了上述的應用領域之外,MBD還可以用于嵌入式系統的開發[16-17]。嵌入式系統的開發和測試比一般的軟件開發更加復雜和困難,MBD可以提高嵌入式系統的開發效率和質量,縮短開發周期,降低開發成本[18-19]。相對于傳統的嵌入式設計開發模式,基于模型設計的開發模式以模型作為中心,從模型搭建到代碼自動生成一體化實現了高度自動化的開發流程[20]。這種開發模式的優點在于用戶只需在模型上根據需求設置寄存器的工作方式就可以自動生成用于工程應用的C代碼。這不僅加快了開發過程,還免去了手寫代碼可能帶來的程序漏洞。同時,這種模式提供了接口來連接算法模型,讓嵌入式工程師更專注于算法設計,真正實現了高效開發[21]。
本文使用Matlab軟件中的可視化仿真工具Simulink,用基于模型設計的方法來設計一個運動控制系統的實驗平臺,實驗平臺主要由PC端、驅動器和控制對象三部分構成。用戶通過Matlab/Simulink對控制對象搭建仿真模型,并在Matlab/Simulink環境中對仿真模型進行仿真且對仿真結果進行分析,當得到理想的效果時再對其進行軟件在環仿真與處理器在環仿真驗證。最后在PC端環境中將模型控制算法自動生成C代碼工程形式,使用Keil5編譯環境對C代碼工程編譯后載入以STM32為主控的驅動器中進行實物驗證。用戶通過操作實驗平臺可實現從建模仿真到實物驗證實驗一體化。
實驗平臺主要由PC端、驅動器和控制對象三部分構成,如圖1所示。用戶在PC端使用Matlab/Simulink軟件平臺可進行對被控對象的建模仿真操作。當仿真結果達到理想效果時,在PC端使用Matlab/Simulink軟件和STM32CubeMX軟件將模型生成C代碼工程,最后使用Keil5編譯環境對生成的C代碼工程編譯并載入到驅動器中執行實物測試的功能。

圖1 實驗平臺
實驗平臺的PC端主要為用戶提供構建控制對象模型、STM32微處理器配置以及代碼自動生成的環境。在設計實驗平臺時需要對PC端的環境進行配置,主要是安裝Matlab、STM32CubeMX和Keil5這3個軟件。其中Matlab/Simulink是實驗平臺PC端運行環境的核心,實驗平臺的模型搭建與代碼自動生成都在Matlab/Simulink中運行。
實驗平臺中驅動器使用的微處理器是ST公司的STM32G474VET6,由于Simulink的模型庫管理器中沒有STM32相關的模型功能塊,因此需要在Matlab/Simulink中安裝ST公司開發的STM32-MAT/TARGET embedded target工具箱。STM32-MAT/TARGET是Simulink中包含STM32功能模塊的硬件庫,在安裝該硬件庫后Simulink的模型庫管理器中會添加STM32對應功能模塊的模型,如ADC library、GPIO library、MCU CONFIG library、TIMERS library等等。其中MCU CONFIG模塊是STM32微處理器模塊,該模塊是Matlab/Simulink與STM32CubeMX之間的“橋梁”,在Simulink中設置更新STM32CubeMX的路徑后通過MCU CONFIG模塊可以啟動STM32CubeMX軟件。
圖2為系統平臺驅動器的硬件設計總體框圖,總體分為兩個部分:以STM32微處理器為主控的控制電路部分和驅動電路部分。其中,控制電路的微處理器為 STM32,其主要對整個驅動控制系統進行任務分配和控制。控制模塊主要負責處理傳感器模塊采集回來的數據并對其進行計算處理,如編碼器電路采集的電機轉子位置信息和轉速信息以及電流采集電路采集的電流信息。驅動模塊主要通過接收控制模塊傳輸的信號來改變驅動電路的狀態實現對電機的控制,并將電機的運行數據反饋給控制模塊。電源模塊主要將輸入電源電壓通過升壓或降壓轉換為電路中各個模塊所需的電壓,對電路中各個模塊進行供電。

圖2 系統平臺驅動器硬件框架圖
實驗平臺利用Matlab軟件平臺的Simulink結合ST公司開發的針對STM32微處理器的Simulink庫STM32-MAT target工具箱實現從建立運動控制系統的仿真模型到自動生成可讀寫和可移植的C代碼工程文件,并在STM32微處理器上實際運行。整個設計的流程大致分為5個步驟:
1)建立仿真模型進行模型在環仿真(MIL,model in the loop),建模仿真是一種模擬、分析和預測實際系統運行的一種方法,其與實驗有一定的區別。對于一些復雜的控制系統,相對成本較高,通過建立仿真模型可以預測系統可能出現的問題和風險,提前采取措施以減少事故和損失。因此建模仿真可以提高系統的效率、減少風險和成本,優化方案選擇,從而為系統的研究和決策提供有力支持。
2)軟件在環仿真(SIL,software in the loop),軟件在環仿真是一種系統級仿真技術,它通過在計算機上運行虛擬系統來評估和驗證嵌入式軟件的性能和功能。
3)處理器在環仿真(PIL,processorin theloop),處理器在環仿真是一種廣泛應用于嵌入式系統開發中的仿真技術。在PIL仿真中,嵌入式處理器和相關外設被實際連接到仿真環境中,并與運行在主機計算機上的軟件模擬器進行交互。
4)模型設置生成代碼的優化,Matlab/Simulink平臺在基于模型設計中提供了兩方面的優化方式:一種是通過改變模塊之間信號線的存儲類型從而改變代碼生成時的變量類型方式;另一種是在搭建控制算法模型時利用結構化的思想將整個模型分解成一個個子系統,并將代碼生成在自定義的文件的自定義函數中,以便于移植和調用[22]。以SVPWM算法為例,SVPWM算法模型設置生成代碼的優化配置與其生成的代碼如圖3(a)所示,優化后的生成代碼以函數形式單獨生成在自定義的文件中,函數名為自定義的名稱(如圖3(b)所示)。

圖3 模型生成代碼的優化配置
5)配置微處理器模型的參數結合控制算法的模型利用MATLAB/Simulink自動生成代碼,將其應用到實驗平臺進行測試。
以永磁同步電機的轉速、電流雙閉環控制系統為例,使用基于模型設計的方法,按照模型在環仿真、軟件在環仿真、處理器在環仿真最后到實驗平臺進行實物測試的順序來詳細介紹實驗平臺如何實現從仿真到實物測試并通過實驗結果來驗證實驗平臺的可行性。
在工程設計中,轉速、電流雙閉環控制系統的設計原則是先設計內環再設計外環,一般先設計電流環,將其作為內環,確定電流調節器的設計方案后,把電流環等效成外環的一個環節,再設計外環即轉速環[23]。
對于電流環來說,它是控制系統的內環,主要負責控制電機的電流,因此電流環的好壞直接決定系統的穩定與否。在電流瞬變的過程中,反電動勢可以暫時被認為是基本不變的,這是因為電流變化的時間尺度遠遠快于電機轉速的變化時間尺度。因此,在瞬態過程中,可以忽略反電動勢的作用,將電機視為一個純電阻負載進行分析,簡化控制系統的建模和控制器的設計。如圖4(a)所示為忽略反電動勢影響的電流環動態結構圖。

圖4 電流環結構圖
在電機控制過程中,通常需要進行數字信號處理和模擬信號轉換。如圖4(b)所示,圖中A表示數字量電壓轉換為模擬量電壓的比值系數,通過換算可將數字量電壓轉換成對應的模擬電壓輸出給電機。B表示模擬量電流轉換為數字量電流的比值系數,通過換算可將電機采樣的模擬電流信號轉換成對應的數字量用于控制器內部的計算。根據對應關系通過公式(1)可得出A和B的值。
(1)
在公式(1)中,Vbus為母線電壓,kop為對應電流傳感器上的電流與電壓的比值。在設計電流環時,將其按照典型一型系統來設計,所以采用PI調節器作為電流環的調節器。
在設計速度環時,將電流環作為其整個環節中的一個一階慣性環節來代替,速度環的動態結構圖如圖5所示。

圖5 速度環動態結構圖
為了消除轉速靜差并提高控制系統響應速度和穩定性,需要在負載擾動作用點前添加一個積分環節,并將其納入轉速調節器中。這將使系統能夠快速消除靜差,以提高系統響應速度和穩定性。由于轉速環開環傳遞函數中已經包含一個積分環節在擾動作用點后面,因此需要設計成典型Ⅱ型系統[23],因此轉速調節器(ASR)也采用PI調節器。
電流調節器和速度調節器具體設計方法參考文獻[23]中第四章的電流調節器與轉速調節器的設計部分。在設計調節器時需要注意的是:因為電流環作為內環,其輸出值直接影響電機的電流,因此速度環的輸出值通常作為電流環的參考值。在速度環輸出的參考值經過電流環控制后,得到電機的實際電流值,為了保證電機的安全運行,需要對速度調節器的輸出值進行限幅。在系統啟動時,由于電機的轉速為零,內環控制器的輸出為最大值,如果沒有飽和限幅的約束,將會導致輸出電壓超過電機額定電壓,從而產生過大的電流,這可能會損壞電機或其他部件。因此,引入飽和限幅可以避免這種情況的發生,通過限制輸出電壓和電流來控制電機的加速度,減少啟動過程中的超調量和啟動電流的波動。雖然飽和限幅可能會降低系統的響應速度和啟動效率,但是它可以有效地保護電機和系統組件,提高系統的可靠性和穩定性。
對控制對象建立模型是實驗流程的第一步,也是很重要的一個步驟。在建立模型時通過對被控對象參數進行分析,利用Simulink中的物理建模工具箱(Simscape、Simmechanics、Simdriveline等)構建控制對象模型,根據控制對象選擇合適的逆變器建立滿足需求的系統控制模型[24-25]。由于本次實驗案例中的控制對象是永磁同步電機,因此在構建控制算法模型中使用了電壓空間矢量脈寬調制算法(SVPWM,space vector pulse width modulation)。如圖6所示為永磁同步電機的矢量控制框圖,其中控制對象模型只在仿真的階段中使用,在代碼生成時只對控制算法模型進行生成C代碼的操作。

圖6 矢量控制框圖
根據矢量控制框圖,在Matlab/Simulink中建立仿真模型如圖7所示,搭建Clark坐標變換模塊、Park坐標變換模塊及其逆變換模塊、ACR調節器與ASR調節器模塊以及SVPWM控制算法模塊等構成控制算法模型(如圖7(a)所示)。在控制算法模型中SpeedRef作為設定值為轉速調節器提供轉速目標參考值;速度給定值與電機提供的三相電流值、轉子速度和位置為控制算法模型的輸入;輸出作為STM32的 CCR寄存器的設定值,通過改變CCR寄存器的值可以改變PWM輸出的脈寬從而控制電機的轉速。將控制算法模型封裝成新的模塊,命名為Speed and current double closed-loop control(如圖7(b)所示),在后續的SIL仿真和PIL仿真中通過直接調用該模塊進行實驗測試。

圖7 MIL仿真
軟件在環仿真具體的實現是通過建立軟件在環仿真模型,在SIL仿真中,硬件系統被替換為虛擬的模擬器或仿真器,而系統的軟件部分運行在這個仿真環境中。這種仿真技術可以在早期階段驗證系統的軟件部分的正確性和性能,從而降低系統集成的風險和成本。如圖8(a)所示,將圖7中的控制算法部分模型添加到待測模型Model中,在Simulink環境下將待測模型設置為SIL模式。在仿真運行時,SIL模型會調用外部實驗平臺中的編譯器環境,將模型生成C代碼形式(如圖8(b)所示)在編譯器中運行并將結果輸送到Simulink仿真環境中。在設計軟件在環仿真時,將SIL模型與原模型并聯在一起仿真,在輸入相同的給定信號時,比較兩個模型的輸出結果來判斷模型生成代碼的功能與其是否等效。

圖8 SIL仿真
通過圖9可以看出SIL仿真輸出轉速曲線基本貼合給定轉速曲線,且輸出轉速與MIL模式的輸出轉速差值基本穩定在5 rpm左右,最大不超過16 rpm。SIL仿真測試結果表明通過SIL仿真可以驗證生成的控制算法代碼在Simulink環境中與模型功能基本一致且能夠穩定的運行。

圖9 SIL仿真輸出轉速
在PIL仿真中,嵌入式處理器和相關外設被實際連接到仿真環境中,并與運行在主機計算機上的軟件模擬器進行交互。這種仿真技術利用Simulink使模型與硬件平臺協同工作,控制算法的模型在Simulink中以Normal仿真模式和PIL仿真模式兩種不同的模式運行,Normal仿真模式以模型在環仿真形式在Simulink平臺中運行,PIL仿真模式需要將PIL模型先生成嵌入式C代碼的形式,然后將其編譯為目標文件載入到硬件平臺中去,硬件平臺與PC端通過串口通信方式建立連接,建立Simulink與硬件平臺中上微處理器之間的通信通路。在仿真運行過程中Simulink的信號源模塊將當前信號通過串口傳遞給硬件平臺的微處理器,經過微處理器計算之后再將信號通過串口回傳到Simulink模型中,然后Simulink的信號源模塊再傳入下一個采樣點信號,重復上述操作。將PIL仿真結果與MIL模式仿真的結果進行比較,通過測試在給定相同的輸入參數兩種仿真模式下的輸出值并做對比看其差值是否在合理范圍內來驗證系統的性能和功能[25]。
在對圖8(a)中模型進行SIL仿真驗證后,將其控制算法模塊部分改成PIL模式,并在Simulink平臺中通過Code generation 下的STM32 options中更新STM32CubeMX的路徑。在仿真運行之前,Simulink平臺會根據路徑啟動STM32CubeMX并配置硬件平臺微處理器串口通訊的對應參數。利用STM32CubeMX將其生成C工程文件并利用Keil5編譯環境對工程文件編譯并載入到微處理器中驗證其能否在微處理器中正常運行,最后確定硬件平臺與PC端串口通訊正常之后在Simulink平臺中運行模型仿真,并通過在Simulink中通過調用Scope模塊獲取PIL仿真的結果與MIL仿真的結果。
從圖10可以直觀的看出在相同的給定轉速下,PIL仿真輸出的轉速與MIL模式仿真輸出的轉速軌跡基本吻合,且兩者的誤差穩定在8 rpm以內。PIL仿真測試結果表明通過PIL仿真可以驗證生成的控制算法代碼在Simulink環境中與模型功能基本一致且能夠穩定的運行,進一步驗證了控制算法模型及其生成的C代碼工程的可行性。

圖10 PIL仿真
模型經過PIL仿真測試驗證后,利用實驗平臺的真實環境對控制算法的可行性進行驗證,將實驗平臺中的驅動器和永磁同步電機替代仿真模型中模擬的控制對象部分。為了達到和仿真類似的效果,仿真中的電流反饋環節與轉速反饋環節將由硬件平臺中的傳感器以及采樣電路代替。在生成C代碼工程前,需要配置STM32微處理器的相關參數以及搭建STM32微處理器外設程序的相關模型。
通過Matlab/Simulink界面在Model Configuration Parameters中將Code Gengration的系統目標文件(System target file)更改為stm32.tlc。然后設置更新STM32 Options中的兩個路徑STM32CubeMX installation path和Installed Full Path。STM32CubeMX的路徑更新后,在Simulink中添加MCU config功能塊,通過MCU config功能塊中的Start STM32CubeMX configuration tool選項便可啟動STM32CubeMX軟件對微處理器參數進行設置修改。確認微處理器參數后,在Simulink界面點擊Build Model進行C代碼生成操作,Matlab/Simulink會結合STM32CubeMX軟件自動生成STM32工程文件。將生成的STM32工程文件放在Keil5環境中編譯并載入驅動器的微處理器中,最后通過實驗平臺進行實物測試。
本次實驗使用矢量控制(如圖6所示)的方法來搭建永磁同步電機轉速、電流雙閉環控制系統模型。控制系統模型中的微處理器芯片選擇的是意法半導體的STM32G-474VET6,代碼自動生成的模型整體結構如圖11(a)所示,在設計搭建模型時從生成程序代碼運行邏輯的角度考慮,將本次實驗的執行程序放在ADC的EOC(End Of Conversion)事件和Timers的Break事件兩個中斷中去執行。其中定時器的break中斷放在TIM1的BRK中斷中,為了防止實驗平臺在進行實物測試實驗時電路中出現過流損壞電路的事件發生;將控制算法部分模型放在ADC的EOC中斷中,以確保在執行控制算法程序時ADC已采集到反饋的電流并更新結束。

圖11 STM32控制模型圖
在對定時器的參數進行配置時,除了配置輸出PWM控制電機的參數外,還需要額外配置一個通道(該通道不需要設置輸出)作為ADC的外部觸發源用來觸發ADC的采樣。此外將TIM3設置為編碼器模式(Encoder Mode + index),其中TIM3的通道1和通道2作為增量式編碼器A相與B相的采集接口;ADC1的通道1和通道5分別作為電機B相電流和C相電流采集接口;TIM1的通道1、通道2和通道3與其互補通道作為PWM輸出接口(如圖11(b)所示)。
在Matlab/Simulink中模型自動生成代碼的過程時,模型生成的代碼通常會使用結構體來表示模型中的各個模塊及其信號連接關系。這些結構體在程序運行時會被實例化為具體的變量,并通過變量名來調用結構體成員。在對模型進行代碼優化時,將部分復雜的仿真模型設置為可重復使用的功能(Reusable function)。
相對于非可重復使用的功能(Noreusable function),對于一些復雜的仿真模型來說Reusable function模式的性能會更好。在代碼可讀性方面,Nonreusable function模式的程序可能會包含多個單獨的函數,相比之下,Reusable function模式的程序會更易于理解。對于電機控制來說,處理器的運行時間是非常關鍵的,因此需要盡可能地優化代碼,在對參數類型進行設置時,根據模型之間的信號關系可考慮將參數類型設為定點數的形式以減少計算時間和提高控制性能。
在模型中根據需求對代碼的優化操作設置后進行仿真的最后一步操作:生成代碼。使用Keil5編譯環境對生成的C代碼工程文件進行編譯并載入STM32微處理器。在電機運行時通過串口將電機實時速度傳送到PC端,如圖12(b)所示,對比圖7(c)仿真中速度曲線可以看出,在平臺實物測試中電機的實時輸出轉速曲線與仿真基本一致,驗證了實驗平臺的可行性。

圖12 實驗平臺實物測試
本文針對傳統運動控制系統課程實驗平臺的不足,設計了一個基于Matlab的運動控制系統的實驗平臺。首先給出了實驗平臺的總體設計方案并介紹了實驗平臺的功能及其硬件結構;然后介紹了實驗平臺應用基于模型的設計方法實現代碼自動生成,并對基于模型設計的開發流程進行了詳細的闡述;最后通過案例永磁同步電機轉速、電流雙閉環控制系統在實驗平臺經過模型在環仿真、軟件在環仿真、處理器在環仿真最后到實驗平臺進行實物測試的流程來驗證實驗平臺的優點及其可行性和有效性。