李洋,李鴻強(qiáng),陳弘,孟永強(qiáng),劉芳舒
(1天津工業(yè)大學(xué)電子與信息工程學(xué)院,天津 300387;2中國(guó)汽車技術(shù)研究中心,天津 300162)
CAN總線憑借其可靠性、實(shí)時(shí)性和靈活性等優(yōu)勢(shì),已經(jīng)成為純電動(dòng)汽車車載總線的主流,但由于CAN只定義了物理層及數(shù)據(jù)鏈路層,用戶必須要自定義應(yīng)用層的協(xié)議[1-3],這不僅帶給用戶相當(dāng)多的困難,而且使不同廠商間的CAN設(shè)備彼此無法互通,不利于純電動(dòng)汽車的快速發(fā)展。因此,研究適用于純電動(dòng)汽車車載網(wǎng)絡(luò)的應(yīng)用層協(xié)議具有重要意義。
CANopen協(xié)議是由Bosch領(lǐng)導(dǎo)開發(fā)的一種CAN應(yīng)用層協(xié)議[4-5],可作為車載網(wǎng)絡(luò)應(yīng)用層協(xié)議。國(guó)內(nèi)外關(guān)于CANopen協(xié)議的研究主要集中于CANopen網(wǎng)絡(luò)的設(shè)計(jì)和CANopen協(xié)議棧的實(shí)現(xiàn)兩方面。孔峰等[6]提出采用CANopen作為汽車控制網(wǎng)絡(luò)的應(yīng)用層協(xié)議;Gh.Livint等[7]提出將CANopen協(xié)議應(yīng)用于混合動(dòng)力汽車分布式總線控制,實(shí)現(xiàn)了不同廠商的CAN設(shè)備采用CANopen協(xié)議互相通信;Xu等[8]將CANopen協(xié)議應(yīng)用于混合動(dòng)力電動(dòng)汽車車載網(wǎng)絡(luò),提出了動(dòng)力總線單元CANopen從站的設(shè)計(jì)方案;劉怡[9]等以C8051F500單片機(jī)為控制核心的開發(fā)平臺(tái)上建立了CANopen協(xié)議棧;徐喆等[10]提出了一種利用開源代碼CAN-festival在MC9S12XDP512平臺(tái)上實(shí)現(xiàn)CANopen網(wǎng)絡(luò)從節(jié)點(diǎn)的新方法,并將CANfestival移植到實(shí)時(shí)操作系統(tǒng)uC/OS-Ⅱ上。
目前關(guān)于純電動(dòng)汽車車門車窗控制系統(tǒng)的應(yīng)用層協(xié)議研究較少,因此,本文針對(duì)純電動(dòng)汽車車門車窗控制系統(tǒng),制定了其CANopen應(yīng)用層協(xié)議并在WinCE5.0操作系統(tǒng)上開發(fā)了CANopen協(xié)議棧,采用CANoe軟件實(shí)現(xiàn)了CANopen協(xié)議測(cè)試。
CANopen協(xié)議定義的設(shè)備模型由通訊子層、對(duì)象字典、應(yīng)用子層組成。通訊子層接口定義了網(wǎng)絡(luò)管理報(bào)文對(duì)象(NMT)、過程數(shù)據(jù)對(duì)象(PDO)、服務(wù)數(shù)據(jù)對(duì)象(SDO)、特殊功能對(duì)象4種通訊對(duì)象函數(shù),用來在底層傳輸數(shù)據(jù)。對(duì)象字典由16位主索引和8位子索引構(gòu)成,包括所有影響通訊接口、應(yīng)用、狀態(tài)機(jī)行為的數(shù)據(jù)信息,是CANopen的核心內(nèi)容[11-12]。應(yīng)用子層由用戶編寫,包括功能和通信二部分,通信部分通過對(duì)對(duì)象字典進(jìn)行操作實(shí)現(xiàn)CANopen通信,而功能部分由用戶根據(jù)應(yīng)用要求實(shí)現(xiàn)。
純電動(dòng)汽車車門車窗控制系統(tǒng)包括中央、左前門、右前門、左后門、右后門5個(gè)電子控制單元。每一電子控制單元的控制對(duì)象主要為車窗和門鎖,其中左前門和右前門電子控制單元的控制對(duì)象還分別有對(duì)左后視鏡和右后視鏡的控制。
中央電子控制單元是整個(gè)車門車窗控制系統(tǒng)的控制核心,為CANopen主站,管理整個(gè)車門車窗控制系統(tǒng),其余電子控制單元為CANopen從站。中央電子控制單元通過NMT服務(wù)控制其他4個(gè)電子控制單元的狀態(tài)。NMT主節(jié)點(diǎn)的對(duì)象字典條目由索引1F80H到1F9FH來定義。
中央電子控制單元通過服務(wù)數(shù)據(jù)對(duì)象SDO報(bào)文對(duì)CANopen網(wǎng)絡(luò)上的其余電子控制單元進(jìn)行參數(shù)配置。SDO客戶端由對(duì)象字典中1280h-12FFh來定義,SDO服務(wù)器由對(duì)象字典中1200h-127Fh來定義。各電子控制單元SDO定義如表1所示。
中央電子控制單元和其余電子控制單元通過過程數(shù)據(jù)對(duì)象PDO報(bào)文用來傳輸實(shí)時(shí)數(shù)據(jù),數(shù)據(jù)傳送限制在1到8個(gè)字節(jié)。PDO包括TPDO和RPDO 2種。TPDO用于發(fā)送報(bào)文,RPDO用于接收?qǐng)?bào)文,一個(gè)TPDO對(duì)應(yīng)一個(gè)RPDO。中央電子控制單元接收其余電子控制單元的狀態(tài),并發(fā)送控制命令,其余電子控制單元發(fā)送本地命令和狀態(tài)。根據(jù)車門車窗控制需求,中央和左前電子控制單元PDO報(bào)文定義見表2、表3,其余電子控制單元和左前電子單元的類似。
表1 各電子控制單元SDO定義Tab.1 Every electronic control unit SDO definition
表2 中央電子控制單元PDO定義Tab.2 The central electronic control unit PDO
表3 左前門電子控制單元PDO定義Tab.3 Left front door electronic control unit PDO
采用廣州致遠(yuǎn)電子有限公司的EPC-8900I-W嵌入式硬件平臺(tái)設(shè)計(jì)CANopen協(xié)議棧,EPC-8900I-W采用XScale系列PXA270,其操作系統(tǒng)為WinCE5.0,采用VS2005開發(fā)控制臺(tái)應(yīng)用程序?qū)崿F(xiàn)CANopen通訊功能。
CANopen通訊主程序流程為:系統(tǒng)啟動(dòng)后首先初始化CAN通訊參數(shù),然后從站發(fā)送啟動(dòng)報(bào)文,進(jìn)入預(yù)操作狀態(tài)并運(yùn)行狀態(tài)機(jī),然后開啟接收數(shù)據(jù)線程,收到報(bào)文后通過canDispatch()報(bào)文分發(fā)函數(shù)來處理報(bào)文。根據(jù)CANopen通信協(xié)議,分析從緩沖區(qū)取出的報(bào)文屬于哪一種報(bào)文,之后進(jìn)入相應(yīng)的報(bào)文處理程序。下面詳細(xì)介紹CANopen協(xié)議棧中讀寫對(duì)象字典、NMT狀態(tài)控制、SDO快速傳送和PDO報(bào)文的處理過程。
對(duì)象字典是CANopen協(xié)議中最重要的部分,它包含了設(shè)備描述及設(shè)備網(wǎng)絡(luò)狀態(tài)的所有參數(shù)。此外,在編輯對(duì)象字典時(shí),采用CANfestival提供的對(duì)象字典編輯器來簡(jiǎn)便而高效地進(jìn)行操作。
對(duì)象字典的讀寫流程圖如圖1所示。
NMT報(bào)文由主站發(fā)出,從節(jié)點(diǎn)通過接收主節(jié)點(diǎn)發(fā)送的NMT命令報(bào)文進(jìn)行狀態(tài)之間的轉(zhuǎn)換。從節(jié)點(diǎn)接收到NMT報(bào)文的處理流程圖如圖2所示。NMT命令包括啟動(dòng)節(jié)點(diǎn)指示、進(jìn)入預(yù)操作狀態(tài)指示、停止節(jié)點(diǎn)指示、復(fù)位通信指示和復(fù)位節(jié)點(diǎn)指示。從節(jié)點(diǎn)判斷NMT命令并進(jìn)行相應(yīng)狀態(tài)轉(zhuǎn)換。
圖1 讀寫對(duì)象字典流程Fig.1 Processes of reading and writing object dictionary
圖2 NMT報(bào)文的處理流程圖Fig.2 Processing flow chart of NMT packet
SDO報(bào)文用于對(duì)CANopen網(wǎng)絡(luò)上的設(shè)備進(jìn)行參數(shù)配置。SDO通過使用主索引和子索引,訪問設(shè)備對(duì)象字典中的對(duì)象。
SDO有快速傳送和分段傳送2種傳送機(jī)制??焖賯魉妥疃鄠鬏?字節(jié)數(shù)據(jù),分段傳送傳輸數(shù)據(jù)長(zhǎng)度大于4字節(jié)。本文主要實(shí)現(xiàn)SDO快速傳送功能??焖賯魉桶焖偕蟼骱涂焖傧螺d。首先SDO客戶端判斷報(bào)文ID是否與本地對(duì)象字典存儲(chǔ)的ID相同,然后讀取SDO報(bào)文命令字,開始進(jìn)行下載或上傳。在下載或上傳過程中通過讀取報(bào)文第1到第3字節(jié)數(shù)據(jù)獲取目標(biāo)主索引和字索引,并且對(duì)象字典和發(fā)送報(bào)文之間通過數(shù)據(jù)緩存區(qū)來傳遞數(shù)據(jù)。
SDO快速傳送流程圖如圖3所示。
圖3 SDO快速傳送流程圖Fig.3 Flow chart of SDO transmission
PDO報(bào)文的處理就是根據(jù)接收到PDO報(bào)文的通訊參數(shù)和映射參數(shù)解析報(bào)文,將報(bào)文中的數(shù)據(jù)保存至對(duì)象字典的對(duì)應(yīng)位置。
PDO報(bào)文的處理流程圖如圖4所示。
圖4 PDO報(bào)文處理流程圖Fig.4 Processing flow chart of PDO packet
其主要流程如下:
首先遍歷本地對(duì)象字典PDO通訊參數(shù)字索引01h內(nèi)容,判斷是否為本地RPDO報(bào)文ID,如果為本地RPDO,讀取相應(yīng)映射參數(shù)0x00子索引獲得映射的個(gè)數(shù)mappcount,然后依次讀取mappcount個(gè)子索引的值定位到標(biāo)準(zhǔn)數(shù)據(jù)區(qū),根據(jù)將報(bào)文數(shù)據(jù)寫入相應(yīng)數(shù)據(jù)區(qū)。
CANoe是一個(gè)德國(guó)Vector公司開發(fā)的CAN總線仿真軟件,具有網(wǎng)絡(luò)仿真、監(jiān)測(cè)和分析的功能,其組件CANoe和CANopen為開發(fā)、規(guī)劃及測(cè)試CANopen設(shè)備和網(wǎng)絡(luò)系統(tǒng)方面提供了有效的幫助。CANoe軟件可以支持全仿真、半實(shí)物仿真和全實(shí)物仿真[13]。本文利用CANoe進(jìn)行半實(shí)物仿真以驗(yàn)證設(shè)計(jì)的CANopen協(xié)議棧。
設(shè)計(jì)的CANopen主站控制界面如圖5所示。
圖5 CANopen主站控制界面Fig.5 CANopen master station control interface
根據(jù)CANopen協(xié)議定義,主站實(shí)現(xiàn)NMT啟動(dòng)節(jié)點(diǎn)、停止節(jié)點(diǎn)、進(jìn)入預(yù)操作狀態(tài)、復(fù)位節(jié)點(diǎn)和復(fù)位通信,發(fā)送心跳檢測(cè)報(bào)文、發(fā)送同步報(bào)文、SDO上傳和下載、發(fā)送PDO報(bào)文。
CANoe的CANcaseXL卡提供了CAN接口,必須注意的是,配置的CANoe接口的波特率須與EPC-8900I-W嵌入式硬件平臺(tái)CAN的波特率相同,否則CANoe和EPC-8900I-W不能通訊。本研究CAN通訊速率為250kb/s。
整體實(shí)驗(yàn)平臺(tái)如圖6所示,PC為CANopen主站,EPC-8900I-W嵌入式硬件平臺(tái)為左前門電子控制單元實(shí)現(xiàn)CANopen從站功能。
如圖7所示,通過CANoe的Trace窗口可以查看到報(bào)文。
圖6 主從站實(shí)驗(yàn)測(cè)試平臺(tái)Fig.6 Master-slave experimental test platform
圖7 通過Trace窗口查看報(bào)文Fig.7 View the message through the Trace window
首先,從站啟動(dòng)發(fā)送啟動(dòng)報(bào)文,其報(bào)文ID為0X710;接著主站發(fā)送SDO上傳報(bào)文讀取從站主索引1400子索引01的數(shù)據(jù)內(nèi)容,即從站RPDO1的報(bào)文ID;從站收到SDO報(bào)文后,發(fā)送響應(yīng)報(bào)文,上傳數(shù)據(jù);主站發(fā)送SDO下載報(bào)文設(shè)置從站RPDO1的報(bào)文ID為0X181;從站收到命令,發(fā)送下載成功響應(yīng)報(bào)文;然后主站發(fā)送啟動(dòng)節(jié)點(diǎn)報(bào)文,這時(shí)從站可以接收并發(fā)送所有通訊報(bào)文;主站發(fā)送TPDO1報(bào)文;主站讀取從站RPO1報(bào)文數(shù)據(jù)區(qū)內(nèi)容,可以驗(yàn)證PDO通訊。觀測(cè)結(jié)果顯示實(shí)現(xiàn)了NMT、SDO、PDO報(bào)文通訊。
1)設(shè)計(jì)了純電動(dòng)汽車車門車窗控制系統(tǒng)CANopen協(xié)議,定義了各電子控制單元NMT、SDO、PDO報(bào)文ID和報(bào)文內(nèi)容等參數(shù)。
2)基于WinCE5.0嵌入式硬件平臺(tái)上開發(fā)了CANopen協(xié)議棧,實(shí)現(xiàn)了NMT、SDO、PDO報(bào)文通訊。
3)通過CANoe軟件設(shè)計(jì)了CANopen主站管理界面,實(shí)現(xiàn)了CANopen主從通訊,結(jié)果表明設(shè)計(jì)的CANopen協(xié)議棧具有很好的實(shí)時(shí)性,能較好的滿足純電動(dòng)汽車車門車窗控制系統(tǒng)實(shí)際控制需求。
[1]韓江洪,劉征宇,崔世輝等.混合動(dòng)力汽車CAN網(wǎng)絡(luò)通信協(xié)議的應(yīng)用研究[J].汽車工程,2011,33(12):1062-1066.
[2]劉陽,馬蓉,曹衛(wèi)彬,等.基于ISO11783的拖拉機(jī)導(dǎo)航系統(tǒng)CAN節(jié)點(diǎn)設(shè)計(jì)[J].石河子大學(xué)學(xué)報(bào):自然科學(xué)版,2011,29(5):641-644.
[3]齊向?qū)帲苄l(wèi)彬.精量播種機(jī)監(jiān)測(cè)系統(tǒng)的設(shè)計(jì)[J].石河子大學(xué)學(xué)報(bào):自然科學(xué)版,2011,29(4):505-508.
[4]黃智,王科,楊沿平.車身舒適系統(tǒng)總線協(xié)議研究[J].汽車工程,2009,31(4):331-335.
[5]閆在春,程夕明,南金瑞,等.燃料電池客車CAN通信協(xié)議仿真[J].系統(tǒng)仿真學(xué)報(bào),2006,18(9):2381-2385.
[6]孔峰,張衡,宋雪樺,等.基于CANopen協(xié)議的汽車控制網(wǎng)絡(luò)初探[J].汽車工程,2007,29(7):594-596.
[7]Gh.Livint,V Horga,M R~atoi,et al.Implementing the CANopen Protocol for the Distributed Control of a Hybrid Electric Vehicle[C]//IEEE ELECTROMOTION,2009.-EPE Chapter'Electric Drives'Joint Symposium.July 1-3,2009,1-6.
[8]Xu Zhe,Dong Shifeng.The Design and Implementation of a CANopen Slave Stack for Powertrain Controller in Hybrid Electric Vehicle[C]//Proc.of International Conference on Intelligent Computation Technology and Automation.[S.l.]:IEEE Press,2010:755-758.
[9]劉 怡,王家樂,CANopen從站協(xié)議的設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù)設(shè)計(jì)與應(yīng)用,2011,38(9):38-40.
[10]徐喆,張卓,閆士珍.基于uC/OS-II的 CANopen從節(jié)點(diǎn)的實(shí)現(xiàn)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2008(7):113-118.
[11]郭利進(jìn),王化祥,龔進(jìn)峰.基于CAN總線的車身網(wǎng)絡(luò)系統(tǒng)及其控制策略研究[J].汽車工程,2006,28(8):774-778.
[12]葉愛兵,鄭華耀,陳巨濤.基于CANopen的協(xié)議分析系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].揚(yáng)州大學(xué)學(xué)報(bào):自然科學(xué)版,2009,12(3):53-56.
[13]郭宏志,陳虹,宋同好,等.嵌入CAN節(jié)點(diǎn)的汽車電子節(jié)氣門仿真系統(tǒng)[J].系統(tǒng)仿真學(xué)報(bào),2009,21(8):5716-5719.