劉 濤, 蔡 燕, 張海華, 李新旻
(天津工業(yè)大學(xué) 電工電能新技術(shù)天津市重點(diǎn)實(shí)驗(yàn)室, 天津市電機(jī)系統(tǒng)先進(jìn)設(shè)計(jì)與 智能控制技術(shù)工程中心, 天津 300387)
Matlab/Simulink是一款高級(jí)科學(xué)計(jì)算與工程仿真軟件,能夠?qū)崿F(xiàn)動(dòng)態(tài)系統(tǒng)建模、仿真和綜合集成分析以及線(xiàn)性/非線(xiàn)性系統(tǒng)、數(shù)字控制及數(shù)字信號(hào)處理的仿真[1-2],近十幾年在電力電子系統(tǒng)和電機(jī)驅(qū)動(dòng)等領(lǐng)域得到了廣泛的應(yīng)用[3-5]。
在高等院校,Matlab/Simulink相關(guān)課程通常安排在教學(xué)計(jì)劃的后期,與其他專(zhuān)業(yè)課程相區(qū)別。該課程綜合了電路理論、電器學(xué)、自動(dòng)控制理論、信號(hào)與系統(tǒng)、電力系統(tǒng)、電力電子、電機(jī)學(xué)、電機(jī)拖動(dòng)等多門(mén)課程的核心知識(shí),對(duì)教學(xué)方法和實(shí)驗(yàn)設(shè)計(jì)的要求很高[6-8]。目前,Matlab/Simulink的教學(xué)包括簡(jiǎn)單的編程練習(xí)和基礎(chǔ)仿真訓(xùn)練,學(xué)生掌握的知識(shí)是碎片化的,缺乏整體系統(tǒng)模型的概念。
本文在傳統(tǒng)的Matlab/Simulink課程中引入代碼生成技術(shù)和物理實(shí)驗(yàn)系統(tǒng),使虛擬仿真技術(shù)與實(shí)驗(yàn)教學(xué)緊密結(jié)合,借此提高學(xué)生對(duì)所學(xué)理論知識(shí)的實(shí)踐運(yùn)用能力[9-12]。以傳統(tǒng)經(jīng)典的PID控制系統(tǒng)和電機(jī)控制系統(tǒng)實(shí)驗(yàn)為例,對(duì)Matlab/Simulink課程的實(shí)驗(yàn)教學(xué)進(jìn)行改革,力求把理論知識(shí)與實(shí)際相結(jié)合,在Simulink建模的基礎(chǔ)上實(shí)現(xiàn)理論與實(shí)踐的一體化教學(xué),使學(xué)生加深對(duì)復(fù)雜系統(tǒng)及其與專(zhuān)業(yè)知識(shí)之間映射關(guān)系的理解,初步積累項(xiàng)目經(jīng)驗(yàn)和提高解決復(fù)雜工程的能力。
代碼生成技術(shù)是將Matlab/Simulink中建立的算法模型自動(dòng)生成代碼,然后轉(zhuǎn)換為能夠控制實(shí)際物理模型的高級(jí)語(yǔ)言程序,通過(guò)將程序進(jìn)行編譯、鏈接、下載到開(kāi)發(fā)板中,將Matlab/Simulink中虛擬形式的控制系統(tǒng)轉(zhuǎn)換為可以直接實(shí)現(xiàn)功能的硬件系統(tǒng)控制程序。
Matlab/Simulink中的代碼生成技術(shù)體現(xiàn)在軟件所包含的Matlab Coder、Simulink Coder和Embedded Coder 3個(gè)工具箱中。其中,Matlab Coder用于Matlab編程語(yǔ)言與C/C++代碼之間的轉(zhuǎn)換;Simulink Coder用于Simulink仿真模型與C/C++代碼之間的轉(zhuǎn)換;Embedded Coder專(zhuān)門(mén)針對(duì)嵌入式系統(tǒng)實(shí)現(xiàn)C/C++代碼的生成,同時(shí)提供Matlab Coder和Simulink Coder的配置選項(xiàng)和高級(jí)優(yōu)化,以便對(duì)所生成代碼的函數(shù)、文件和數(shù)據(jù)進(jìn)行精細(xì)控制。
生成的C/C++代碼并不能直接應(yīng)用于物理硬件系統(tǒng),需要根據(jù)目標(biāo)控制器選擇合適的編譯環(huán)境,同時(shí)使用專(zhuān)用的接口工具實(shí)現(xiàn)Matlab/Simulink與編譯環(huán)境的連接。例如,針對(duì)TI公司的C2000系列微控制器,需要采用Code Composer Studio 6作為編譯環(huán)境,同時(shí)下載C2000支持包作為Matlab/Simulink的插件實(shí)現(xiàn)接口工具。
基于代碼生成技術(shù)的Matlab/Simulink實(shí)驗(yàn)教學(xué)流程如圖1所示。
圖1 基于代碼生成技術(shù)的實(shí)驗(yàn)教學(xué)流程
傳統(tǒng)的Matlab/Simulink課程的實(shí)驗(yàn)教學(xué)模式包含3部分:
(1) 課程基本定義與基本方法:講授仿真所涉及的基本理論知識(shí)和方法,該部分與學(xué)生以往所學(xué)的課程相關(guān),例如講授電機(jī)驅(qū)動(dòng)系統(tǒng)仿真時(shí),講授電機(jī)學(xué)和電機(jī)拖動(dòng)相關(guān)知識(shí);
(2) 基本公式與推理過(guò)程:從基本理論和方法中提取關(guān)鍵公式和推理過(guò)程,用于仿真模型的搭建;
(3) Matlab/Simulink仿真模型實(shí)現(xiàn):講授Matlab /Simulink仿真模型的建立過(guò)程和相關(guān)參數(shù)設(shè)定方法。
傳統(tǒng)的實(shí)驗(yàn)教學(xué)按基本理論的講解、基本公式的推演、仿真模型的實(shí)現(xiàn)逐步推進(jìn),最后通過(guò)仿真實(shí)現(xiàn)對(duì)理論的闡明和驗(yàn)證,整個(gè)教學(xué)過(guò)程停留在單個(gè)反饋環(huán)中,所有的過(guò)程均利用黑板和個(gè)人電腦完成,很難讓學(xué)生將理論知識(shí)、技術(shù)手段與實(shí)際工程相結(jié)合,而且仿真結(jié)果只是在數(shù)學(xué)層面驗(yàn)證基本理論的正確性,沒(méi)有對(duì)學(xué)生進(jìn)行實(shí)際硬件操作的訓(xùn)練,且并未考慮實(shí)際物理系統(tǒng)與數(shù)學(xué)模型的聯(lián)系與區(qū)別。
附加代碼生成技術(shù)后,教學(xué)過(guò)程增加了2個(gè)環(huán)節(jié):
(1) C/C++代碼生成:將Matlab/Simulink仿真模型對(duì)應(yīng)的算法模型進(jìn)行轉(zhuǎn)換,生成相應(yīng)的C/C++代碼,在此基礎(chǔ)上,利用接口工具對(duì)代碼進(jìn)行參數(shù)配置和優(yōu)化,使其成為編譯環(huán)境可以識(shí)別的程序語(yǔ)言;
(2) 實(shí)際控制系統(tǒng):將C/C++代碼下載到硬件系統(tǒng)的微控制器中,通過(guò)完成算法的功能實(shí)現(xiàn)對(duì)物理系統(tǒng)的控制,從而驗(yàn)證算法對(duì)應(yīng)的理論知識(shí)。
可以看到:附加代碼生成技術(shù)后,通過(guò)實(shí)驗(yàn)驗(yàn)證,增加一條反饋環(huán),可以觀察到算法對(duì)系統(tǒng)的控制作用,加深學(xué)生對(duì)系統(tǒng)知識(shí)的理解,學(xué)生可以觀察到數(shù)學(xué)模型與實(shí)際物理系統(tǒng)的聯(lián)系與區(qū)別。重要的是:基于代碼生成技術(shù),不需要經(jīng)過(guò)繁瑣的程序設(shè)計(jì)與硬件學(xué)習(xí)便可完成實(shí)驗(yàn),減少了學(xué)習(xí)周期和實(shí)驗(yàn)設(shè)計(jì)的難度。
PID控制堪稱(chēng)自動(dòng)控制理論中的經(jīng)典,在Matlab/Simulink教學(xué)中,有必要將其加入相關(guān)實(shí)驗(yàn)教學(xué)過(guò)程。
圖2是基于Matlab/Simulink代碼生成技術(shù)的PID控制系統(tǒng)教學(xué)平臺(tái)。圖2中:
① 為實(shí)際物理系統(tǒng),包括鋁合金支架、電磁鐵、H橋電路、光電傳感器、arduino開(kāi)發(fā)板等組件,可以實(shí)現(xiàn)電磁鐵對(duì)鐵球的磁懸浮控制,進(jìn)而控制鐵球的懸停位置;
② 為實(shí)際物理系統(tǒng)的結(jié)構(gòu)示意圖,其中,光電傳感器測(cè)量鐵球與電磁鐵之間的距離,并通過(guò)模擬電路傳遞給arduino開(kāi)發(fā)板的模擬數(shù)字轉(zhuǎn)換端口,arduino根據(jù)鐵球位置設(shè)定值,利用PID控制器得到合適的輸出值,結(jié)合脈寬調(diào)制(pulse-width modulation,PWM)技術(shù)向H橋電路發(fā)出PWM信號(hào),從而控制電磁鐵對(duì)鐵球的吸引力;
圖2 基于Matlab/Simulink代碼生成技術(shù)的 PID控制系統(tǒng)教學(xué)平臺(tái)
③ 為Matlab/Simulink仿真模型,分為控制算法仿真部分和硬件系統(tǒng)仿真部分,其中控制算法部分主要包括PID控制器和鐵球位置設(shè)定模塊,體現(xiàn)經(jīng)典控制理論中的數(shù)學(xué)模型,硬件系統(tǒng)仿真部分包括模/數(shù)轉(zhuǎn)換以及脈寬調(diào)制,與實(shí)際物理硬件系統(tǒng)相對(duì)應(yīng)。
在實(shí)驗(yàn)教學(xué)中,學(xué)生通過(guò)實(shí)際物理系統(tǒng)和結(jié)構(gòu)示意圖推導(dǎo)系統(tǒng)的控制原理,并在此基礎(chǔ)上搭建PID控制系統(tǒng)的Matlab/Simulink仿真模型,通過(guò)代碼生成技術(shù),將仿真模型轉(zhuǎn)換為C代碼,經(jīng)過(guò)接口工具,將生成的代碼編譯、鏈接、下載到arduino開(kāi)發(fā)板中,實(shí)現(xiàn)鐵球的磁懸浮控制。學(xué)生可以通過(guò)Matlab/Simulink中的虛擬示波器觀察鐵球的位置波動(dòng)曲線(xiàn),從而對(duì)PID控制器進(jìn)行相應(yīng)的調(diào)試。由于代碼生成技術(shù)的輔助,學(xué)生在操作過(guò)程中不需要進(jìn)行繁瑣的編程,而是將主要精力放在PID控制器的特性學(xué)習(xí)和參數(shù)調(diào)試中,從而提高學(xué)習(xí)效率。
基于Matlab/Simulink代碼生成技術(shù)的電機(jī)控制系統(tǒng)教學(xué)平臺(tái)如圖3所示。
圖3 基于Matlab/Simulink代碼生成技術(shù)的 電機(jī)控制系統(tǒng)教學(xué)平臺(tái)
電機(jī)控制系統(tǒng)涉及電機(jī)拖動(dòng)、自動(dòng)控制和電力電子等多門(mén)課程的交叉,對(duì)實(shí)驗(yàn)教學(xué)設(shè)計(jì)有較高的要求。圖3中:
① 為實(shí)際的硬件物理系統(tǒng),由兩臺(tái)永磁同步電機(jī)、DRV8301驅(qū)動(dòng)板和Launchpad 28069M開(kāi)發(fā)板組成;
② 為Matlab/Simulink搭建的仿真電路;
③ 為代碼生成工具運(yùn)行時(shí)輸出的報(bào)告。
在實(shí)驗(yàn)教學(xué)中,通過(guò)對(duì)圖3①中硬件系統(tǒng)各部分的講解,使學(xué)生直觀地了解交流電機(jī)控制系統(tǒng)所需的控制器、驅(qū)動(dòng)器、變流器各自的作用和相互關(guān)系。在此基礎(chǔ)上,對(duì)仿真模型進(jìn)行講解,使學(xué)生了解控制算法的實(shí)現(xiàn)方法,以及仿真與實(shí)際物理系統(tǒng)的映射關(guān)系。利用代碼生成技術(shù),將仿真模型進(jìn)行轉(zhuǎn)換,并利用接口工具將代碼傳遞給微控制器所需的編譯環(huán)境Code Composer Studio 6中,通過(guò)編譯、鏈接、下載到微控制器中。學(xué)生通過(guò)調(diào)試,能夠更為實(shí)際地理解交流電機(jī)中坐標(biāo)變換、閉環(huán)控制、空間矢量調(diào)制技術(shù)等重要環(huán)節(jié)。
Matlab/Simulink課程的教學(xué)過(guò)程可分為課前預(yù)習(xí)、教師講解、學(xué)生自主學(xué)習(xí)、學(xué)生自主實(shí)驗(yàn)以及總結(jié)5部分。
在正式上課之前,要求學(xué)生對(duì)相關(guān)內(nèi)容進(jìn)行預(yù)習(xí),了解實(shí)驗(yàn)所涉及的理論知識(shí)、實(shí)驗(yàn)原理、實(shí)驗(yàn)步驟,并提交實(shí)驗(yàn)預(yù)習(xí)報(bào)告。教師根據(jù)學(xué)生預(yù)習(xí)的情況,有重點(diǎn)地講解相關(guān)知識(shí)內(nèi)容,以節(jié)省在課堂上對(duì)基礎(chǔ)知識(shí)進(jìn)行講解所花費(fèi)的時(shí)間。
在實(shí)驗(yàn)人數(shù)安排上,安排3~4人為一組,通過(guò)分工合作,每人完成不同部分的程序編寫(xiě)與調(diào)試、記錄參數(shù)和數(shù)據(jù)、下載程序與硬件調(diào)試,完成全部的實(shí)驗(yàn)步驟。通過(guò)組內(nèi)交流,總結(jié)并記錄實(shí)驗(yàn)中出現(xiàn)的問(wèn)題以及解決方法。每次實(shí)驗(yàn)結(jié)束后,學(xué)生通過(guò)交換位置,確保每人都能掌握整個(gè)實(shí)驗(yàn)過(guò)程,并各自撰寫(xiě)實(shí)驗(yàn)總結(jié)報(bào)告。教師對(duì)學(xué)生在實(shí)驗(yàn)中遇到的問(wèn)題進(jìn)行解答,鞏固和加深學(xué)生對(duì)知識(shí)的理解。
實(shí)驗(yàn)結(jié)束后,從有無(wú)預(yù)習(xí)報(bào)告、仿真模型搭建、代碼生成、實(shí)際物理系統(tǒng)調(diào)試、實(shí)驗(yàn)數(shù)據(jù)以及實(shí)驗(yàn)報(bào)告等方面對(duì)學(xué)生的學(xué)習(xí)情況進(jìn)行綜合評(píng)分,評(píng)分中應(yīng)兼顧學(xué)生的團(tuán)隊(duì)合作能力和表達(dá)溝通能力。
基于代碼生成技術(shù)對(duì)Matlab/Simulink實(shí)驗(yàn)課程進(jìn)行重新設(shè)計(jì),加入了實(shí)際物理系統(tǒng),使得學(xué)生在基礎(chǔ)理論學(xué)習(xí)的基礎(chǔ)上,通過(guò)代碼生成工具對(duì)仿真模型進(jìn)行轉(zhuǎn)換,并將所生成的代碼進(jìn)行編譯、鏈接、下載到硬件系統(tǒng)的微控制器中,完成實(shí)際物理系統(tǒng)的控制與調(diào)試。該實(shí)驗(yàn)課程的改革實(shí)現(xiàn)了仿真模型與實(shí)際物理系統(tǒng)對(duì)學(xué)生理論學(xué)習(xí)過(guò)程的雙重反饋,加深了學(xué)生對(duì)所學(xué)內(nèi)容的理解,鍛煉了學(xué)生將理論知識(shí)應(yīng)用到實(shí)際工程的能力,增強(qiáng)學(xué)生的學(xué)習(xí)興趣,提高了學(xué)生的團(tuán)隊(duì)協(xié)作能力和解決復(fù)雜工程項(xiàng)目的能力。在設(shè)計(jì)的電氣傳動(dòng)控制系統(tǒng)案例中,應(yīng)用代碼生成技術(shù),簡(jiǎn)化了系統(tǒng)的編程設(shè)計(jì)過(guò)程,取得了良好的教學(xué)效果。