張 輝,蘇朋軍,孫連明,趙立安
(1.中國第一汽車股份有限公司技術(shù)中心,吉林 長春 130011;2.北京經(jīng)緯恒潤科技有限公司,北京 100191)
目前汽車技術(shù)發(fā)展的主要推動力是汽車電子電氣技術(shù),國內(nèi)整車廠(尤其商用車)都在不斷地深化電子電氣技術(shù)在自主車型上的應(yīng)用。其中,整車廠除了利用供應(yīng)商資源進(jìn)行合作開發(fā)之外,同時也在建立自主的開發(fā)能力。
車身控制器是整車電子電氣架構(gòu)中重要的控制部件,涉及整車電氣系統(tǒng)的功能分配、控制邏輯等等,國內(nèi)外很多整車廠也將車身控制器作為一個重要部件自行開發(fā)。開發(fā)模式是供應(yīng)商提供硬件和基礎(chǔ)軟件,整車廠進(jìn)行應(yīng)用層軟件開發(fā),并針對不同車型進(jìn)行產(chǎn)品系列化。尤其在商用車領(lǐng)域,針對商用車車型多、批量小的特點(diǎn),為了實(shí)現(xiàn)零部件的成本最優(yōu),需要針對不同車型,設(shè)計應(yīng)用同一款車身控制器產(chǎn)品能應(yīng)用到盡可能多的車型。
另外針對當(dāng)前產(chǎn)品開發(fā)的模式,充分借鑒國際上流行的基于模型的開發(fā)方法,利用現(xiàn)有的建模仿真工具(Matlab/Simulink/Stateflow)直接進(jìn)行應(yīng)用軟件設(shè)計,同時完成仿真測試等,然后利用Matlab自帶的代碼生成工具(Embedded Coder)生產(chǎn)C代碼,結(jié)合車身控制器所選芯片的編譯器,生成特定的可執(zhí)行代碼,完成在產(chǎn)品上的應(yīng)用。目前,Matlab工具支持產(chǎn)品級的代碼生成,并且已經(jīng)成為了汽車行業(yè)內(nèi)的標(biāo)準(zhǔn)編程工具。本文也是基于Matlab的使用,開發(fā)出針對于商用車的車身控制器應(yīng)用環(huán)境,用于整車廠進(jìn)行產(chǎn)品軟件開發(fā),供給不同的車型使用。
本文提及的商用車車身控制器是針對一汽商用車應(yīng)用設(shè)計的一款產(chǎn)品,硬件資源需求如表1所示。
表1 商用車車身控制器資源需求
表1可以滿足當(dāng)前一汽商用車的全系列車型的資源需求,可以在此基礎(chǔ)上進(jìn)行不同車型應(yīng)用車身控制器的系列化和平臺化。車身控制器部件為24 V系統(tǒng),用于實(shí)現(xiàn)燈光系統(tǒng)(如轉(zhuǎn)向燈、前照燈、霧燈、位置燈和室內(nèi)燈等)控制、刮水系統(tǒng)控制,各種傳感器信號以及開關(guān)信號的采集,同時實(shí)現(xiàn)底盤CAN、舒適CAN的報文和信號路由,支持標(biāo)準(zhǔn)的UDS診斷,支持CCP標(biāo)定配置,支持OSEK NM,支持LIN通信功能、BT功能等等。
在硬件設(shè)計方案方面,包括主控MCU、信號采集電路、電源管理電路、硬件驅(qū)動電路以及CAN、LIN通信電路等。軟件由硬件驅(qū)動程序、故障診斷協(xié)議棧、嵌入式系統(tǒng)軟件框架、接口程序以及Matlab/Simulink環(huán)境下的一套圖形界面構(gòu)成。通過Matlab/Simulink環(huán)境下的圖形界面可以配置輸入接口模式、輸出控制口模式以及系統(tǒng)功能等,在Matlab/Simulink環(huán)境下搭建模型,借助RTW Embeded Coder工具將圖形界面翻譯為C代碼,借助Codewarrior IDE及其編譯器將C代碼翻譯為機(jī)器碼,最終通過BT下載機(jī)器碼,形成最終產(chǎn)品狀態(tài)。
車身控制器是整車電子電氣架構(gòu)中非常重要的零部件,主要控制車身上的燈具和電機(jī)等負(fù)載,同時采集相關(guān)的開關(guān)以及傳感器信號,集中進(jìn)行信息分析處理,并通過CAN總線進(jìn)行信息交互。針對商用車車身控制器的結(jié)構(gòu)特點(diǎn),硬件系統(tǒng)定義如圖1所示。
圖1 硬件系統(tǒng)定義
根據(jù)輸入輸出資源的要求、數(shù)量及性能的定義,選擇原Freescale公司的32 bit芯片MPC5604B作為系統(tǒng)CPU,主要的資源包括:主頻:64 MHz;Flash :512 Kbyte;RAM :32 Kbyte;EEPROM: 64 Kbyte;CAN:3路;AD(10 bit):36路。
系統(tǒng)的開關(guān)量輸入提供上拉配置和下拉配置,硬件方案如圖2所示。
圖2 開關(guān)量配置方案
系統(tǒng)的模擬量輸入同時提供電壓信號輸入和電阻信號輸入。針對電壓信號,硬件方案如圖3所示。
系統(tǒng)提供低端驅(qū)動輸出,按照功能需求選用INFINEON公司的集成式低端輸出MOS驅(qū)動芯片,驅(qū)動電流約1A。硬件方案如圖4所示。
圖3 電壓信號硬件方案
圖4 低端驅(qū)動硬件方案
系統(tǒng)提供高端驅(qū)動輸出,同時需要對輸出負(fù)載的狀態(tài)進(jìn)行故障診斷,按照功能需求選用ST公司的智能MOS功率驅(qū)動芯片,根據(jù)不同的功率大小設(shè)置進(jìn)行系列選型。硬件方案如圖5所示。
圖5 高端驅(qū)動硬件方案
CAN收發(fā)器方面選型NXP公司的TJA1042,CAN通信接口電路硬件方案如圖6所示。
LIN收發(fā)器選型NXP公司的TJA1021,24 V-LIN總線接口電路硬件方案如圖7所示。
圖6 CAN通信接口電路
圖7 LIN通信接口電路
圖8 傳統(tǒng)的嵌入式軟件開發(fā)流程
傳統(tǒng)的軟件開發(fā)模式如圖8所示,直接在嵌入式芯片上進(jìn)行算法的設(shè)計驗(yàn)證,存在著開發(fā)周期長、調(diào)試環(huán)境不友好等各方面的問題。
而新興的開發(fā)模式如圖9所示。借助Matlab仿真工具(Simulink/Stateflow),首先在仿真環(huán)境下進(jìn)行算法的仿真、驗(yàn)證,然后再利用其RTW及Embedded Coder直接將算法模型生成C語言代碼,所見即所得,快速、便捷、可靠,本論文也是利用此工具進(jìn)行實(shí)現(xiàn)。將車身控制器所需的底層驅(qū)動、I/O輸入輸出、總線接口通信等接口代碼封裝成Simulink下面的模型庫,可以直接將算法模型和驅(qū)動模型連接,為最終產(chǎn)品代碼的生成做準(zhǔn)備。
圖9 新興的嵌入式軟件開發(fā)流程
車身控制器的軟件總體框架如圖10所示,標(biāo)準(zhǔn)通用模塊需要供應(yīng)商開發(fā)并封裝成Simulink模型庫,應(yīng)用層軟件進(jìn)行設(shè)計由整車廠工程師完成,BootLoader部分是實(shí)現(xiàn)燒錄入車身控制器底層的引導(dǎo)程序,主要負(fù)責(zé)在上位機(jī)生成可執(zhí)行代碼之后,通過Bootloader可以將代碼引導(dǎo)入車身控制器內(nèi)部存儲器上,從而實(shí)現(xiàn)最新應(yīng)用代碼的更新。
圖10 軟件總體框架
本文的主要工作就是實(shí)現(xiàn)車身控制器各個底層驅(qū)動模塊程序的設(shè)計及封裝,然后完成和CPU-MPC5604B編譯器的鏈接,直接實(shí)現(xiàn)可執(zhí)行代碼的生成。
GPIO模塊,是CPU底層驅(qū)動的基本模塊。根據(jù)功能使用的不同,劃分為3個類別。①Digital Input模塊:主要用于MCU管腳作為普通I/O功能的輸入狀態(tài)的采集;②Digital Output模塊:主要用于MCU管腳作為普通I/O功能輸出狀態(tài)的控制;③PWM Output模塊:主要用于MCU管腳配置為EMIOS功能且作為PWM輸出功能的控制。
在Simulink中封裝接口示例如圖11所示。
圖11 模型示例(I/O示例)
雙擊點(diǎn)開GUI配置參數(shù)界面如圖12所示,可以設(shè)置輸入、輸出、PWM等配置參數(shù),從而實(shí)現(xiàn)不同的應(yīng)用選型。
圖12 GPIO接口示例(輸入)
AD采集模塊主要負(fù)責(zé)采集模擬量開關(guān)或是模擬量傳感器信號,其Simulink模型示例如圖13所示。
圖13 示例模型
把ADC GetValue模塊拖到目標(biāo)模型中,雙擊打開ADC GetValue模塊的配置界面,在Channel項(xiàng)選擇目標(biāo)通道,即可完成不同通道信號采集的設(shè)置,如圖14所示。
圖14 ADC GetValue配置界面
中斷控制在車身控制器軟件設(shè)計中用于休眠喚醒(開關(guān)輸入喚醒或是傳感器喚醒)或是實(shí)時性控制(信號觸發(fā)要求控制立刻響應(yīng)某個控制功能,或是用它來觸發(fā)一個Function-Call System模塊),如圖15所示。
圖15 中斷控制配置界面
針對外部中斷源,需要在GUI中的Ports模塊中配置將要控制管腳的參數(shù),主要參數(shù)包括:中斷來源的管腳(Assignment)、中斷的方向?qū)傩裕―irection)、初始電平屬性(Initial Level),如圖16所示。
圖16 Ports模塊配置示例界面
關(guān)于CAN總線,MPC5604B共有3個模塊:CAN接收模塊主要接收數(shù)據(jù)進(jìn)行處理,CAN發(fā)送模塊主要完成CAN的發(fā)送功能,以及CAN配置模塊。
雙擊打開GUI界面上的CAN配置模塊,選擇需要使能的CAN通道,其它參數(shù)需要進(jìn)行配置,如圖17所示。
圖17 CAN模塊配置界面
用戶自定義接收模塊的用法為:把CAN Receive Fun模塊拖到目標(biāo)模型中,使其觸發(fā)一個Function-Call Subsystem模塊,配置接收的信息,接收信息需要和CAN BUS協(xié)議中配置的自定義接收信息一致,如圖18所示。
MCU模塊主要完成對芯片工作的晶振和系統(tǒng)工作頻率進(jìn)行配置,如圖19所示。
除此之外,還需要完成SPI、SCI、定時器、看門狗的應(yīng)用封裝。這些底層驅(qū)動程序都是在MCU上進(jìn)行驗(yàn)證過的代碼,確認(rèn)工作可靠,然后完成在Matlab下面的Simulink模塊封裝。
圖18 CAN Receive Fun示意界面
圖19 MCU模塊配置示例界面
針對車身控制器的產(chǎn)品開發(fā),除硬件和軟件開發(fā)環(huán)境設(shè)計外,還需要通過實(shí)際樣件的試制、調(diào)試和軟件測試,實(shí)現(xiàn)以下功能:①通過Simnulink進(jìn)行控制邏輯模型的開發(fā);②在Matlab環(huán)境中的RTW工具直接進(jìn)行C代碼生成;③通過CodeWarrior完成針對C代碼的編譯形成機(jī)器碼;④通過車身控制器內(nèi)部的Bootlaoder程序,利用CANape軟件實(shí)現(xiàn)軟件下載。
通過在試驗(yàn)室環(huán)境臺架的測試驗(yàn)證,整個開發(fā)環(huán)境實(shí)現(xiàn)了預(yù)期的功能目標(biāo),整個開發(fā)過程工作可靠,可以用于產(chǎn)品軟件的開發(fā)。
本文主要論述基于模型的車身控制器產(chǎn)品設(shè)計實(shí)現(xiàn),該車身控制器產(chǎn)品基于Freescale的MPC5604B芯片為平臺的完整系統(tǒng),由硬件驅(qū)動程序、故障診斷協(xié)議棧、嵌入式系統(tǒng)軟件框架和接口程序以及Matlab/Simulink環(huán)境下的一套圖形界面構(gòu)成。通過Matlab/Simulink環(huán)境下的圖形界面,可以配置驅(qū)動程序、故障診斷協(xié)議棧以及將用戶在Matlab/Simulink環(huán)境下搭建的模型關(guān)聯(lián)到嵌入式系統(tǒng)軟件框架的某個接口,借助RTW Embeded Coder工具將圖形界面翻譯為C代碼,通過BT下載代碼??筛鶕?jù)車型功能需求開發(fā)邏輯層,靈活地控制輸入輸出的關(guān)系。
通過本文可以快速實(shí)現(xiàn)不同車型車身控制器的功能定義、算法仿真以及產(chǎn)品實(shí)現(xiàn),整個過程統(tǒng)一集成在快速原型開發(fā)環(huán)境內(nèi),為用戶提供了一個高效的產(chǎn)品平臺,為一汽商用車車身控制器的平臺化、系列化打下了很好的基礎(chǔ),并取得一定的經(jīng)濟(jì)效益成果。
[1] 陳婷,張烈平.基于MATLAB/RTW的實(shí)時控制器快速開發(fā)方法的研究[J].科學(xué)技術(shù)與工程,2008(17) :5071-5074.
[2] 余新栓.基于Matlab的STM32軟件快速開發(fā)方法[J].單片機(jī)嵌入式系統(tǒng)應(yīng)用,2011,11(10):46-48.
[3] 任書明,揭金良,石開強(qiáng).基于Simulink/Stateflow模型的嵌入式軟件開發(fā)研究[J].福建電腦,2008(1):79-80.
[4] 張永博,沈勇.基于Simulink 的OSEK嵌入式軟件開發(fā)方法[J],單片機(jī)嵌入式系統(tǒng)應(yīng)用,2009(5):21-24.