張 輝,蘇朋軍,孫連明,趙立安
(1.中國第一汽車股份有限公司技術中心,吉林 長春 130011;2.北京經緯恒潤科技有限公司,北京 100191)
目前汽車技術發展的主要推動力是汽車電子電氣技術,國內整車廠(尤其商用車)都在不斷地深化電子電氣技術在自主車型上的應用。其中,整車廠除了利用供應商資源進行合作開發之外,同時也在建立自主的開發能力。
車身控制器是整車電子電氣架構中重要的控制部件,涉及整車電氣系統的功能分配、控制邏輯等等,國內外很多整車廠也將車身控制器作為一個重要部件自行開發。開發模式是供應商提供硬件和基礎軟件,整車廠進行應用層軟件開發,并針對不同車型進行產品系列化。尤其在商用車領域,針對商用車車型多、批量小的特點,為了實現零部件的成本最優,需要針對不同車型,設計應用同一款車身控制器產品能應用到盡可能多的車型。
另外針對當前產品開發的模式,充分借鑒國際上流行的基于模型的開發方法,利用現有的建模仿真工具(Matlab/Simulink/Stateflow)直接進行應用軟件設計,同時完成仿真測試等,然后利用Matlab自帶的代碼生成工具(Embedded Coder)生產C代碼,結合車身控制器所選芯片的編譯器,生成特定的可執行代碼,完成在產品上的應用。目前,Matlab工具支持產品級的代碼生成,并且已經成為了汽車行業內的標準編程工具。本文也是基于Matlab的使用,開發出針對于商用車的車身控制器應用環境,用于整車廠進行產品軟件開發,供給不同的車型使用。
本文提及的商用車車身控制器是針對一汽商用車應用設計的一款產品,硬件資源需求如表1所示。

表1 商用車車身控制器資源需求
表1可以滿足當前一汽商用車的全系列車型的資源需求,可以在此基礎上進行不同車型應用車身控制器的系列化和平臺化。車身控制器部件為24 V系統,用于實現燈光系統(如轉向燈、前照燈、霧燈、位置燈和室內燈等)控制、刮水系統控制,各種傳感器信號以及開關信號的采集,同時實現底盤CAN、舒適CAN的報文和信號路由,支持標準的UDS診斷,支持CCP標定配置,支持OSEK NM,支持LIN通信功能、BT功能等等。
在硬件設計方案方面,包括主控MCU、信號采集電路、電源管理電路、硬件驅動電路以及CAN、LIN通信電路等。軟件由硬件驅動程序、故障診斷協議棧、嵌入式系統軟件框架、接口程序以及Matlab/Simulink環境下的一套圖形界面構成。通過Matlab/Simulink環境下的圖形界面可以配置輸入接口模式、輸出控制口模式以及系統功能等,在Matlab/Simulink環境下搭建模型,借助RTW Embeded Coder工具將圖形界面翻譯為C代碼,借助Codewarrior IDE及其編譯器將C代碼翻譯為機器碼,最終通過BT下載機器碼,形成最終產品狀態。
車身控制器是整車電子電氣架構中非常重要的零部件,主要控制車身上的燈具和電機等負載,同時采集相關的開關以及傳感器信號,集中進行信息分析處理,并通過CAN總線進行信息交互。針對商用車車身控制器的結構特點,硬件系統定義如圖1所示。

圖1 硬件系統定義
根據輸入輸出資源的要求、數量及性能的定義,選擇原Freescale公司的32 bit芯片MPC5604B作為系統CPU,主要的資源包括:主頻:64 MHz;Flash :512 Kbyte;RAM :32 Kbyte;EEPROM: 64 Kbyte;CAN:3路;AD(10 bit):36路。
系統的開關量輸入提供上拉配置和下拉配置,硬件方案如圖2所示。

圖2 開關量配置方案
系統的模擬量輸入同時提供電壓信號輸入和電阻信號輸入。針對電壓信號,硬件方案如圖3所示。
系統提供低端驅動輸出,按照功能需求選用INFINEON公司的集成式低端輸出MOS驅動芯片,驅動電流約1A。硬件方案如圖4所示。

圖3 電壓信號硬件方案

圖4 低端驅動硬件方案
系統提供高端驅動輸出,同時需要對輸出負載的狀態進行故障診斷,按照功能需求選用ST公司的智能MOS功率驅動芯片,根據不同的功率大小設置進行系列選型。硬件方案如圖5所示。

圖5 高端驅動硬件方案
CAN收發器方面選型NXP公司的TJA1042,CAN通信接口電路硬件方案如圖6所示。
LIN收發器選型NXP公司的TJA1021,24 V-LIN總線接口電路硬件方案如圖7所示。

圖6 CAN通信接口電路

圖7 LIN通信接口電路

圖8 傳統的嵌入式軟件開發流程
傳統的軟件開發模式如圖8所示,直接在嵌入式芯片上進行算法的設計驗證,存在著開發周期長、調試環境不友好等各方面的問題。
而新興的開發模式如圖9所示。借助Matlab仿真工具(Simulink/Stateflow),首先在仿真環境下進行算法的仿真、驗證,然后再利用其RTW及Embedded Coder直接將算法模型生成C語言代碼,所見即所得,快速、便捷、可靠,本論文也是利用此工具進行實現。將車身控制器所需的底層驅動、I/O輸入輸出、總線接口通信等接口代碼封裝成Simulink下面的模型庫,可以直接將算法模型和驅動模型連接,為最終產品代碼的生成做準備。

圖9 新興的嵌入式軟件開發流程
車身控制器的軟件總體框架如圖10所示,標準通用模塊需要供應商開發并封裝成Simulink模型庫,應用層軟件進行設計由整車廠工程師完成,BootLoader部分是實現燒錄入車身控制器底層的引導程序,主要負責在上位機生成可執行代碼之后,通過Bootloader可以將代碼引導入車身控制器內部存儲器上,從而實現最新應用代碼的更新。

圖10 軟件總體框架
本文的主要工作就是實現車身控制器各個底層驅動模塊程序的設計及封裝,然后完成和CPU-MPC5604B編譯器的鏈接,直接實現可執行代碼的生成。
GPIO模塊,是CPU底層驅動的基本模塊。根據功能使用的不同,劃分為3個類別。①Digital Input模塊:主要用于MCU管腳作為普通I/O功能的輸入狀態的采集;②Digital Output模塊:主要用于MCU管腳作為普通I/O功能輸出狀態的控制;③PWM Output模塊:主要用于MCU管腳配置為EMIOS功能且作為PWM輸出功能的控制。
在Simulink中封裝接口示例如圖11所示。

圖11 模型示例(I/O示例)
雙擊點開GUI配置參數界面如圖12所示,可以設置輸入、輸出、PWM等配置參數,從而實現不同的應用選型。

圖12 GPIO接口示例(輸入)
AD采集模塊主要負責采集模擬量開關或是模擬量傳感器信號,其Simulink模型示例如圖13所示。

圖13 示例模型
把ADC GetValue模塊拖到目標模型中,雙擊打開ADC GetValue模塊的配置界面,在Channel項選擇目標通道,即可完成不同通道信號采集的設置,如圖14所示。

圖14 ADC GetValue配置界面
中斷控制在車身控制器軟件設計中用于休眠喚醒(開關輸入喚醒或是傳感器喚醒)或是實時性控制(信號觸發要求控制立刻響應某個控制功能,或是用它來觸發一個Function-Call System模塊),如圖15所示。

圖15 中斷控制配置界面
針對外部中斷源,需要在GUI中的Ports模塊中配置將要控制管腳的參數,主要參數包括:中斷來源的管腳(Assignment)、中斷的方向屬性(Direction)、初始電平屬性(Initial Level),如圖16所示。

圖16 Ports模塊配置示例界面
關于CAN總線,MPC5604B共有3個模塊:CAN接收模塊主要接收數據進行處理,CAN發送模塊主要完成CAN的發送功能,以及CAN配置模塊。
雙擊打開GUI界面上的CAN配置模塊,選擇需要使能的CAN通道,其它參數需要進行配置,如圖17所示。

圖17 CAN模塊配置界面
用戶自定義接收模塊的用法為:把CAN Receive Fun模塊拖到目標模型中,使其觸發一個Function-Call Subsystem模塊,配置接收的信息,接收信息需要和CAN BUS協議中配置的自定義接收信息一致,如圖18所示。
MCU模塊主要完成對芯片工作的晶振和系統工作頻率進行配置,如圖19所示。
除此之外,還需要完成SPI、SCI、定時器、看門狗的應用封裝。這些底層驅動程序都是在MCU上進行驗證過的代碼,確認工作可靠,然后完成在Matlab下面的Simulink模塊封裝。

圖18 CAN Receive Fun示意界面

圖19 MCU模塊配置示例界面
針對車身控制器的產品開發,除硬件和軟件開發環境設計外,還需要通過實際樣件的試制、調試和軟件測試,實現以下功能:①通過Simnulink進行控制邏輯模型的開發;②在Matlab環境中的RTW工具直接進行C代碼生成;③通過CodeWarrior完成針對C代碼的編譯形成機器碼;④通過車身控制器內部的Bootlaoder程序,利用CANape軟件實現軟件下載。
通過在試驗室環境臺架的測試驗證,整個開發環境實現了預期的功能目標,整個開發過程工作可靠,可以用于產品軟件的開發。
本文主要論述基于模型的車身控制器產品設計實現,該車身控制器產品基于Freescale的MPC5604B芯片為平臺的完整系統,由硬件驅動程序、故障診斷協議棧、嵌入式系統軟件框架和接口程序以及Matlab/Simulink環境下的一套圖形界面構成。通過Matlab/Simulink環境下的圖形界面,可以配置驅動程序、故障診斷協議棧以及將用戶在Matlab/Simulink環境下搭建的模型關聯到嵌入式系統軟件框架的某個接口,借助RTW Embeded Coder工具將圖形界面翻譯為C代碼,通過BT下載代碼。可根據車型功能需求開發邏輯層,靈活地控制輸入輸出的關系。
通過本文可以快速實現不同車型車身控制器的功能定義、算法仿真以及產品實現,整個過程統一集成在快速原型開發環境內,為用戶提供了一個高效的產品平臺,為一汽商用車車身控制器的平臺化、系列化打下了很好的基礎,并取得一定的經濟效益成果。
[1] 陳婷,張烈平.基于MATLAB/RTW的實時控制器快速開發方法的研究[J].科學技術與工程,2008(17) :5071-5074.
[2] 余新栓.基于Matlab的STM32軟件快速開發方法[J].單片機嵌入式系統應用,2011,11(10):46-48.
[3] 任書明,揭金良,石開強.基于Simulink/Stateflow模型的嵌入式軟件開發研究[J].福建電腦,2008(1):79-80.
[4] 張永博,沈勇.基于Simulink 的OSEK嵌入式軟件開發方法[J],單片機嵌入式系統應用,2009(5):21-24.