李 娜,杜 彬,田 彬
(陜西重型汽車有限公司汽車工程研究院,陜西 西安 710200)
隨著智能網(wǎng)聯(lián)技術(shù)在商用車電子領(lǐng)域的快速崛起,商用車電子技術(shù)也得到了迅猛的發(fā)展。傳統(tǒng)的商用車電子網(wǎng)絡(luò)架構(gòu)使用較多的總線是CAN總線和LIN總線,其中CAN最大的傳輸速率可達(dá)1Mb/s,LIN最大的傳輸速度是20kb/s。
由于車載網(wǎng)絡(luò)帶寬要求不斷的增長,傳統(tǒng)的汽車通信技術(shù)已經(jīng)無法滿足日益復(fù)雜的汽車電子控制功能需求,因此引入了車載以太網(wǎng)。車載以太網(wǎng)具有高帶寬、低延遲以及高可靠性等優(yōu)點。傳統(tǒng)的商用車診斷軟件系統(tǒng)是以CAN總線技術(shù)為主,CAN網(wǎng)絡(luò)的帶寬很大程度上限制了診斷設(shè)備和車載控制器之間的通信速率?;谝蕴W(wǎng)的診斷系統(tǒng)開發(fā)主要采用DoIP診斷通信技術(shù),DoIP具有通信速率高、成本低和易實現(xiàn)等優(yōu)點。因此,DoIP技術(shù)在商用車診斷功能開發(fā)上的應(yīng)用已經(jīng)成為必然的趨勢。
DoIP(Diagnostic communication over Internet Protocol)是基于IP的診斷通信協(xié)議,是由ISO 13400系列標(biāo)準(zhǔn)定義的,作為實現(xiàn)基于以太網(wǎng)的診斷通信方案。基于以太網(wǎng)的診斷服務(wù)相關(guān)的協(xié)議棧如圖1所示。
圖1 診斷協(xié)議棧
診斷協(xié)議棧由以下7層組成。
第1層,物理層:DoIP邊緣節(jié)點能夠支持IEEE802.3中規(guī)定的100BASE-TX(100Mb/s以太網(wǎng))標(biāo)準(zhǔn);DoIP邊緣節(jié)點能夠通過以太網(wǎng)設(shè)備檢測物理連接和斷開(鏈路檢測),并且能夠通知上層通信應(yīng)用。
第2層,數(shù)據(jù)鏈路層:DoIP邊緣節(jié)點能夠支持100Mb/s以太網(wǎng)(100BASE-TX);診斷設(shè)備能夠支持IEEE802.3中規(guī)定的100BASE-TX標(biāo)準(zhǔn);為了提高對不正確連接的以太網(wǎng)電纜的容錯能力,診斷設(shè)備需要能夠支持Auto-MDI(X)功能。
第3層,網(wǎng)絡(luò)層:DoIP實體都采用Ipv4,符合IETF RFC 792;ARP(地址解析協(xié)議)是僅當(dāng)主機(jī)的IP地址已知時,確定主機(jī)MAC地址的方法,也用于驗證IP地址是否被其他主機(jī)使用;ICMP(互聯(lián)網(wǎng)控制消息協(xié)議)是IP的一部分,用于發(fā)送錯誤消息。
第4層,傳輸層:DoIP實體都需要按照IETF RFC 793標(biāo)準(zhǔn)執(zhí)行TCP協(xié)議;DoIP實體都需要實現(xiàn)IETF RFC 768中規(guī)定的UDP。
第5層,會話層:目的是為上層提供統(tǒng)一的接口,使上層應(yīng)用不需要隨著底層通信技術(shù)的變化而改變。
第6層,表示層:在應(yīng)用過程之間傳送的信息提供表示方法的服務(wù),只關(guān)心信息發(fā)出的語法和語義。
第7層,應(yīng)用層:應(yīng)用層是開放系統(tǒng)的最高層,是直接為應(yīng)用進(jìn)程提供服務(wù)的。
DoIP經(jīng)UDS(Unified Diagnostic Services,統(tǒng)一診斷服務(wù))引入診斷服務(wù),然后通過TCP傳輸控制協(xié)議、UDP用戶數(shù)據(jù)報協(xié)議和IP以太網(wǎng)協(xié)議,完成外部的診斷設(shè)備和車載ECU之間的診斷通信。DoIP數(shù)據(jù)幀格式如圖2所示。
圖2 DoIP數(shù)據(jù)幀格式
其中,版本協(xié)議是標(biāo)識DoIP數(shù)據(jù)報協(xié)議版本。反向協(xié)議版本是協(xié)議版本的異或,與DoIP協(xié)議版本一起用作協(xié)議驗證模式,以確保收到正確的DoIP消息。負(fù)載類型是指通用DoIP報頭后的數(shù)據(jù)(如網(wǎng)關(guān)命令、診斷消息等),主要分為3類:①節(jié)點管理類,主要包括DoIP報頭應(yīng)答、車輛聲明和標(biāo)識、路由激活以及在線檢查;②車輛信息類,主要包括了DoIP的實體狀態(tài)以及診斷電源模式信息;③診斷數(shù)據(jù)類,主要包括診斷報文。有效負(fù)載長度是指DoIP消息排除通用DoIP報頭以外的有效負(fù)載長度;DoIP負(fù)載包括源地址、目的地址和用戶數(shù)據(jù)。
本文中的診斷系統(tǒng)采用DoIP通信協(xié)議,通信流程如圖3所示。診斷儀將DoIP命令發(fā)送給網(wǎng)關(guān)節(jié)點,網(wǎng)關(guān)節(jié)點回復(fù)診斷響應(yīng)確認(rèn),并且網(wǎng)關(guān)節(jié)點會根據(jù)DoIP命令中所提供的目的地址經(jīng)診斷命令轉(zhuǎn)發(fā)給相應(yīng)的DoIP節(jié)點。DoIP節(jié)點接收診斷請求報文,需要對診斷請求報文進(jìn)行接收確認(rèn),并且要發(fā)出確認(rèn)響應(yīng)消息。DoIP節(jié)點將回復(fù)信息發(fā)送給網(wǎng)關(guān)節(jié)點,由網(wǎng)關(guān)節(jié)點將來自DoIP實體的回復(fù)信息轉(zhuǎn)發(fā)給診斷儀。
圖3 通信流程
1)車輛識別:車輛與診斷儀連接包含物理連接以及網(wǎng)絡(luò)連接,連接之后需要通過DHCP尋址或者通過Auto IP尋址,診斷儀和OBD接口獲取分配的IP地址。IP地址配置完成之后,可以建立診斷儀與車輛的以太網(wǎng)通信。使用DoIP_GenericHeaderCheckSyncPattern()函數(shù),進(jìn)行協(xié)議模式和版本。
2)車輛選擇:車輛在發(fā)送了包含VIN或者EID的信息之后,診斷儀會根據(jù)VIN或者EID對車輛進(jìn)行識別,并且會根據(jù)診斷儀的上位機(jī)界面來進(jìn)行選擇需要通信的目標(biāo)車輛。
3)建立套接字:為了確保兩個不同的DoIP實體之間能夠建立正常的診斷通信連接,需要兩個實體建立套接字,其中套接字主要包括了主機(jī)的端口號和主機(jī)的地址,可以通過識別實體的IP地址和端口號進(jìn)行診斷連接和通信,套接字支持兩種通信協(xié)議,分別是TCP和UDP。其中,UDP是非連接的協(xié)議,支持單播和廣播;TCP是面向連接的協(xié)議,在收發(fā)數(shù)據(jù)之前,必須建立可靠的連接,所以TCP保證了可靠的1對1通信,僅支持單播,在診斷報文的通信中必須使用TCP協(xié)議。
4)路由激活請求:在建立套接字的過程中,還需要通過激活路由請求來對套接字進(jìn)行注冊激活,路由激活請求將診斷儀的源地址在DoIP網(wǎng)關(guān)的套接字上進(jìn)行注冊,并且進(jìn)行關(guān)聯(lián)源地址與套接字的端口號。所以,路由激活請求保證了診斷儀和目標(biāo)節(jié)點之間的端到端路由,確保診斷儀與DoIP網(wǎng)關(guān)之間的套接字建立了1對1的關(guān)系。
5)路由激活響應(yīng):路由激活響應(yīng)使套接字之間建立地址分配和對應(yīng)的通信關(guān)系,通過對邏輯源地址和邏輯目標(biāo)地址進(jìn)行請求和響應(yīng)的識別,保證通道中診斷消息傳輸?shù)恼_性。
6)診斷通信:套接字連接之后,可以進(jìn)行DoIP的診斷通信,診斷通信包含了診斷請求消息、診斷肯定應(yīng)答消息和診斷否定應(yīng)答消息。
7)通信終止:診斷通信完成之后,套接字觸發(fā)一般非活動計時器,計時器溢出之后,會自動斷開TCP連接,通過主動關(guān)閉套接字來結(jié)束通信。在實際的操作中,斷開診斷儀和DoIP實體的連接就會導(dǎo)致通信終止。
1)診斷儀與車輛通過TCP協(xié)議建立連接,并且診斷儀把相關(guān)的診斷請求發(fā)送給商用車DoIP實體,然后根據(jù)商用車內(nèi)ECU的診斷響應(yīng)輸出車輛故障信息。
2)診斷儀根據(jù)規(guī)范中定義的刷寫流程,將已經(jīng)更新完成的程序或者需要標(biāo)定的數(shù)據(jù)寫入控制器中。開發(fā)階段,采用的是點對點的通信方式將診斷儀與DoIP實體之間建立聯(lián)系。在車輛已經(jīng)下線之后,需要通過診斷儀與整車進(jìn)行并行的刷寫處理。
3)診斷儀能夠按照規(guī)范中定義的相關(guān)流程,確認(rèn)車輛是否已經(jīng)通過了裝配線的準(zhǔn)備狀態(tài)測試,此時需要診斷儀與整車之間進(jìn)行多個并行的診斷通信。
針對以上的應(yīng)用場景,對本文中的診斷系統(tǒng)進(jìn)行以下功能測試,確保該系統(tǒng)能夠滿足商用車診斷功能的要求。
1)車輛聲明功能??刂破魃想娀蛘邚?fù)位之后,會主動發(fā)送3條車輛聲明報文。車輛聲明功能測試報文如圖4所示。
圖4 車輛聲明功能
2)節(jié)點資源信息查詢。測試設(shè)備向DoIP實體發(fā)送節(jié)點資源信息查詢請求報文,收到來自控制器的節(jié)點信息響應(yīng)報文。節(jié)點資源信息查詢測試報文如圖5所示。
圖5 節(jié)點資源信息查詢
3)節(jié)點電源信息查詢功能。測試設(shè)備向DoIP實體發(fā)送節(jié)點電源信息查詢請求報文,收到電源模式響應(yīng)報文,報文的內(nèi)容符合DoIP協(xié)議,返回節(jié)點電源狀態(tài)。節(jié)點電源信息查詢測試報文如圖6所示。
圖6 節(jié)點電源信息查詢
4)路由激活功能。測試設(shè)備向DoIP實體發(fā)送路由激活請求報文,收到路由激活響應(yīng)報文,路由激活成功并在此TCP_DATA套接字上注冊源地址。路由激活功能測試報文如圖7所示。
圖7 路由激活功能
5)診斷報文傳輸功能。測試設(shè)備向DoIP實體發(fā)送診斷請求報文,收到診斷ACK或者NACK報文,報文內(nèi)容符合DoIP協(xié)議。診斷報文傳輸功能測試報文如圖8所示。
圖8 診斷報文傳輸功能
6)報文有效性檢查功能。測試設(shè)備向DoIP實體發(fā)送不符合協(xié)議的DoIP請求報文,收到DoIP Header NACK報文響應(yīng),報文內(nèi)容符合DoIP協(xié)議。報文有效性檢查功能測試報文如圖9所示。
圖9 報文有效性檢查功能
隨著汽車電子行業(yè)的迅猛發(fā)展,現(xiàn)有的汽車診斷系統(tǒng)已經(jīng)無法滿足日益增長的需求。本文提出了基于以太網(wǎng)的商用車診斷軟件系統(tǒng)方案,主要闡述了DoIP的通信流程,并且針對6個主要功能進(jìn)行臺架測試。所有的診斷服務(wù)均可正常處理和響應(yīng),滿足商用車診斷系統(tǒng)的需求。