孫穎,王建俊,張承瑞
(1.山東重工集團有限公司,濟南 250014;2.山東大學機械工程學院,濟南 250061)
基于AUTOSAR的汽車電控系統代碼自動生成技術
孫穎1,王建俊2,張承瑞2
(1.山東重工集團有限公司,濟南 250014;2.山東大學機械工程學院,濟南 250061)
基于汽車開放式系統架構標準AUTOSAR的方法,探討了以普華基礎軟件和Simulink工具為基礎的汽車電控系統軟件自動代碼生成技術的開發流程。以汽車車燈控制系統為代表,對BSW配置、軟件組件封裝、Runnable設計、邏輯功能開發和RTE實現等關鍵環節進行了介紹。對建模系統進行在線仿真,對生成代碼進行汽車試驗控制箱實驗,驗證了生成的代碼的正確性。
汽車開放系統架構標準;汽車電控系統;代碼自動生成
隨著汽車電子技術的發展和功能需求的不斷增加,汽車電控系統變得越加復雜。不同汽車制造商和供應商對特定問題提供各自的專有解決方案,使得軟硬件系統的不兼容性和應用組件的復雜性成為E/E凸顯的問題[1-2]。為改善E/E復雜性管理,增強可移植性、可擴展性、安全可靠性和便于產品更新換代,由制造商、供應商及其他半導體和軟件系統公司聯合推出了汽車開放系統架構標準(AUTomotive open software ARchitecture,AUTOSAR),包括架構、方法學和應用接口三方面的內容。AUTOSAR為車輛系統提供了基于標準接口的通用軟件架構[3]。應用層由SWC組成,SWC的獨立性通過虛擬功能總線(VFB)實現,VFB由RTE和BSW共同完成。RTE通過提供一致的接口和服務完成SWC之間、SWC與底層的通信。BSW屏蔽底層細節,向SWC提供服務。AUTOSAR方法學采用標準化的數據交換格式描述軟件架構信息,包括SWC、ECU資源、系統約束、系統配置和ECU配置[4]。
本文以Freescale HCS12_XEP100處理器為硬件開發平臺,應用普華基礎軟件ORIENTAIS工具對操作系統(OS)、通信(Com)、硬件端口(I/O)等基礎軟件(BSW)和運行時的環境(RTE)等進行了配置,生成底層驅動代碼和實時交互層代碼。在Matlab/Simulink中開發應用軟件組件(SWC)的運行實體(Runnable)。應用Stateflow設計Runnable內部邏輯,并建立仿真模型在線仿真。應用Embedder Coder生成邏輯層代碼。將底層驅動代碼、實時交互層代碼和邏輯層代碼融合,在汽車實驗箱中進行實驗。
根據AUTOSAR方法學的開發流程,結合Matlab的使用方法,首先在Authoring Tool中進行系統級設計。然后將系統描述文件導入到Matlab/Simulink中提取SWC。運用Stateflow對SWC中的Runnable進行設計,生成代碼并導出SWC描述文件。將SWC描述文件重新導入Authoring Tool中,在RTE中將Runnable映射到BSW的任務中。在進行Runnable設計的同時,應用Authoring Tool對BSW各模塊進行配置,并生成底層驅動代碼。最后將代碼融合[5]。開發流程如圖1所示。

圖1 汽車電控系統開發流程
2.1 汽車車燈系統SWC設計
汽車車燈系統由信號燈和照明燈等組成,主要包括夜間照明燈、左右轉向燈、前后霧燈、剎車燈、雙閃燈和車內照明燈。根據功能將車燈系統分為如表1所示的5個SWC,其中轉向燈的跳轉頻率和最小跳轉次數通過CAN調試終端發送參數修改報文,通過CAN調試終端可以查看車門狀態信息。車門狀態信息報文第1字節低4位分別表示4個車門的狀態。

表1 SWC的功能說明
SWC功能分配完成后,在ORIENTAIS中建立SWC、接口(interface)和數據類型(datatype)。因為Simulink不能讀取SWC的行為(behavior),所以不設計SWC Behavior。最后導出系統描述文件LampControlSystem.arxml。汽車車燈控制系統SWC結構樹如圖2所示。
2.2 Simulink中Runnable設計及應用代碼生成
2.2.1 Simulink與AUTOSAR對應關系
Simulink在AUTOSAR整個設計流程中的作用是建立模型的邏輯功能,并仿真驗證基于模型的設計中模型邏輯功能的正確性。Simulink之所以能用于AUTOSAR的開發過程中,是因為Simulink與AUTOSAR中很多概念的相通性。表2列出了設計汽車電控系統中常用的術語對應關系[6]。將SWC端口配置為服務器操作時,SWC在Simulink模型中只能用模型表示。如果將SWC封裝到部件(composition),各SWC只能用虛擬子系統(virtual subsystem)表示。

圖2 SWC結構樹

表2 AUTOSAR和Simulink中的常用術語對應關系
2.2.2 Runnable在Simulink中的實現
將ORIENTAIS生成的系統描述文件導入到Simulink中,然后對SWC端口進行相應的修改,結果如圖3所示。
鑒于篇幅限制,以轉向燈應用組件SWC_ TurnLampControl為例對SWC在Simulink中邏輯功能的實現細節進行說明。如圖4所示,轉向燈應用組件SWC_TurnLampControl對外屏蔽掉內部實現細節,并預留了7個輸入口和3個輸出口。其中頭2個輸入口連接RTE觸發事件控制信號,每一個SWC的第1個端口需要留給RTE觸發事件。內部包含2個Runnable,兩者公用GetMincycle和GetFlashFrm兩個輸入端口信號,每個Runnable由狀態圖實現。轉向燈邏輯狀態如圖5所示。

圖3 汽車車燈系統模型

圖4 SWC在Simulink中的層次化實現結構

圖5 轉向燈邏輯狀態
2.2.3 Simulink仿真
將每個SWC邏輯功能設計好之后,需要將5個SWC封裝到部件(composition)中。Composition作為系統抽象只負責封裝組件提供系統結構,不影響SWC和VFB之間的通信。
系統仿真模型如圖6所示。

圖6 汽車車燈系統仿真模型
Function Call Generator和Event Chart一起為各Runnable提供RTE觸發事件。每一個Runnable需要單獨的RTE觸發事件,不同的Runnable不能共用同一個Runnable。Simulation Environment模擬實際環境,為汽車車燈控制系統提供信號輸入,并用示波器觀察輸出信號。每一個車燈都由開關控制。為方便觀察輸出信號隨輸入信號的變化,用周期為50 s、占空比為20%的脈沖發生器代替開關。用矢量輸出值為[3 1 4 2 1]、采樣周期為40 s的任意信號發生器表示通過CAN調試終端修改轉向燈閃爍頻率。從仿真結果(圖7)可以看出:通過更改閃爍頻率的數值,轉向燈狀態輸出波形疏密度發生了變化,表明轉向燈閃爍頻率已經發生了變化。

圖7 仿真結果
2.2.4 與AUTOSAR兼容的應用代碼自動生成
在確認上述模型仿真結果正確后,采用Matlab/Embedded Coder工具實現應用層代碼的自動生成。Embedded Coder是Matlab圖形建模和仿真環境Simulink的功能補充,用以創建目標系統的C代碼。為生成與AUTOSAR兼容的代碼,需要將系統目標代碼文件選為autosar.tlc。
在圖6所示的模型中只對LampControlSystem封裝部件中的所有SWC進行代碼生成,不對其仿真環境和事件觸發部分進行代碼生成。圖8為利用Embedded Coder工具生成的汽車車燈控制系統應用代碼生成報告。生成的文件主要包括system.c、system.h和system.arxml文件。system.c文件包含了模型的初始化代碼、模型代碼及模型終止操作代碼等。system.h文件包含了模型的數據結構、模型輸入與數據結構件的全局接口,并對模型函數進行外部聲明。system.arxml文件描述了SWC的接口、數據類型和內部行為特征。
2.3 BSW配置與底層驅動代碼生成
BSW各模塊的配置是和SWC設計同時進行的,但兩者相互分離。首先為與底層通信的信號分配相應的引腳;然后在ORIENTAIS中對I/O,COM,CAN總線,CAN接口(Canif),數據鏈路層(PduR),OS,硬件抽象層(IoHwAb)等模塊進行配置,每一個配置模塊生成相應的配置代碼。

圖8 汽車車燈控制系統應用代碼生成報告
2.4 底層與應用層通信機制及代碼整合
系統級設計SWC時隱藏了內部具體行為,只預留了通信接口,需要將Embedded Coder的導出文件system.arxml導入到ORIENTAIS中提取內部行為信息;BSW配置完成后只為上層提供一致的接口,RTE實現應用層SWC之間、SWC與BSW之間的通信,以及Runnable到操作系統任務的映射。提取系統描述文件,完成端口之間的連接。端口間連接關系如圖9所示。

圖9 端口間連接關系
AUTOSAR文檔中提到了Runnable到任務的3種映射規則,其他文獻[7-8]也對映射規則進行了詳細研究。本文按照具體功能優先原則進行映射,任務分配、觸發事件及映射關系如表3所示。InitTask實現模塊的完全初始化,在程序開始運行時執行,然后終止任務。為了實現通信功能,需要周期性的調度MainFuncTask。與CAN通信的Runnable需要不斷讀取和發送信息,設定周期要求短。
配置完RTE生成的代碼對應用層的SWC封裝了下層的基礎軟件,并利用下層的基礎軟件(比如OS,COM等)的功能實現向上層SWC提供運行、組件間通信和生命周期控制,類似于向應用層提供基礎軟件的接口。RTE將Embedded Coder生成的邏輯代碼和ORIENTAIS生成的底層代碼無縫連接,在整合過程中只需要將Embedded Coder生成的system.c,system.h 2個文件導入到ORIENTAIS中,然后滿足system.c包含Rte_system.h頭文件即可。這是因為Rte_system.h頭文件定義了Runnable函數和底層部分接口信息。

表3 Runnable到任務的映射
在試驗控制箱中隨機控制車燈開關,并通過CAN調試終端更改轉向燈閃爍頻率參數Flash-Frm。程序中轉向燈閃爍頻率f=FlashFrm×2× 0.3 s,當FlashFrm=0時,f=0.3 s。從實驗結果(圖10)可以看出:閃爍頻率從1.8 s到0.6 s再到2.4 s的過程中轉向燈狀態疏密變化明顯,與肉眼觀察到的轉向燈閃爍情況相符合。

圖10 實驗結果
本文基于AUTOSAR標準詳細介紹了汽車電控系統的整個設計流程和代碼自動生成技術,并以汽車車燈控制系統為例,通過仿真和實驗箱實驗驗證了生成代碼的可用性。采用普華基礎軟件ORIENTAIS配置BSW各模塊,以Matlab/Simulink開發應用層邏輯功能,然后進行代碼的無縫連接,很好地完成了AUTOSAR期望的目標,提高了組件重復利用性、軟件兼容性、可移植性,縮短了產品開發周期,促進了各生產廠商的產品互通性。
[1]Broy Manfred.Challenges in Automotive Software Engineering[C]//Proceedings International Conference of Software 2006.China:[s.n.],2006:33-42.
[2]Heinecke H.Automotive Open System Architecture-An Industry Wide Initiative to Manage the Complexity of E-merging Automotive E/E Architectures[J].SAE Paper,2004(5):21-42.
[3]AUTOSAR GbR.Layered Software Architecture[EB/OL].[2012-10-12].http://www.autosar.org/download/ R3.2/AUTOSAR_LayeredSoftwareArchitecture.pdf.
[4]AUTOSAR GbR.Methodology[EB/OL].[2012-11-16].http://www.autosar.org/download/R3.2/AUTOSAR_Methodology.pdf.
[5]Kohler A,Reck T.AUTOSAR-Compliant Functional Modeling with MATLAB,Simulink,Stateflow and Real-Time Workshop Embedded Coder of a Serial Comfort Body Controller[C]//MathWorks Automotive Conference.Dearborn:[s.n.],2007.
[6]AUTOSAR GbR.Specification of Applying Simulink to AUTOSAR[EB/OL].[2012-12-19].http:// www.autosar.org/download/R3.2/AUTOSAR_SimulinkStyleguide.pdf.
[7]LONG R S,LI H,PENG W,et al.An approach to optimize intra-ECU communication based on mapping of AUTOSAR runnable entities[C]//International Conference on Embedded Software and Systems.China:[s.n.],2009:138-143.
[8]胡琦,李紅,趙民德,等.基于AUTOSAR的電控汽油機ECU軟件設計與實現[J].浙江大學學報:工學版,2011,29(6):1119-1123.
(責任編輯 劉舸)
Code Generation Technique of Automotive Electronic Control System Based on AUTOSAR
SUN Ying1,WANG Jian-jun2,ZHANG Cheng-rui2
(1.Shandong Heavy Industry Group,Jinan 250014,China;
2.School of Mechanical Engineering,Shandong University,Jinan 250061,China)
The development process of code generation technique of automotive electronic control system conforming to the AUTomotive open software ARchitecture(AUTOSAR)is presented.The key points about basic software(BSW)configuration,software component composition,Runnable and logical function design and real time environment(RTE)implementation are discussed in details.The outcomes of system simulation using Simulink and experiment using generated codes on car test bench verify the practicability of generated and merged codes.
AUTomotive open software ARchitecture;automotive electronic control system;code generation
U467
A
1674-8425(2014)03-0033-06
10.3969/j.issn.1674-8425(z).2014.03.007
2014-01-07
孫穎(1967—),女,山東人,高級工程師,主要從事工程機械開發研究。
孫穎,王建俊,張承瑞.基于AUTOSAR的汽車電控系統代碼自動生成技術[J].重慶理工大學學報:自然科學版,2014(3):33-38.
format:SUN Ying,WANG Jian-jun,ZHANG Cheng-rui.Code Generation Technique of Automotive Electronic Control System Based on AUTOSAR[J].Journal of Chongqing University of Technology:Natural Science,2014 (3):33-38.