李 芳,宋 偉,陳燕梅
(南京依維柯汽車有限公司產(chǎn)品工程部,江蘇 南京 210028)
OSEK(德文:OffeneSystemeand deren Schnittstellen fur die Elektronik im Kraftfahr-zeug)體系是1993年德國汽車工業(yè)界提出的,其含義是汽車電子開放式系統(tǒng)及其接口。這個(gè)體系的最早倡導(dǎo)者有:寶馬、博世、戴姆勒克萊斯勒、歐寶、西門子、大眾和卡爾魯斯厄大學(xué)的工業(yè)信息技術(shù)研究所。法國的汽車制造商標(biāo)致和雷諾于1994年加入了OSEK體系,并將法國汽車工業(yè)使用的汽車分布式運(yùn)行系統(tǒng) (Vehicle Distributed Ex-ecutivr,VDX)也納入這一體系。
在1995年召開的研討會(huì)上,眾多汽車廠商對(duì)OSEK和VDX的認(rèn)識(shí)達(dá)成了共識(shí),產(chǎn)生了OSEK/VDX規(guī)范,OSEK網(wǎng)絡(luò)管理 (OSEK Net Management,OSEK NM) 只是OSEK/VDX規(guī)范中的一部分[1], 以下是基于南京依維柯車型對(duì)OSEK管理進(jìn)行闡述。
PD2014 CAN網(wǎng)絡(luò)管理有兩種實(shí)現(xiàn)機(jī)制,即直接網(wǎng)絡(luò)管理和間接網(wǎng)絡(luò)管理,節(jié)點(diǎn)清單見表1,網(wǎng)絡(luò)拓?fù)鋱D如圖1所示。其中ECU根據(jù)其電源情況可分為兩種類型,包括點(diǎn)火鑰匙控制型 (+15電節(jié)點(diǎn))和常電型 (+30電節(jié)點(diǎn))。
+15節(jié)點(diǎn)是指在點(diǎn)火鑰匙處于非OFF檔時(shí)ECU獲得電源,OFF檔時(shí)ECU失去電源。+15節(jié)點(diǎn)的網(wǎng)絡(luò)管理采用間接網(wǎng)絡(luò)管理策略。
表1 節(jié)點(diǎn)清單
+30節(jié)點(diǎn)是指ECU電源不受點(diǎn)火鑰匙控制,點(diǎn)火鑰匙處于OFF檔時(shí)進(jìn)入睡眠狀態(tài)。+30節(jié)點(diǎn)網(wǎng)絡(luò)管理采用直接網(wǎng)絡(luò)管理策略。
+15節(jié)點(diǎn)采用間接網(wǎng)絡(luò)管理策略,在PD2014車型上采用間接網(wǎng)絡(luò)管理的節(jié)點(diǎn)為:EDC,TCU,IMMO,行駛記錄儀,安全氣囊模塊,ESP。
2.1.1 網(wǎng)絡(luò)啟動(dòng)
在網(wǎng)絡(luò)管理中+15節(jié)點(diǎn)具有3種狀態(tài):網(wǎng)絡(luò)非激活狀態(tài) (Network inactive)、網(wǎng)絡(luò)啟動(dòng)狀態(tài) (Network startup)、 網(wǎng)絡(luò)激活狀態(tài) (Network active)。 3種狀態(tài)之間的轉(zhuǎn)換見圖2。
網(wǎng)絡(luò)非激活狀態(tài)向網(wǎng)絡(luò)激活狀態(tài)的轉(zhuǎn)換由IGN OFF到IGN ON的改變引起的。一旦進(jìn)入網(wǎng)絡(luò)啟動(dòng)狀態(tài),節(jié)點(diǎn)須開啟從CAN總線上接收?qǐng)?bào)文的功能;一旦進(jìn)入網(wǎng)絡(luò)激活狀態(tài),節(jié)點(diǎn)須立刻開始傳輸指定的周期性應(yīng)用報(bào)文。
2.1.2 網(wǎng)絡(luò)非激活狀態(tài)
網(wǎng)絡(luò)激活狀態(tài)向網(wǎng)絡(luò)非激活狀態(tài)的轉(zhuǎn)換由IGN ON到IGN OFF的改變引起。在網(wǎng)絡(luò)非激活狀態(tài)下,節(jié)點(diǎn)不允許傳輸應(yīng)用報(bào)文。網(wǎng)絡(luò)激活狀態(tài)到網(wǎng)絡(luò)非激活狀態(tài)的轉(zhuǎn)換時(shí)間 (tShutdownIGN)見表2。
表2 間接網(wǎng)絡(luò)管理定時(shí)參數(shù)
直接網(wǎng)絡(luò)管理是一種自組織形式的網(wǎng)絡(luò)管理,網(wǎng)絡(luò)節(jié)點(diǎn)中沒有主從之分,每個(gè)節(jié)點(diǎn)都被網(wǎng)絡(luò)中其他節(jié)點(diǎn)監(jiān)控,同時(shí)該節(jié)點(diǎn)也監(jiān)控網(wǎng)絡(luò)中的其他節(jié)點(diǎn),在PD2014車型上采用直接網(wǎng)絡(luò)管理的節(jié)點(diǎn)為:儀表和BCM。
2.2.1 邏輯環(huán)
在直接網(wǎng)絡(luò)管理中,網(wǎng)段中節(jié)點(diǎn)通過節(jié)點(diǎn)地址的先后順序依次發(fā)送網(wǎng)絡(luò)管理報(bào)文,這種發(fā)送順序在邏輯上形成一種結(jié)構(gòu),稱之為邏輯環(huán)。邏輯環(huán)中每一個(gè)節(jié)點(diǎn)都具備一個(gè)前任者和后繼者。每個(gè)節(jié)點(diǎn)的前任者和后繼者是通過節(jié)點(diǎn)地址的數(shù)值確定的。邏輯環(huán)中,節(jié)點(diǎn)地址大小的關(guān)系是:前任節(jié)點(diǎn)<本地節(jié)點(diǎn)<后繼節(jié)點(diǎn)。每個(gè)節(jié)點(diǎn)接收到的來自前任者指向自己的環(huán)報(bào)文,之后向自己的后繼者發(fā)送出自己的環(huán)報(bào)文。地址最大的節(jié)點(diǎn)的后繼者是地址最小的節(jié)點(diǎn)。這樣,有規(guī)律地向各自的邏輯后繼者發(fā)送同步環(huán)報(bào)文,以此來監(jiān)控已建立的環(huán),實(shí)現(xiàn)了直接網(wǎng)絡(luò)管理功能,如圖3所示。PD2014車型的邏輯環(huán)如圖4所示,儀表的地址為0x17,BCM的地址為0x21,儀表是BCM的前任者,BCM是儀表的后繼者。
2.2.2 網(wǎng)絡(luò)管理報(bào)文類型
1)Ring報(bào)文 在穩(wěn)定的邏輯環(huán)形成后,環(huán)中的每個(gè)節(jié)點(diǎn)在接收到其前任的Ring報(bào)文后,向后繼者發(fā)送自己的Ring報(bào)文。
2)Alive報(bào)文 網(wǎng)絡(luò)中的節(jié)點(diǎn)初始化完成后,發(fā)送Alive報(bào)文,用于表明有新的節(jié)點(diǎn)加入到網(wǎng)絡(luò)的邏輯環(huán)中。
3)LimpHome報(bào)文 當(dāng)接收/發(fā)送錯(cuò)誤計(jì)數(shù)器超過其閾值或總線出現(xiàn)嚴(yán)重錯(cuò)誤時(shí),節(jié)點(diǎn)進(jìn)入NMLimpHome狀態(tài),并周期發(fā)送LimpHome報(bào)文。
2.2.3 網(wǎng)絡(luò)管理報(bào)文格式
節(jié)點(diǎn)的網(wǎng)絡(luò)管理報(bào)文將和PGN、數(shù)據(jù)長(zhǎng)度一起發(fā)送。網(wǎng)絡(luò)管理報(bào)文的類型都可以通過標(biāo)志位來識(shí)別,此標(biāo)志位是網(wǎng)絡(luò)管理CAN數(shù)據(jù)幀數(shù)據(jù)場(chǎng)的一部分。表3定義了網(wǎng)絡(luò)管理報(bào)文的基本參數(shù)。表4定義了網(wǎng)絡(luò)管理CAN數(shù)據(jù)幀的數(shù)據(jù)場(chǎng)的格式。
表3 網(wǎng)絡(luò)管理報(bào)文基本參數(shù)
以PD2014車型儀表為例,其網(wǎng)絡(luò)管理報(bào)文格式見表5。
表5 儀表報(bào)文格式
2.2.4 直接網(wǎng)絡(luò)管理定時(shí)參數(shù) (表6)
表6 直接網(wǎng)絡(luò)管理定時(shí)參數(shù)
2.2.5 直接網(wǎng)絡(luò)管理策略
網(wǎng)絡(luò)管理策略規(guī)定了節(jié)點(diǎn)網(wǎng)絡(luò)管理報(bào)文的時(shí)序流程,其目的是建立和維護(hù)節(jié)點(diǎn)之間的聯(lián)系。網(wǎng)絡(luò)管理策略只是提供網(wǎng)絡(luò)的狀態(tài)信息,而不同狀態(tài)的控制方法由應(yīng)用程序負(fù)責(zé)。網(wǎng)絡(luò)中各個(gè)節(jié)點(diǎn)狀態(tài)見表7,狀態(tài)之間的轉(zhuǎn)換關(guān)系見圖5。
1)睡眠狀態(tài) 當(dāng)睡眠條件滿足時(shí),節(jié)點(diǎn)需要進(jìn)入睡眠狀態(tài)。通過對(duì)Ring報(bào)文中的:“Sleep indication=1”和 “Sleep acknowledge=1”來切換到睡眠狀態(tài)。
睡眠協(xié)商通過以下步驟完成 (圖6):①睡眠條件滿足后,下一個(gè)要發(fā)送的Ring報(bào)文中的位Sleepindication置1;②當(dāng)Ring報(bào)文在邏輯環(huán)中傳遞一周,并且所有接收Ring報(bào)文中的位Sleep indication都被置1,那么最先發(fā)出Sleep indication=1 Ring報(bào)文的節(jié)點(diǎn)發(fā)送Ring報(bào)文,并將位Sleep acknowledge置1;③所有接收到Sleep acknowledge=1的Ring報(bào)文的節(jié)點(diǎn)停止發(fā)送任何應(yīng)用報(bào)文,所有節(jié)點(diǎn)進(jìn)入到睡眠狀態(tài), 啟動(dòng)定時(shí)器TWaitBusSleep, 在TWaitBusSleep期間, 沒有網(wǎng)絡(luò)啟動(dòng)條件發(fā)生,當(dāng)TWaitBusSleep后總線進(jìn)入非激活狀態(tài)。
表7 節(jié)點(diǎn)狀態(tài)
2)網(wǎng)絡(luò)啟動(dòng) 每個(gè)節(jié)點(diǎn)的啟動(dòng)順序都一樣,見圖7。
圖7表示了節(jié)點(diǎn)A發(fā)生了本地喚醒之后的網(wǎng)絡(luò)啟動(dòng)順序。
①在tNwStartupLocal,A時(shí)間,節(jié)點(diǎn)A能夠接收數(shù)據(jù)。為了喚醒網(wǎng)絡(luò)上的其它節(jié)點(diǎn),節(jié)點(diǎn)A發(fā)送激活報(bào)文。此喚醒報(bào)文開始了節(jié)點(diǎn)B和節(jié)點(diǎn)C的初始化。只要節(jié)點(diǎn)A沒有接收到其它節(jié)點(diǎn)的CAN協(xié)議應(yīng)答,節(jié)點(diǎn)A的CAN控制器將重復(fù)發(fā)送激活報(bào)文 (總線負(fù)載為100%),直到被別的節(jié)點(diǎn)應(yīng)答。
②在節(jié)點(diǎn)A第一次發(fā)送激活報(bào)文之后的tNwStartupRemote,B時(shí)間,節(jié)點(diǎn)B能接收應(yīng)用報(bào)文。節(jié)點(diǎn)B接收激活報(bào)文,同時(shí)CAN控制器進(jìn)行應(yīng)答。節(jié)點(diǎn)A的CAN控制器停止重復(fù)發(fā)送激活報(bào)文。
③節(jié)點(diǎn)C比節(jié)點(diǎn)B的啟動(dòng)過程要慢。它沒有接收到節(jié)點(diǎn)A的激活報(bào)文,在節(jié)點(diǎn)A第一次發(fā)送的激活報(bào)文之后的tNwStartupRemote,C時(shí)間,節(jié)點(diǎn)C也可以接收應(yīng)用報(bào)文。
④節(jié)點(diǎn)B在tNwStartupRemote,B時(shí)間, 節(jié)點(diǎn)C在tNwStartupRemote,C時(shí)間分別發(fā)送各自的激活報(bào)文,但是這些報(bào)文不影響網(wǎng)絡(luò)的啟動(dòng)行為。
⑤tNwActive,A時(shí)間之后,節(jié)點(diǎn)A從網(wǎng)絡(luò)啟動(dòng)狀態(tài)轉(zhuǎn)移到網(wǎng)絡(luò)激活狀態(tài)。這是節(jié)點(diǎn)A最早可以發(fā)送應(yīng)用報(bào)文的時(shí)間,因?yàn)橹辽僭诖藭r(shí),所有的節(jié)點(diǎn)能夠接收應(yīng)用報(bào)文。此時(shí),節(jié)點(diǎn)A允許發(fā)送包含導(dǎo)致網(wǎng)絡(luò)喚醒的信號(hào)信息的應(yīng)用報(bào)文。
3)激活狀態(tài) 在激活狀態(tài)下,節(jié)點(diǎn)主要在“邏輯環(huán)”中進(jìn)行Ring報(bào)文的接收和發(fā)送。
4)跛行狀態(tài) 跛行狀態(tài)表明網(wǎng)絡(luò)通信存在故障。進(jìn)入跛行狀態(tài)的前提條件:NM報(bào)文發(fā)送失??;在TMax時(shí)間內(nèi)沒有收到有效的Ring報(bào)文。
當(dāng)以上情況的發(fā)生使得網(wǎng)絡(luò)管理計(jì)數(shù)器NMRxcount、NMTxcount的數(shù)值超過各自的閾值NNm-RxLimit、NNmTxLimit時(shí),節(jié)點(diǎn)進(jìn)入跛行狀態(tài)。跛行狀態(tài)下,節(jié)點(diǎn)以Terror周期地發(fā)送LimpHome報(bào)文,使得網(wǎng)絡(luò)上的所有節(jié)點(diǎn)仍然能夠監(jiān)聽到它。接收到LimpHome報(bào)文的節(jié)點(diǎn)應(yīng)更新自身網(wǎng)絡(luò)的LimpHome配置。當(dāng)總線進(jìn)入睡眠或接收到任意一條NM報(bào)文后,LimpHome狀態(tài)結(jié)束。
PD2014網(wǎng)絡(luò)管理測(cè)試主要包括:3輪臺(tái)架測(cè)試,2輪labcar集成測(cè)試,2輪在車測(cè)試,1輪EMC測(cè)試,4輪道路試驗(yàn)。
每輪測(cè)試包括間接網(wǎng)絡(luò)管理測(cè)試和直接網(wǎng)絡(luò)管理測(cè)試。間接網(wǎng)絡(luò)管理測(cè)試包括網(wǎng)絡(luò)啟動(dòng)性能測(cè)試、網(wǎng)絡(luò)停止性能測(cè)試。直接網(wǎng)絡(luò)管理測(cè)試包括正常網(wǎng)絡(luò)管理通信測(cè)試、網(wǎng)絡(luò)喚醒和睡眠測(cè)試、電源電壓情況測(cè)試、網(wǎng)絡(luò)啟動(dòng)測(cè)試、網(wǎng)絡(luò)關(guān)閉測(cè)試、跛行狀態(tài)下節(jié)點(diǎn)收發(fā)能力測(cè)試、網(wǎng)絡(luò)管理配置測(cè)試。下面以直接網(wǎng)絡(luò)管理中的睡眠測(cè)試為例,介紹網(wǎng)絡(luò)管理臺(tái)架測(cè)試的方法。
1)測(cè)試設(shè)備 筆記本電腦PC,CANcardXL(包含CANcab),插接件若干 (DB9轉(zhuǎn)接頭、OBD-DB9轉(zhuǎn)接頭等),120Ω終端電阻 (2個(gè)),可調(diào)電源。
2)測(cè)試環(huán)境 ①如果待測(cè)節(jié)點(diǎn)未集成終端電阻,則電路需要連接 圖8中 “1” 和“2”終端網(wǎng)絡(luò);②如果待測(cè)節(jié)點(diǎn)集成了120 Ω的終端電阻,則電路只需要連接圖8中 “1” 終端網(wǎng)絡(luò)。
3)測(cè)試步驟 ①CANoe建立3個(gè)具備網(wǎng)絡(luò)管理功能的虛擬節(jié)點(diǎn);②啟動(dòng)CANoe,使虛擬節(jié)點(diǎn)在線;③本地事件觸發(fā)DUT通信;④CANoe監(jiān)測(cè)總線報(bào)文,查看DUT是否和虛擬節(jié)點(diǎn)建立穩(wěn)定邏輯環(huán);⑤滿足DUT睡眠條件;⑥等待2000ms;⑦CANoe監(jiān)測(cè)總線上的報(bào)文,查看DUT是否發(fā)送網(wǎng)絡(luò)管理報(bào)文將 “SleepIndication” 位置 “1”。
4)評(píng)價(jià)指標(biāo) DUT發(fā)送SI置1的Ring報(bào)文。
本文介紹了OSEK網(wǎng)絡(luò)管理原理,并對(duì)南京依維柯PD2014車型網(wǎng)絡(luò)管理實(shí)現(xiàn)機(jī)制進(jìn)行了闡述。對(duì)深入理解OSEK網(wǎng)絡(luò)管理和將OSEK網(wǎng)管應(yīng)用到具體的工程項(xiàng)目中,以及研究或開發(fā)特定要求的總線OSEK網(wǎng)絡(luò)系統(tǒng)具有指導(dǎo)意義。
[1]熊毅.基于OSEK規(guī)范的網(wǎng)絡(luò)管理的研究與改進(jìn)[J].計(jì)算機(jī)應(yīng)用研究,2007,24(9):217-220.
[2]張利.OSEK網(wǎng)絡(luò)管理在汽車CAN系統(tǒng)中的研究與實(shí)現(xiàn)[J].電子測(cè)量與儀器學(xué)報(bào), 2011, 25 (6): 522-527.
[3]程安宇.OSEK/VDX直接網(wǎng)絡(luò)管理一致性測(cè)試方法設(shè)計(jì)[J]. 計(jì)算機(jī)技術(shù)與應(yīng)用, 2012, 38 (4): 133-136.