劉淵,黃若,張?zhí)旌?,田彥?/p>
(南京航空航天大學(xué) 江蘇省航空動(dòng)力系統(tǒng)重點(diǎn)實(shí)驗(yàn)室,南京210016)
近年來(lái),圖形化的編程方式已成為嵌入式系統(tǒng)開(kāi)發(fā)領(lǐng)域的焦點(diǎn)之一。圖形化編程平臺(tái)對(duì)底層語(yǔ)言進(jìn)行了高度集成,大大降低了嵌入式編程的復(fù)雜度,使軟件開(kāi)發(fā)更為簡(jiǎn)單高效[1]。但是,一些圖形化嵌入式軟件開(kāi)發(fā)環(huán)境(如SCADE、Ardublock等),存在軟件授權(quán)使用費(fèi)用過(guò)高或開(kāi)發(fā)對(duì)象單一等問(wèn)題,不能滿足普遍的嵌入式軟件開(kāi)發(fā)需求。
Lab VIEW是美國(guó)NI(National Instruments)公司開(kāi)發(fā)的一種軟件開(kāi)發(fā)平臺(tái),圖形化的軟件開(kāi)發(fā)方式是其最大特點(diǎn)。在嵌入式系統(tǒng)開(kāi)發(fā)方面,NI公司與ARM公司聯(lián)合開(kāi)發(fā)了一種針對(duì)ARM微控制器的圖形化嵌入式開(kāi)發(fā)組件[2],其在Lab VIEW的圖形化開(kāi)發(fā)環(huán)境與ARM微處理器之間搭建了一座橋梁,通過(guò)它來(lái)對(duì)ARM對(duì)象進(jìn)行軟件開(kāi)發(fā),可以縮短開(kāi)發(fā)時(shí)間、提高編程效率。但是該組件同樣存在開(kāi)發(fā)對(duì)象較為單一的問(wèn)題,目前其僅支持ARM Cortex-M3 的 LM3S8962[3]、ARM7 的 MCB2300 以 及ARM9的MCB2400三款芯片,硬件平臺(tái)選擇有限,而國(guó)內(nèi)外鮮有針對(duì)此問(wèn)題的研究報(bào)道。
本文基于Lab VIEW的嵌入式軟件開(kāi)發(fā)環(huán)境,研究其開(kāi)發(fā)機(jī)理與流程,探究代碼復(fù)用技術(shù),并針對(duì)Cortex-M4內(nèi)核的ARM處理器對(duì)Lab VIEW嵌入式組件進(jìn)行拓展,解決了Lab VIEW嵌入式軟件開(kāi)發(fā)模塊在開(kāi)發(fā)對(duì)象上的限制問(wèn)題。在此基礎(chǔ)上,利用Lab VIEW開(kāi)發(fā)基于Cortex-M4內(nèi)核的TM4C123芯片的微型渦噴發(fā)動(dòng)機(jī)電子控制器,并通過(guò)臺(tái)架試驗(yàn)對(duì)其進(jìn)行驗(yàn)證。
Lab VIEW嵌入式軟件開(kāi)發(fā)的本質(zhì)是代碼復(fù)用,而在Lab VIEW環(huán)境下實(shí)現(xiàn)對(duì)ARM的嵌入式開(kāi)發(fā),主要依托于Keil MDK工具鏈。Lab VIEW嵌入式軟件開(kāi)發(fā)機(jī)理如圖1所示,基于Lab VIEW編寫(xiě)的圖形化嵌入式軟件程序通過(guò)Lab VIEW C Generator生成對(duì)應(yīng)的C代碼,并按照一定規(guī)則添加到RTX操作系統(tǒng)的框架中,此時(shí)Lab VIEW通過(guò)調(diào)用Keil MDK的RVCT編譯工具將程序代碼編譯并下載到ARM芯片中。當(dāng)這一流程完成之后,便可在Lab VIEW環(huán)境中對(duì)ARM芯片中的程序進(jìn)行調(diào)試。
圖1 LabVIEW嵌入式軟件開(kāi)發(fā)機(jī)理圖
Lab VIEW代碼自動(dòng)生成流程圖如圖2所示。首先通過(guò)Lab VIEW編寫(xiě)嵌入式程序,程序中主要包含兩個(gè)部分:一個(gè)是外設(shè)驅(qū)動(dòng)部分;另一個(gè)是常規(guī)的Lab VIEW程序部分,一般用于完成算法、參數(shù)配置等功能。這兩部分組成的嵌入式程序通過(guò)C Generator模塊,按照一定的規(guī)則,生成對(duì)應(yīng)的C代碼,與嵌入式程序中的模塊對(duì)應(yīng)。所生成的C代碼會(huì)被載入到已經(jīng)準(zhǔn)備好的RTX嵌入式操作系統(tǒng)的模板中,形成RTX操作系統(tǒng)工程,其中工程項(xiàng)目的設(shè)置環(huán)境在操作系統(tǒng)移植時(shí)確定。完成上述工作后,獲得可使用的目標(biāo)嵌入式程序工程。
圖2 LabVIEW代碼自動(dòng)生成流程圖
本文針對(duì)Cortex-M4內(nèi)核的TM4C123芯片,建立基于Lab VIEW的圖形化嵌入式軟件開(kāi)發(fā)平臺(tái)。為了圖形化嵌入式開(kāi)發(fā)平臺(tái)的搭建,結(jié)合Lab VIEW嵌入式開(kāi)發(fā)機(jī)理的研究,從開(kāi)發(fā)環(huán)境、操作系統(tǒng)、復(fù)用模版以及驅(qū)動(dòng)代碼這幾個(gè)方面搭建Lab VIEW環(huán)境下的嵌入式開(kāi)發(fā)平臺(tái)。
Lab VIEW的嵌入式軟件開(kāi)發(fā)模塊采用ARM公司的Keil MDK嵌入式軟件工具鏈。要實(shí)現(xiàn)Lab VIEW的嵌入式軟件開(kāi)發(fā),首先需要解決的就是開(kāi)發(fā)工具鏈問(wèn)題。由于現(xiàn)有的Lab VIEW嵌入式軟件開(kāi)發(fā)模塊只能調(diào)用舊版本Keil MDK(V4.01),不具備開(kāi)發(fā)Cortex-M4的能力,需要對(duì)開(kāi)發(fā)環(huán)境進(jìn)行整合。首先需要將新版本Keil MDK中針對(duì)Cortex-M4的DLL文件進(jìn)行整合,其中包括lmidkagdi.dll、SARMCM3.dll、DCM.dll 等,然 后 添 加TM4C123芯片對(duì)應(yīng)的芯片信息與相關(guān)文件。整合后的開(kāi)發(fā)環(huán)境可以被Lab VIEW嵌入式軟件開(kāi)發(fā)模塊正確調(diào)用,用于TM4C123芯片的相關(guān)開(kāi)發(fā)。
Lab VIEW是利用RTX操作系統(tǒng)實(shí)現(xiàn)嵌入式軟件開(kāi)發(fā)的。由于舊版本的Keil MDK中的RTX并不支持ARM Cortex-M4系列處理器,需要將新版本中的RTX操作系統(tǒng)相關(guān)文件整合到舊版本中。完成相關(guān)移植工作后,針對(duì)TM4C123的Lab VIEW嵌入式軟件開(kāi)發(fā)可以在此RTX操作系統(tǒng)上展開(kāi)。
Lab VIEW嵌入式軟件開(kāi)發(fā)復(fù)用模板是Lab VIEW嵌入式開(kāi)發(fā)的基礎(chǔ),它給嵌入式程序提供了框架,所有的程序代碼都會(huì)根據(jù)一定的規(guī)范嵌套于模板中。在創(chuàng)建復(fù)用模板時(shí),需要完成兩部分內(nèi)容:首先要?jiǎng)?chuàng)建模板的原型,其中包括RTX操作系統(tǒng)文件和Lab VIEW生成代碼所涉及的相關(guān)文件,其次需要對(duì)模板進(jìn)行適用TM4C123的相關(guān)修改。針對(duì)實(shí)際情況,可以以Lab VIEW自帶的LM3S8962芯片代碼復(fù)用模板為基礎(chǔ),對(duì)TargetConfig.ini等文件進(jìn)行相應(yīng)的修改,以創(chuàng)建適用于TM4C123的代碼復(fù)用模板。
代碼復(fù)用模板創(chuàng)建完畢之后,還需要對(duì)芯片各個(gè)接口的驅(qū)動(dòng)代碼進(jìn)行編寫(xiě)。驅(qū)動(dòng)代碼可以通過(guò)Lab VIEW自帶的Elemental I/O Device Wizard進(jìn)行編寫(xiě),這種方式在實(shí)際編程中,接口資源調(diào)用較為方便,但是存在很多弊端,如所能編寫(xiě)的接口種類(lèi)較少、編寫(xiě)驅(qū)動(dòng)過(guò)程復(fù)雜。本文提出一種腳本式的驅(qū)動(dòng)代碼編寫(xiě)辦法,以嵌入式C腳本為核心,免去了Lab VIEW中繁瑣的設(shè)置過(guò)程,并且可以實(shí)現(xiàn)各種接口驅(qū)動(dòng)代碼需求。以PWM驅(qū)動(dòng)為例,驅(qū)動(dòng)程序示意圖略——編者注。在嵌入式C腳本中主要為PWM驅(qū)動(dòng)代碼,其中 GPIO_PIN、PWM_OUT_BIT、PWM_GEN、GPIO_PWM、PWM_OUT與PWM_BASE作為輸入變量,供外部的條件循環(huán)根據(jù)端口進(jìn)行不同的賦值。通過(guò)這樣函數(shù)接口設(shè)置,驅(qū)動(dòng)程序中的參數(shù)可以根據(jù)所選的端口自行配置,不需要每次都進(jìn)行修改,顯著提高了開(kāi)發(fā)效率。
為了驗(yàn)證上述平臺(tái)的可行性,利用Lab VIEW開(kāi)發(fā)了基于TM4C123芯片的微型渦噴發(fā)動(dòng)機(jī)控制器軟件,其功能需求主要包括信號(hào)采集、串口通信、轉(zhuǎn)速控制等[3]。
以電子控制器信號(hào)采集與輸出程序?yàn)槔f(shuō)明程序的開(kāi)發(fā)方法。微型渦噴發(fā)動(dòng)機(jī)信號(hào)采集與輸出程序的Lab-VIEW程序框圖如圖3所示。程序主要功能:將實(shí)際溫度、油門(mén)桿位置等參數(shù)通過(guò)串口發(fā)送至監(jiān)控計(jì)算機(jī),采集當(dāng)前發(fā)動(dòng)機(jī)轉(zhuǎn)速,并根據(jù)控制需求改變輸出PWM的占空比來(lái)控制氣閥、油閥、油泵等執(zhí)行機(jī)構(gòu)。其中串口驅(qū)動(dòng)、ECAP驅(qū)動(dòng)、PWM驅(qū)動(dòng)功能均基于腳本式驅(qū)動(dòng)開(kāi)發(fā)方法,在封裝后可以在程序中直接進(jìn)行調(diào)用。
圖3 信號(hào)采集與輸出程序框圖
控制器軟件編寫(xiě)完畢后,點(diǎn)擊LabVIEW中的運(yùn)行按鈕,LabVIEW將自動(dòng)生成相關(guān)程序代碼并編譯,最后將目標(biāo)代碼下載到嵌入式芯片中。LabVIEW為嵌入式調(diào)試提供了一個(gè)交互性極強(qiáng)的人機(jī)界面,可以將想要調(diào)試的功能設(shè)置成相應(yīng)的輸入控件,在設(shè)計(jì)初期,即使沒(méi)有上位機(jī)程序,也可以通過(guò)LabVIEW實(shí)現(xiàn)在線調(diào)試,極大地提高了開(kāi)發(fā)效率。
在微型渦噴發(fā)動(dòng)機(jī)電子控制器軟件設(shè)計(jì)完成后,需通過(guò)相關(guān)試驗(yàn)對(duì)其功能進(jìn)行驗(yàn)證。本文通過(guò)臺(tái)架試車(chē)試驗(yàn)檢驗(yàn)所開(kāi)發(fā)的電子控制器的實(shí)際控制效果。臺(tái)架試驗(yàn)中,主要進(jìn)行了開(kāi)環(huán)控制與閉環(huán)控制試驗(yàn)。臺(tái)架試驗(yàn)轉(zhuǎn)速開(kāi)環(huán)控制過(guò)程曲線圖如圖4所示,轉(zhuǎn)速及溫度值響應(yīng)正常。
圖4 臺(tái)架試驗(yàn)轉(zhuǎn)速開(kāi)環(huán)控制過(guò)程曲線圖
圖5為臺(tái)架試驗(yàn)轉(zhuǎn)速閉環(huán)控制曲線圖,可以看到,實(shí)際轉(zhuǎn)速響應(yīng)速度快,并且沒(méi)有明顯超調(diào),達(dá)到了微型渦噴發(fā)動(dòng)機(jī)的控制要求。臺(tái)架試車(chē)試驗(yàn)結(jié)果表明,通過(guò)Lab-VIEW嵌入式軟件開(kāi)發(fā)平臺(tái)設(shè)計(jì)的基于ARM Cortex-M4內(nèi)核的電子控制器,能夠?qū)崿F(xiàn)微型渦噴發(fā)動(dòng)機(jī)開(kāi)環(huán)轉(zhuǎn)速和閉環(huán)轉(zhuǎn)速控制功能,有效性得到了實(shí)際工程驗(yàn)證。
圖5 臺(tái)架試驗(yàn)轉(zhuǎn)速閉環(huán)控制曲線圖
本文以搭建基于Lab VIEW的ARM Cortex-M4嵌入式軟件開(kāi)發(fā)平臺(tái)為目標(biāo),對(duì)Lab VIEW圖形化嵌入式軟件開(kāi)發(fā)技術(shù)展開(kāi)研究。首先對(duì)Lab VIEW嵌入式軟件開(kāi)發(fā)機(jī)理進(jìn)行了研究,并分別從開(kāi)發(fā)工具鏈、操作系統(tǒng)、復(fù)用模板以及驅(qū)動(dòng)代碼幾個(gè)方面簡(jiǎn)要闡述了相關(guān)移植工作,然后在此基礎(chǔ)上為微型渦噴發(fā)動(dòng)機(jī)設(shè)計(jì)了以TM4C123為目標(biāo)處理器的控制器軟硬件,并通過(guò)臺(tái)架試驗(yàn)驗(yàn)證其代碼的有效性。綜上所述,在Lab VIEW嵌入式軟件開(kāi)發(fā)平臺(tái)上進(jìn)行嵌入式軟件開(kāi)發(fā),不僅能夠?qū)崿F(xiàn)傳統(tǒng)代碼開(kāi)發(fā)方式的功能,而且縮短了開(kāi)發(fā)周期,提供了直觀便利的人機(jī)交互平臺(tái),從而顯著提高嵌入式軟件的開(kāi)發(fā)效率,具有較高的工程應(yīng)用價(jià)值。
編者注:本文為期刊縮略版,全文見(jiàn)本刊網(wǎng)站www.mesnet.com.cn。
[1]Jha H R,Priyadarshi A,Kumari A.Electronic Module of Hydraulic Damper Test Bench using ARM Microcontroller Interfacing in Lab VIEW[J].International Journal of Scientific&Engineering Research,2013,4(1),22-29.
[2]宮厚良,陳曾漢.基于RTX和Lab VIEW的多任務(wù)實(shí)時(shí)測(cè)控系統(tǒng)[J].計(jì)算機(jī)應(yīng)用,2007,27(6):1551-1552,1555.
[3]孫環(huán)宇,蘇三買(mǎi).微型渦輪發(fā)動(dòng)機(jī)電動(dòng)供油流量控制系統(tǒng)設(shè)計(jì)[J].測(cè)控技術(shù),2008,27(8):53-55,58.
[4]高瑾,黃洋,宋石陽(yáng),等.車(chē)用電機(jī)硬件在環(huán)實(shí)時(shí)仿真與測(cè)試平臺(tái)[J].電工技術(shù)學(xué)報(bào),2014(11):99-106.
單片機(jī)與嵌入式系統(tǒng)應(yīng)用2015年10期