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