【摘要】采用Stateflow系統(tǒng)建模可使車(chē)身控制軟件開(kāi)發(fā)的效率大大提高,同時(shí)達(dá)到軟件便于仿真和升級(jí)維護(hù)的要求。本文主要以汽車(chē)車(chē)內(nèi)照明燈的控制為例,較為詳細(xì)的介紹了在Stateflow下系統(tǒng)模型的建立和驗(yàn)證,并簡(jiǎn)要說(shuō)明系統(tǒng)模型的軟件代碼生成??梢暬慕?、驗(yàn)證和調(diào)試方式表明,Stateflow系統(tǒng)建??梢杂行У膽?yīng)用于車(chē)身控制系統(tǒng)的軟件開(kāi)發(fā)。
【關(guān)鍵詞】Stateflow車(chē)身控制狀態(tài)轉(zhuǎn)移
MATLAB軟件產(chǎn)品是用來(lái)解決工程與科學(xué)實(shí)際問(wèn)題的應(yīng)用軟件,廣泛應(yīng)用于航空航天、汽車(chē)、兵器與國(guó)防工業(yè)、通信、大學(xué)教育以及金融財(cái)經(jīng)等多個(gè)行業(yè)。Stateflow作為其中一個(gè)產(chǎn)品模塊,是集成于Simulink中的圖形化設(shè)計(jì)與開(kāi)發(fā)工具,主要針對(duì)控制系統(tǒng)中的復(fù)雜控制邏輯進(jìn)行建模和仿真,適應(yīng)于對(duì)事件響應(yīng)的動(dòng)態(tài)變換系統(tǒng)設(shè)計(jì)。Stateflow涉及的功能包括:控制對(duì)象建模、狀態(tài)邏輯切換、復(fù)雜邏輯的可視化編程、嵌入式系統(tǒng)集成等。本文主要介紹利用Stateflow針對(duì)車(chē)身控制軟件開(kāi)發(fā)中涉及的功能邏輯進(jìn)行系統(tǒng)建模以及進(jìn)行時(shí)序仿真,并最終生成可直接用于嵌入式系統(tǒng)開(kāi)發(fā)的軟件代碼。
一、車(chē)身控制模塊的介紹
車(chē)身控制系統(tǒng)包括汽車(chē)安全、舒適性控制和信息通信系統(tǒng),主要用于增強(qiáng)汽車(chē)的安全性、駕駛的方便性和乘坐的舒適性。車(chē)身控制技術(shù)發(fā)展至今,已形成模塊化和系統(tǒng)化,即眾多的電器控制功能已整合到一個(gè)(或幾個(gè))功能強(qiáng)大的控制模塊中,即我們常說(shuō)的車(chē)身控制模塊(BCM)。車(chē)身控制模塊主要涉及中央防盜門(mén)鎖、室內(nèi)燈、電動(dòng)車(chē)窗、玻璃除霜、雨刮器、遙控、轉(zhuǎn)向燈、前后組合燈、霧燈、喇叭、天窗、座椅、后視鏡等控制。
二、系統(tǒng)模型的建立
車(chē)身控制模塊包括了許多不同的功能模塊,各個(gè)功能都可以用建模來(lái)實(shí)現(xiàn),最后集成到一起,形成一個(gè)完整的車(chē)身控制系統(tǒng)。下面將以汽車(chē)車(chē)內(nèi)照明燈的控制為例詳細(xì)介紹控制軟件的模型建立。
汽車(chē)車(chē)內(nèi)照明燈的功能需求如下:(1)車(chē)門(mén)打開(kāi)燈漸亮,車(chē)門(mén)關(guān)閉燈漸滅;(2)點(diǎn)火鑰匙開(kāi)關(guān)在ON位置時(shí)燈立即熄滅;(3)門(mén)打開(kāi)燈亮?xí)r長(zhǎng)10min后熄滅;(4)燈漸亮、漸滅時(shí)間為1s。
在硬件上車(chē)內(nèi)照明車(chē)燈亮度通過(guò)PWM控制進(jìn)行調(diào)節(jié),占空比為100%時(shí)全亮,0%表示熄滅,通過(guò)改變占空比即可實(shí)現(xiàn)車(chē)燈的漸亮與漸滅。
根據(jù)需求,車(chē)內(nèi)照明燈的軟件接口如下表所示:
Stateflow中的狀態(tài)圖管理和維護(hù)著當(dāng)前模型中的活動(dòng)狀態(tài),狀態(tài)從非活動(dòng)狀態(tài)到活動(dòng)狀態(tài)以及狀態(tài)之間的切換,都由事件觸發(fā)。如圖1所示,利用Stateflow狀態(tài)圖轉(zhuǎn)移可以方便的實(shí)現(xiàn)上述邏輯。
整個(gè)設(shè)計(jì)由OFF(完全熄滅)、ON(完全點(diǎn)亮)、Fade_ON(漸亮)和Fade_OFF(漸滅)四個(gè)狀態(tài)組成,四個(gè)狀態(tài)之間的轉(zhuǎn)移關(guān)系與功能需求一一對(duì)應(yīng)。其中值得注意的是,每一個(gè)建立的系統(tǒng)模型在轉(zhuǎn)換為程序代碼后,都對(duì)應(yīng)了一個(gè)實(shí)際的功能函數(shù)或系統(tǒng)任務(wù),在函數(shù)或任務(wù)執(zhí)行時(shí)需要考慮控制系統(tǒng)的調(diào)用周期,每一次狀態(tài)的轉(zhuǎn)移或變量的更新至少需要1個(gè)調(diào)用周期才能夠完成。在該模型中,與調(diào)用周期密切相關(guān)的是開(kāi)關(guān)門(mén)的漸亮和漸滅時(shí)長(zhǎng)以及門(mén)打開(kāi)后照明燈的燈亮?xí)r長(zhǎng),這里設(shè)置調(diào)用周期為10ms,因此在Fade_ON和Fade_OFF兩個(gè)狀態(tài)下,軟件輸出的PWM控制占空比在1個(gè)周期時(shí)間內(nèi)增加1%,就達(dá)到了在1s時(shí)間里實(shí)現(xiàn)漸亮或漸滅的控制,同樣Timer_10min設(shè)置為60000,表示在狀態(tài)ON保持60000個(gè)調(diào)用周期(即10min)后轉(zhuǎn)移到狀態(tài)OFF,熄滅車(chē)內(nèi)照明燈。
這樣,利用Stateflow中簡(jiǎn)單的框圖,就實(shí)現(xiàn)了車(chē)內(nèi)照明燈的邏輯控制。
三、系統(tǒng)模型的驗(yàn)證
在MATLAB軟件中,Simulink提供了幾個(gè)重要的組件來(lái)驗(yàn)證Stateflow模型的功能,用于驗(yàn)證系統(tǒng)模型主要包括三個(gè)組成部分:
(1)Signal Builder:編寫(xiě)測(cè)試用例,主要是繪制輸入變量的時(shí)序圖,驗(yàn)證所建立的系統(tǒng)模型是否與需求相符;
(2)Subsystem:里面封裝了基于Stateflow的系統(tǒng)模型,其中包括了輸入和輸出接口;
(3)Scope:用于觀(guān)察模型的輸出變量的時(shí)序圖。
在仿真過(guò)程中,如果模型的輸出不正確,還可以用Stateflow的調(diào)試器對(duì)模型進(jìn)行調(diào)試。Stateflow允許對(duì)模型設(shè)置斷點(diǎn),或用動(dòng)畫(huà)方式觀(guān)察模型的執(zhí)行情況。除了全局?jǐn)帱c(diǎn)外,還可以針對(duì)對(duì)象、狀態(tài)、轉(zhuǎn)移、事件以及函數(shù)等Stateflow對(duì)象設(shè)置斷點(diǎn)。
可將上節(jié)繪制的狀態(tài)圖集成在Simulink中,并搭建如圖2所示的系統(tǒng)模型仿真測(cè)試框圖。
在Signal Builder中繪制輸入變量的測(cè)試時(shí)序,設(shè)置時(shí)間并運(yùn)行模型后,就可以在Scope中得到輸出變量的時(shí)序圖,用于檢驗(yàn)是否可以滿(mǎn)足模型建立的功能需求。上述模型仿真的測(cè)試結(jié)果如圖3所示。
四、軟件代碼的生成
Stateflow的編譯目標(biāo)決定了Stateflow框圖生成代碼的類(lèi)型,MATLAB集成開(kāi)發(fā)環(huán)境中含有專(zhuān)門(mén)將Stateflow框圖轉(zhuǎn)變?yōu)榇a的工具,叫做Stateflow Code,它一共支持三種類(lèi)型的目標(biāo),分別為仿真目標(biāo)、Rear-Time Workshop(RTW)目標(biāo)和自定義目標(biāo)。
對(duì)于嵌入式系統(tǒng)開(kāi)發(fā)來(lái)說(shuō),使用最多的是RTW的編譯目標(biāo),它能夠結(jié)合用于模型代碼生成的工具Real-Time Workshop或者嵌入式產(chǎn)品級(jí)生成工具Real-Time Workshop Embedded Coder,將狀態(tài)機(jī)模型生成相應(yīng)的源代碼。得到的代碼可以用來(lái)進(jìn)行快速原型或者硬件再回路等實(shí)時(shí)仿真,也可以進(jìn)行嵌入式產(chǎn)品開(kāi)發(fā)。一般在生成的代碼文件中,選擇生成的.h和.c文件就可以直接通過(guò)系統(tǒng)集成并燒入單片機(jī)。
實(shí)踐表明,自動(dòng)生成的代碼與手工編寫(xiě)的代碼相比性能相當(dāng),而代碼量要大出5-10%,但是現(xiàn)在的單片機(jī)內(nèi)部存儲(chǔ)器資源已經(jīng)十分豐富,從開(kāi)發(fā)效率的角度來(lái)看,自動(dòng)生成代碼的優(yōu)勢(shì)就顯得更為明顯了。
五、結(jié)束語(yǔ)
隨著汽車(chē)工業(yè)的迅猛發(fā)展,包括車(chē)身控制在內(nèi)的汽車(chē)電子產(chǎn)業(yè)競(jìng)爭(zhēng)變得越來(lái)越激烈,提高產(chǎn)品的質(zhì)量和研發(fā)效率是各個(gè)汽車(chē)電子產(chǎn)品制造廠(chǎng)商需要面對(duì)的兩大問(wèn)題,于是,Stateflow系統(tǒng)建模和代碼自動(dòng)生成的開(kāi)發(fā)方式就成為理想的選擇。本文主要通過(guò)汽車(chē)車(chē)內(nèi)照明燈的簡(jiǎn)單邏輯控制介紹了利用Stateflow建立系統(tǒng)模型,并利用代碼生成工具實(shí)現(xiàn)控制軟件的開(kāi)發(fā)。實(shí)際設(shè)計(jì)中車(chē)身控制軟件涉及車(chē)輛的眾多部分,很多邏輯功能十分復(fù)雜,但是利用系統(tǒng)建模的方法卻可以較為輕松的實(shí)現(xiàn),因此得到了業(yè)內(nèi)的普遍認(rèn)可和應(yīng)用推廣。
參考文獻(xiàn)
[1]胡一汀.基于Simulink/Stateflow模型的汽車(chē)電子控制軟件開(kāi)發(fā).數(shù)字技術(shù)與應(yīng)用,2011,(10):127-128
[2]張威. Stateflow邏輯系統(tǒng)建模.西安電子科技大學(xué)出版社,2007.
[3] The Mathworks, Inc, Stateflow User’s Guide, 2010.