遠程診斷DoIP
繼傳統CAN線、MOST、FlexRay以及CAN-FD后,車載以太網將憑借其低成本、高帶寬、高傳輸速率、網絡實時而被納入到新型整車總線中。尤其在娛樂信息系統及T-Box子網中,采用以太網傳輸視頻數據代替原有各模塊間復雜連接線將很大程度減少線束重量及復雜度。同時以太網也將是未來解決如何快速更新ECU軟件及標定的主要策略之一。
DoIP技術,在UDS診斷服務基礎上,通過TCP/IP及以太網來進行遠程車輛診斷,協議定義在ISO 13400,文檔中詳細描述了外部測試及刷新設備如何與整車內部ECU通過以太網及TCP/IP協議進行通訊。
文檔目前分三份:
- — Part 1: General information and use case definition
- — Part 2: Transport protocol and network layer services
- — Part 3: Wired vehicle interface based on IEEE 802.3
以下兩份正在籌備中
- — Part 4: Ethernet Diagnostic Connector
- — Part 5: Conformance test specification
Part 1: General information and use case definition
ISO13400架構實現基於互聯網的OSI 7層模型(詳見ISO/IEC 7498-1及ISO/IEC 10731),各層采用的協議見以下表格。
SI七層模型自上向下分成應用層,表示層,會話層,傳輸層,網絡層,數據鏈路層,以及物理層。但ISO13400涉及到的主要分布在傳輸層、網絡層、數據鏈路層、物理層四層中。
根據互聯網中的定義, OSI模型中,由軟件(進程)或者硬件(輸入/輸出芯片)實現的活躍部分稱之為實體Entity,用於進行信息的發送或者接收。實體是子系統中的活動單元,每一層被拆分成多個實體,同一層內的通訊由不同子系統上的對等實體(Peer-Entity)來實現。
DoIP診斷網絡架構
整個DoIP診斷網絡架構由所有的Entity實體與外部的測試設備組成。
有簡單的外部設備點對點與車內單獨某個DoIP實體連接,或是在一個復雜的分布式網絡中,多台測試設備通過DoIP網關與多台車輛中的多個DoIP實體以及子網進行連接通信。
DoIP的應用場景具體有三個:
1. 售后模式 車輛的檢測與維修
在維修廠里,外部的檢修設備不需要使用傳統ALDL口硬線連接,通過TCP/IP協議與車輛建立直接聯系,並按照指令順序將可靠請求發送給車輛DoIP實體,而后模塊反饋出車輛實時的錯誤追溯信息。
2.產品/工廠模式 車輛ECU的模塊刷新
外部刷新設備根據既定的刷新流程步驟,通過以太網或TCP/IP協議在進行安全訪問及模塊解鎖后與車輛內部模塊IP網絡建立通信。車輛內部網絡對外部刷新設備傳輸過來的Op及標定文件應支持下載以及寫入操作。
產品模式下,工程開發工具往往實現的是設備與模塊DoIP實體點對點的通訊與刷新,但在工廠模式下,采取的則是刷新設備對整車進行的並行刷新操作。
3. 在工廠模式總裝終檢線工位進行檢測維修
在工廠制造環節,外部檢測設備會按照指定順序,對接入IP網絡的車輛進行終檢工位的完整性測試。與售后模式下有所不同的是,在工廠環節,外部測試設備通常會與整車多個模塊的多個DoIP實體進行連接以及並行通訊。
診斷連接場景
單台車與外部設備使用雙絞線點對點通信
這種方式意味着在進行IP診斷時,系統不會受到來自其他車輛或者設備的干擾,通常用IP尋址或者自動配置。
通過無線網絡連接單車與單一外部測試設備
在這種場景下,意味着無線網絡中可能會存在多輛車或者多個設備,因此無論是車或者是設備都應具備判別機制,能在網絡下識別出所需要連接的對象,並且拒絕來自其他車輛或者設備的請求信號。當然,設備與車輛本身都應具備自動接入到已存在的IP網絡的能力。應用場景如維修廠。
單設備與多輛車進行無線連接
在該場景下,只有外部測試設備需要有點對多連接的能力(sockets),如在工廠里某一台產線整車刷新服務器需要同時對多台車輛進行並行刷新。
單車與多個外部設備連接,但只允許同時只建立一條通道
車輛具備了與多部設備連接的能力,對於車輛來說,需要具備區分診斷請求還是反饋的能力。而對於外部設備,則需要有判斷當前車輛是否有在與其他設備進行通訊的能力。該情況會發生在工廠模式下,在某些網絡重疊區域,某台設備需要對車輛進行模塊的刷新,而另一台設備則需要對該車輛進行檢修時。
DoIP之通信建立
ISO 13400-2文檔詳細定義了整車電子模塊組件如何通過TCP/IP協議與外部刷新診斷設備建立通信連接。其中包括作為IP節點的汽車網關如何加入到現有網絡中,及外部刷新診斷設備如何在網絡中檢測到車輛並與其內部IP組件建立有效通訊。
其中,DoIP架構模型必須實現以下特征:
- — 汽車與設備具備檢測對方並加入到網絡的能力
- — 汽車具有聲明存在且被檢測到的能力
- — 獲取車輛基本狀態信息 (如Power Mode狀態)
- — 通信建立,如雙方通信請求建立,保持,以及對網關的控制等
- — 汽車網關實現診斷設備與車輛子網組件之間的數據路由
- — 錯誤狀態處理
DoIP中的一些定義
DoIP Entity
DoIP實體是任意一個滿足DoIP協議的host,其中包括DoIP節點及DoIP網關
DoIP Gateway
DoIP網關是在車輛網絡內部,實現與本模塊及所連接多個子網內ECU通訊訪問的節點
DoIP Node
DoIP節點是在車輛網絡內部,遵守DoIP協議,但不具備路由DoIP數據到連接子網內功能的節點
DoIP Edge Node
DoIP邊緣節點是在車輛內部,與診斷口Ethernet activation line直連的節點
External Test Equipment
車輛外部設備是指存在車輛網絡外部,通過DoIP協議與車輛內部子網DoIP Entity實現通訊建立的設備
In-vehicle Test Equipment
車輛內部設備與外部設備擁有同樣功能,但不具備Activation硬線,車輛身份請求及DCHP服務(自動為接入網中的DoIP節點分配不同的IP地址)
針對協議定義,雖從名字上看TCP/IP協議僅包括傳輸控制協議(TCP)與網際協議(IP),但實際上TCP/IP是協議簇,包含了除這兩種以外的用戶數據報協議(UDP),文件傳輸(FTP)和地址解析協議(ARP)等。
這里着重介紹TCP與UDP,這兩者都是傳輸層協議,且在后續建立通訊中起到非常重要的作用。
DoIP中TCP原理及通信建立
TCP(Transmission Control Protocol)傳輸控制協議是一種面向連接的協議,即必須與對方建立可靠連接后才能進行數據交互。這個建立過程就是「三次握手」,即建立TCP連接時,需Client與Server端總共發3次包來確認連接的建立。
DoIP建立TCP通訊時,通常成對出現端口,一個用於發送,稱之為遠程端口(remote port);另一個用於接收,稱之為本地端口(local port)。但一個host的發送端口相對也就是對方host的接收端口。每個DoIP Entity需對TCP_DATA端口進行監聽,TCP_DATA端口號通常為13400,以便外部設備能與節點建立通訊。
參考互聯網體系中TCP/IP的握手流程,DoIP節點與外部診斷設備建立流程如下:
- 第一次握手: 建立連接
Client也就是External Test Equipment發送連接請求報文段,將標志位syn置為1,並隨機產生一個Sequence Number: seq=x; 把這個值發送給Server DoIP Entity,此時Client進入SYN_SENT的狀態,等待Server確認。
- 第二次握手: Server收到syn報文段
Server收到Client的syn報文段,由syn=1知道Client正在請求建立連接。Server把ack=x+1;同時要發送syn請求消息,因此把標志位syn置成1,並隨機生成seq=y;Server把所有信息一並放入報文段(即syn+ack報文段)發給Client用來確認連接請求,自此Server進入了SYN_RCVD狀態。
- 第三次握手: Client收到Server(syn+ack)報文段
檢查ack是否等於x+1,如果正確,把ack=y+1,並把數據包發給Server,Server會檢查ack是否等於y+1,seq是否等於x+1,如果正確就連接成功,Client和Server進入ESTABLISHED狀態,完成握手,可以開始接收數據。
DoIP中UDP原理及通信建立
UDP(User Data Protocol)用戶數據報協議是一種非連接,不保證可靠性的傳輸層協議,也就是傳輸數據前Client與Server不需建立連接。只需要知道對方IP地址及端口號,即能夠直接發送數據包,只是不能保證是否能夠到達。但相比TCP,UDP的速度更快,因此對於需要實時同步傳輸,但不要求可靠到達的數據,優先考慮UDP協議。
在下載數據的場景下,當要求數據精確無誤時,由於UDP會出現丟數據的情況,因而就應采用更安全的TCP。但在高速網絡保證下,傳輸數據延遲以及穩定性得以改善的情況下,若丟幀后采用應用層控制數據重傳,則也能夠保證UDP傳輸的可靠性。
DoIP場景下,通過兩個UDP端口
- UDP_DISCOVERY
- UDP_TEST_EQUIPMENT_REQUEST
來建立通訊並進行遠程數據控制,尤其需要外部設備對車輛IP節點進行廣播消息請求時,須使用UDP,由於TCP機制所在,無法實現廣播與多播。
過程如下,DoIP以UDP_DISCOVERY或動態定義端口來作為Source Port,向UDP_DISCOVERY廣播報文數據,而外部診斷設備則始終監聽UDP_DISCOVERY端口來獲取消息。
當外部診斷設備需要發送數據時,同樣將目標端口設置為UDP_DISCOVERY,源端口UDP_TEST_EQUIPMENT_REQUEST則是動態定義,范圍為(49152~65535)。
當請求發送給DoIP后,診斷設備保持對UDP_TEST_EQUIPMENT_REQUEST的監聽。
DoIP反饋請求時,把目標端口設置為UDP_TEST_EQUIPMENT_REQUEST,具體實現過程參考下圖:
在ISO13400-2中,DoIP的策略制定中參考了非常多的傳統通信網絡技術。下次會分析在DoIP過程中,不同層級之間如何實現對DoIP幀中的payload數據進行解析等。
DoIP以太網診斷口設計規范
在 Part3中,基於IEEE 802.3 100BASE-TX的標准(速率達100M的快速以太網信令標准),就物理層以及數據鏈路層對DoIP的通信接口及測試設備提了設計需求。
Part4里則是強調DoIP中通信診斷口的設計規范。這里對ISO13400的part3及part4部分關於以太網診斷口pin腳布局進行簡介。
以太網需求定義
根據IEEE 802.3u 100BASE-TX標准定義,車載以太網連接口由四條傳輸線(transmission line)加一條額外的使能線(activiation line)組成,通過使能線可決定DoIP邊緣節點(Edge Node)的打開與否。
以太網線纜分兩類:
- 端對端(1:1)連接:通常用於網絡集線器或交換機與端節點(如計算機)連接。
此情況下,每個RJ45線纜接口,即水晶頭的每一個針腳會與車輛的接口針腳一一對應連接。也就是Source Port的Rx+接口會與Destination Port的Rx+口對應相連。
- 交叉連接(cross-linked):通常用於兩個端節點間直連(兩台計算機之間)。
此情況下,Source Port的Tx針腳會與Destination Port的Rx針腳直連,反之亦然。
以太網物理層需求
-
根據IEEE 802.3中定義,DoIP應支持100Base-TX(100Mbit/s以太網)
-
根據IEEE 802.3中定義,DoIP應支持10Base-TX(10Mbit/s以太網)
對10Mbit/s網絡支持的提出目的是,當兩個以太網接口之間100Mbit/s網絡無法建立時,10Mbit/s的低速網絡會作為備用方案啟動。
-
根據IEC 60950-1 (TNV1 circuit) and IEEE 802.3定義,DoIP邊緣節點應設置變壓器線圈以滿足對1500V電壓1min以上的隔離。
以太網數據鏈路層需求
-
DoIP邊緣節點應支持與外部網絡建立10Mbit/s的以太網
-
DoIP邊緣節點應支持100Mbit/s以太網
-
根據IEEE 802.3中定義,DoIP的邊緣節點在建立連接時,應支持自動握手及自動協商(Auto-Negotiation)以保證端口使用相同的傳輸速率及單雙工模式等
-
根據IEEE 802.3中定義,測試設備應支持100Mbit/s標准
-
為提高對以太網線纜(端對端及交叉線纜)的容錯能力,測試設備應支持Auto-MDI特性,也就是線序自適應的功能,設備可通過這個功能可以自動檢測連接到自己接口上的網線類型,能夠自動進行調節。
而DoIP邊緣節點不需具備Auto-MDI特性。
診斷口兩種針腳布局定義
目前通行的以太網針腳布局有兩種,但具體OEM采用何種應參照具體的整車通訊網絡架構進行選擇。
以下兩種車載以太網診斷口模式都是參考了IEEE 802.3信號規范,基於現有ISO 15031-3/SAE J1962車輛診斷口標准設計。
首先,對於高頻信號傳輸,成對的Tx+/Tx-以及Rx+/Rx-都應盡可能地接近對方,另外,還需要有一個額外的針腳用於表示pin腳類型以及激活以太網控制器。
第一種類型
第一種以太網pin腳布局可用於解決當主機廠已占用1&9針腳的沖突。
下圖為當主機廠占用了1&9針腳作為CAN_H與CAN_L時的診斷口端面針腳布局:
各pin腳定義如下表:
對應診斷口與設備連接時的通信示意圖:
第二種類型
第二種以太網pin腳布局可用於解決在主機廠已占用3&11針腳的沖突。
下圖為當主機廠占用了3&11針腳作為CAN_H與CAN_L時的診斷口端面針腳布局:
各pin腳定義如下表:
對應診斷口與設備連接時的通信示意圖:
文章轉載於:解讀:車輛遠程診斷DoIP。