文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.190050
中文引用格式: 黃雨可,徐軍,虞江航. 基于RCP的嵌入式快速開發(fā)及半實(shí)物仿真技術(shù)[J].電子技術(shù)應(yīng)用,2019,45(6):120-124,129.
英文引用格式: Huang Yuke,Xu Jun,Yu Jianghang. Rapid embedded development and semi-physical simulation technology based on RCP[J]. Application of Electronic Technique,2019,45(6):120-124,129.
0 引言
當(dāng)今社會(huì),在各類控制系統(tǒng)的研發(fā)過程中,仿真已經(jīng)成為工程師檢驗(yàn)產(chǎn)品性能的一個(gè)重要手段。早期的嵌入式控制系統(tǒng)開發(fā)流程中,由于系統(tǒng)開發(fā)前期缺少有效的實(shí)時(shí)驗(yàn)證手段,設(shè)計(jì)師必須要等到系統(tǒng)硬件完成后才能進(jìn)行檢驗(yàn),往往需要付出昂貴的代價(jià)[1]。后來隨著快速控制原型技術(shù)(Rapid Control Prototype,RCP)的引入,工程師可以通過在通用仿真計(jì)算機(jī)上建立產(chǎn)品的快速原型進(jìn)行仿真,從而達(dá)到實(shí)時(shí)檢測產(chǎn)品性能的目的,大大節(jié)約了開發(fā)時(shí)間和成本[2]。傳統(tǒng)的嵌入式控制系統(tǒng)設(shè)計(jì)中,設(shè)計(jì)者利用MATLAB/Simulink作為前端建模工具,可以快速建立對(duì)象模型[3],但面臨的問題一般是模型到可執(zhí)行代碼的有效轉(zhuǎn)換以及建模工具與嵌入式開發(fā)平臺(tái)的無縫對(duì)接,這一步包括模型的編譯以及開發(fā)環(huán)境的配置,仍需要大量手工編寫代碼和嵌入式系統(tǒng)的專業(yè)知識(shí)。
為解決此類問題,本課題提出,基于快速控制原型技術(shù),向Simulink庫添加自定義的嵌入式系統(tǒng)集成模塊的方案,從而達(dá)到圖形化配置嵌入式工程的目的,避免了大量的手動(dòng)代碼編寫和繁瑣的硬件參數(shù)配置。
1 快速控制原型技術(shù)
快速控制原型技術(shù)起源于快速原型(Rapid Prototype,RP)技術(shù)。20世紀(jì)90年代初,美國福特公司為了降低車用嵌入式控制器的研發(fā)時(shí)間和成本,將快速原型技術(shù)引入了控制器開發(fā)領(lǐng)域,這種技術(shù)就稱為快速控制原型技術(shù)[3-4]。
RCP技術(shù)本質(zhì)上屬于一種基于模型的算法設(shè)計(jì)及半物理仿真。鑒于純數(shù)學(xué)仿真的置信度有限,其結(jié)果往往僅作參考,而RCP技術(shù)基于半物理仿真參與研發(fā)過程,將工程師開發(fā)的算法下載到實(shí)時(shí)仿真計(jì)算機(jī)硬件平臺(tái)上,通過該仿真機(jī)中與產(chǎn)品控制器完全一致的實(shí)際I/O口與被控對(duì)象實(shí)物連接,進(jìn)行實(shí)時(shí)仿真,檢驗(yàn)算法性能[5],并可以快速反復(fù)修改,最終生成目標(biāo)代碼燒寫到硬件系統(tǒng)以形成最終的產(chǎn)品[6-7]。
RCP技術(shù)最大的特點(diǎn)是快速、簡便、經(jīng)濟(jì),極大地提高了研制效率,復(fù)雜的程序編寫可以通過建立數(shù)學(xué)模型來實(shí)現(xiàn),工程師的工作重點(diǎn)將主要集中于模型的建立和算法的設(shè)計(jì)等抽象層面,而不用糾結(jié)于程序bug調(diào)試和物理實(shí)現(xiàn)問題[8]。在實(shí)際應(yīng)用上,RCP仿真可以與另一種半物理仿真——硬件在回路(Hardware in the Loop,HIL)仿真系統(tǒng)互補(bǔ),相輔相成[1,9]。
本課題以美國Concurrent iHawk并行仿真計(jì)算機(jī)系統(tǒng)為平臺(tái)[3],圖1給出了快速原型系統(tǒng)仿真平臺(tái)示意圖[10]。
該系統(tǒng)具有以下特點(diǎn):
(1)擁有運(yùn)算能力強(qiáng)大的并行仿真計(jì)算機(jī)及豐富的、多協(xié)議的I/O接口;
(2)在Simulink的環(huán)境下實(shí)現(xiàn)了離線模型和在線模型的無縫轉(zhuǎn)換;
(3)Simulation Workbench仿真工作平臺(tái),提供了一個(gè)完全集成的、與第三方建模軟件兼容的環(huán)境;
(4)Simbox仿真計(jì)算機(jī)擁有雙CPU的并行處理器系統(tǒng),并且內(nèi)置了A/D采集卡,定時(shí)/計(jì)數(shù)器板卡,多串口卡等多種板卡和豐富的I/O接口。
2 設(shè)計(jì)與過程
2.1 大氣數(shù)據(jù)計(jì)算機(jī)
本課題針對(duì)的實(shí)驗(yàn)載體是通用大氣數(shù)據(jù)計(jì)算機(jī)(Air Data Computer,ADC),所謂大氣數(shù)據(jù)計(jì)算機(jī),是指針對(duì)大氣數(shù)據(jù)的處理系統(tǒng),是現(xiàn)代飛機(jī)上十分重要的一類機(jī)載電子設(shè)備,以微處理器為核心,利用傳感器傳來的少量信息,快速地計(jì)算出其他需要的大氣相關(guān)數(shù)據(jù),通常包括:大氣總壓、靜壓、總溫、迎角等[11]。
傳統(tǒng)的嵌入式開發(fā)過程,通常是將硬件設(shè)計(jì)和軟件設(shè)計(jì)分開進(jìn)行,也即,根據(jù)系統(tǒng)的需求和性能,設(shè)計(jì)模型和算法,再根據(jù)所建立的模型算法進(jìn)行嵌入式開發(fā)板硬件方面的配置。因此對(duì)于設(shè)計(jì)者而言,不僅要掌握所設(shè)計(jì)系統(tǒng)方面的知識(shí),更要對(duì)嵌入式系統(tǒng)的開發(fā)過程和C語言的程序編寫有一定的了解。而本課題的創(chuàng)新之處在于,基于快速控制原型技術(shù),不僅可以利用Simulink庫自帶的RTW工具將模型轉(zhuǎn)換成針對(duì)目標(biāo)硬件平臺(tái)的嵌入式C代碼,而且可以通過向Simulink庫添加自定義的STM32集成模塊,從而達(dá)到圖形化配置嵌入式工程的目的,避免了大量的手動(dòng)代碼編寫和繁瑣的硬件參數(shù)配置。
2.2 算法設(shè)計(jì)與模型建立
根據(jù)相關(guān)文獻(xiàn)[12-13],各解算參數(shù)方程式表達(dá)如下。
(1)氣壓高度
H<11 000 m時(shí),位于對(duì)流層,
代入已知值,Tb=216.5 K,Pb=22.632 kPa,Hb=11 000 m,
式中,Ma為馬赫數(shù)。
(3)指示空速
指示空速是指以標(biāo)準(zhǔn)海平面的大氣條件為基礎(chǔ),將真空速歸化到標(biāo)準(zhǔn)海平面所得到的速度值,又稱表速,表示的是飛行器空氣動(dòng)力的大小。馬赫數(shù)小于1時(shí):
以上得到的是表征ADC輸入輸出參數(shù)數(shù)學(xué)關(guān)系的方程式,是ADC解算大氣數(shù)據(jù)的數(shù)學(xué)基礎(chǔ),后續(xù)的Simulink建模便建立于上述一組數(shù)學(xué)模型基礎(chǔ)上。
2.3 STM32與Simulink的集成
本課題的創(chuàng)新之處在于,基于快速控制原型技術(shù),提出向Simulink庫添加自定義的STM32集成模塊的方案,從而達(dá)到圖形化配置嵌入式工程的目的,避免了大量的手動(dòng)代碼編寫和繁瑣的硬件參數(shù)配置。
傳統(tǒng)的開發(fā)過程中,Simulink與STM32有一定的結(jié)合,但并不完善,關(guān)鍵在于Simulink只能對(duì)所建立的數(shù)學(xué)模型進(jìn)行創(chuàng)建修改以及C代碼生成,而并不涉及任何和STM32有關(guān)的開發(fā)環(huán)境的配置,而且原本Simulink上只有針對(duì)通用32位處理器的系統(tǒng)目標(biāo)文件,這樣生成的代碼在可讀性和移植性上有不少的缺陷。
因此,本課題將ST意法半導(dǎo)體官方發(fā)布的開發(fā)固件庫STM32-MAT/TARGET集成到Simulink模型庫里面,利用Simulink強(qiáng)大的圖形化建模能力,將離線模型建立與STM32外設(shè)模塊結(jié)合起來,共同包含于快速控制原型仿真模型的搭建中。
目前ST官方的STM32-MAT/TARGET,支持F3、F4系列的開發(fā)板,將固件庫下載安裝后通過pathtool命令讓MATLAB包含固件庫的路徑,之后在Simulink模型庫里便會(huì)出現(xiàn)與STM32相關(guān)的集成模塊。
模塊里面包括MCU和ADC、DAC、定時(shí)器、串口等外設(shè)的配置,這些模塊的操作和普通Simulink模塊的操作基本相同,唯一不同的是,有關(guān)MCU時(shí)鐘系統(tǒng)和一些外設(shè)端口選擇的配置需要用到另一個(gè)軟件。在Simulink中,先把大氣數(shù)據(jù)計(jì)算機(jī)的仿真模型搭建如圖2所示。
模型基本思路就是將靜壓、總壓和總溫作為輸入,通過各自的模塊算出氣壓高度、空速等數(shù)據(jù),將其打包成一幀數(shù)據(jù)包,然后發(fā)送到串口模塊。
STM32CubeMX和STM32-Mat/Target與MATLAB/Simu-link的結(jié)合,將復(fù)雜繁瑣的手工編程轉(zhuǎn)換成直觀簡便的圖形配置。模型建立在Simulink里通過模塊連線完成,開發(fā)環(huán)境的配置在STM32CubeMX里通過圖形化界面完成。
2.4 自動(dòng)生成代碼
RCP技術(shù)最重要工具之一就是基于模型的自動(dòng)代碼生成?;谀P驮O(shè)計(jì)就要摒棄手寫代碼的過程,將更多的精力放在算法的開發(fā)上,利用Simulink圖形化的特點(diǎn),快速高效地將算法自動(dòng)生成代碼。
Simulink的仿真參數(shù)設(shè)置里會(huì)出現(xiàn)STM32相關(guān)的配置,包括tlc文件和tmf文件的選擇以及STM32CubeMX生成的ioc文件的選取,之后生成代碼報(bào)告。
最后在STM32CubeMX中配置生成Keil MDK工程文件。
2.5 半實(shí)物仿真與結(jié)果分析
將2.4節(jié)所生成的程序編譯燒寫到STM32開發(fā)板上,利用RS232串口連接到電腦,并在電腦上通過Simulink搭建圖3所示程序用于接收數(shù)據(jù)并解包展示。
利用Simbox仿真計(jì)算機(jī)搭建數(shù)據(jù)發(fā)送的模型,該模型向ADC原型系統(tǒng)發(fā)送相關(guān)原始數(shù)據(jù)。該模型在Simulation Workbench的環(huán)境下編譯代碼并生成RTDB變量,原始數(shù)據(jù)通過RTDB變量映射到仿真機(jī)的MOXA CP-118EL-A多串口板卡上[3],再利用硬件協(xié)議RS232的串口向ADC原型系統(tǒng)的USART3串口發(fā)送,STM32接收到原始數(shù)據(jù)后開始進(jìn)行相關(guān)大氣數(shù)據(jù)的解算。
在運(yùn)行圖3所示的第二套仿真程序的同時(shí),打開STM32進(jìn)行數(shù)據(jù)傳輸,觀察數(shù)據(jù)與預(yù)期的是否一致,結(jié)果如圖4所示。
圖4中,輸出的5組數(shù)據(jù)分別是氣壓高度、馬赫數(shù)、靜溫、指示空速和真空速,點(diǎn)線代表原始ADC模型數(shù)學(xué)仿真得到的輸出,條線代表半實(shí)物仿真PC實(shí)際接收到的ADC原型系統(tǒng)解算的大氣數(shù)據(jù)。可以看出,5組實(shí)際數(shù)據(jù)都能較好地跟蹤理論數(shù)據(jù),說明所搭建的快速原型系統(tǒng)與程序達(dá)到了與理論數(shù)學(xué)模型相符合的預(yù)期。圖4(a)、(c)、(d)、(e)中實(shí)際曲線相對(duì)平滑,過渡自然,取得了較好的效果;圖4(b)中由于馬赫數(shù)變化在10-2~10-3數(shù)量級(jí),波動(dòng)較為劇烈,因此實(shí)際曲線相對(duì)粗糙,有望在后續(xù)的研究中通過濾波等處理得到更為光滑的曲線??傮w而言所建立的ADC原型系統(tǒng)取得了較好的效果。
3 結(jié)論
本課題在分析基于RCP技術(shù)的基礎(chǔ)上,通過向MATLAB/Simulink集成STM32-Mat開發(fā)固件庫的方法,再結(jié)合STM32CubeMX配置開發(fā)環(huán)境,提出了一種快速開發(fā)STM32工程的方法,并將該方法成功應(yīng)用于航空電子大氣數(shù)據(jù)計(jì)算機(jī)嵌入式軟件工程實(shí)踐中。
本課題中所用到的STM32開發(fā)板相當(dāng)于建立的快速原型系統(tǒng),它具有與未來產(chǎn)品——大氣數(shù)據(jù)計(jì)算機(jī)相同的功能和豐富的I/O接口,從而可以作為原型系統(tǒng)進(jìn)行半實(shí)物仿真。而STM32-MAT/TARGET的作用則是將STM32的各種模塊集成到Simulink庫,從而可以利用自動(dòng)代碼生成功能將其快速轉(zhuǎn)換成嵌入式代碼。STM32CubeMX用于圖形化直觀配置基本環(huán)境。三者結(jié)合,可以快速搭建一套原型系統(tǒng),對(duì)“產(chǎn)品”進(jìn)行半實(shí)物仿真。且遇到問題時(shí),可以直接在模型上對(duì)包括STM32各種模塊在內(nèi)的所有環(huán)節(jié)進(jìn)行直接更改,而傳統(tǒng)的嵌入式開發(fā)除了模型需要更改以外,還需要花大量時(shí)間對(duì)程序以及開發(fā)環(huán)境進(jìn)行再配置,最重要的是,沒有STM32-MAT/TARGET的支持,模型生成的代碼缺少STM32相關(guān)模塊及tlc等配置文件,在與開發(fā)板的適配過程中將會(huì)有不少的問題。
因此,本課題提出的基于RCP技術(shù),結(jié)合STM32-MAT/TARGET與STM32CubeMX進(jìn)行嵌入式開發(fā),建立快速原型系統(tǒng),實(shí)現(xiàn)半實(shí)物仿真,可以在原有基礎(chǔ)上大大節(jié)省時(shí)間與成本,提高開發(fā)效率,具有一定的工程價(jià)值。
參考文獻(xiàn)
[1] 楊向忠,安錦文,崔文革.快速控制原型仿真技術(shù)應(yīng)用[J].航天控制,2009,27(2):72-75.
[2] GREPL R,LEE B.Modeling, parameter estimation and nonlinear control of automotive electronic throttle using a Rapid-Control Prototyping technique[J].International Journal of Automotive Technology,2010,11(4):601-610.
[3] 徐軍.飛行控制系統(tǒng):設(shè)計(jì)、原型系統(tǒng)及半物理仿真實(shí)驗(yàn)[M].北京:北京理工大學(xué)出版社,2015.
[4] HUANG G,ZHAO L,LI Y,et al.Design of rapid prototype of UAV line-of-sight stabilized control system[C].Society of Photo-Optical Instrumentation Engineers,2018.
[5] MAO R,LI X G,PAN B F.Design of control system rapid prototyping for suborbital reusable launch vehicle[J].Electronic Design Engineering,2014,22(23):107-113.
[6] 董哲,劉寧勇,孫德輝.基于RTW和Linux的快速控制原型技術(shù)研究[J].計(jì)算機(jī)測量與控制,2012,20(9):2420-2422.
[7] YE Y L,ZHAO R.Rapid prototype design for control systems of underwater vehicles[J].Computer Simulation,2012,29(3):378-381.
[8] SHATRI V,KURTAJ L,LIMANI I.Hardware-in-the-Loop Architecture with MATLAB/Simulink and QuaRC for Rapid Prototyping of CMAC Neural Network Controller for Ball-and-Beam Plant[C].International Convention on Information and Communication Technology,Electronics and Microelectronics,2017:1201-1206.
[9] GREPL R.Real-time control prototyping in MATLAB/Simulink:review of tools for research and education in mechatronics[C].IEEE International Conference on Mechatronics,2011:881-886.
[10] BUCHER R,BALEMI S.Rapid controller prototyping with Matlab/Simulink and Linux[J].Control Engineering Practice,2006,14(2):185-192.
[11] 郝旭耀.無人機(jī)的大氣數(shù)據(jù)處理計(jì)算系統(tǒng)研究與設(shè)計(jì)[D].上海:上海應(yīng)用技術(shù)學(xué)院,2015.
[12] 馬娟.數(shù)字式大氣數(shù)據(jù)計(jì)算機(jī)的軟件設(shè)計(jì)與實(shí)現(xiàn)[D].西安:西安電子科技大學(xué),2012.
[13] 國鳳娟.基于ARM的大氣數(shù)據(jù)計(jì)算機(jī)設(shè)計(jì)與開發(fā)[D].沈陽:沈陽航空航天大學(xué),2012.
作者信息:
黃雨可,徐 軍,虞江航
(北京理工大學(xué) 宇航學(xué)院,北京100081)