李志濤,耿偉峰
(長城汽車股份有限公司技術(shù)中心,河北 保定 071000)
汽車電子技術(shù)的飛速發(fā)展,促進(jìn)了車載網(wǎng)絡(luò)通信技術(shù)的廣泛應(yīng)用,同時(shí)高性能車載娛樂系統(tǒng)、大數(shù)據(jù)、車聯(lián)網(wǎng)、云服務(wù)、自動(dòng)駕駛等新技術(shù)使得車載網(wǎng)絡(luò)對(duì)帶寬、兼容性的要求越來越高,傳統(tǒng)的車載CAN總線通信受限于帶寬原因,已越來越不能滿足車輛智能化和網(wǎng)聯(lián)化的要求。車載以太網(wǎng)技術(shù)以其高帶寬、兼容性強(qiáng)、可靠性高、擴(kuò)展性良好的特性,逐漸在車輛上普及應(yīng)用,尤其在軟件刷新、遠(yuǎn)程OTA等通信應(yīng)用場景需求中,實(shí)現(xiàn)基于車載以太網(wǎng)的DoIP協(xié)議,已成為車載以太網(wǎng)技術(shù)應(yīng)用的必然。
DoIP(Diagnostic communication over Internet Protocol),是基于IP網(wǎng)絡(luò)的汽車診斷協(xié)議,全稱為基于IP網(wǎng)絡(luò)的診斷通信,其具備更快的數(shù)據(jù)傳輸速率,從而在復(fù)雜的數(shù)據(jù)診斷和軟件刷新的場景下節(jié)約時(shí)間和成本。
DoIP協(xié)議用于UDS診斷的傳輸,該協(xié)議由ISO 13400標(biāo)準(zhǔn)定義,ISO 13400規(guī)定了DoIP的傳輸層、網(wǎng)絡(luò)層、數(shù)據(jù)鏈路層和物理層,應(yīng)用層和會(huì)話層部分由ISO 14229實(shí)現(xiàn)。應(yīng)用層的UDS診斷服務(wù),通過傳輸控制(TCP/UDP)協(xié)議和網(wǎng)絡(luò)(IP)協(xié)議,經(jīng)數(shù)據(jù)鏈路層的封裝,然后由物理層轉(zhuǎn)換后發(fā)送到網(wǎng)絡(luò)上,完成車內(nèi)以太網(wǎng)控制器與外部測試設(shè)備之間的診斷通信。DoIP通信過程是基于TCP/UDP進(jìn)行診斷報(bào)文的傳輸,診斷報(bào)文中的Payload攜帶相應(yīng)診斷服務(wù)數(shù)據(jù)信息,診斷服務(wù)數(shù)據(jù)遵循傳統(tǒng)的診斷協(xié)議。因此,準(zhǔn)確來說DoIP協(xié)議是一個(gè)擴(kuò)展的傳輸層協(xié)議,為基于車載以太網(wǎng)的診斷搭建了一個(gè)通信橋梁。DoIP協(xié)議在OSI 7層模型中的位置及分布見圖1。
圖1 DoIP標(biāo)準(zhǔn)架構(gòu)分布
ISO 13400-1處于應(yīng)用層(層7)之上,是對(duì)一些通用信息、應(yīng)用場景的描述。ISO 13400-2定義了傳輸層和網(wǎng)絡(luò)層(層4和層3),ISO 13400-2中規(guī)定了DoIP通信在傳輸層中使用TCP和UDP協(xié)議,在網(wǎng)絡(luò)層中使用IPv4或IPv6協(xié)議、專屬于DoIP通信的內(nèi)容等。ISO 13400-3定義了DoIP診斷通信對(duì)Ethernet數(shù)據(jù)鏈路層和物理層的要求等;ISO 13400-4定義以太網(wǎng)診斷連接器要求。同時(shí)在ISO 13400-2中定義了基于DoIP通信的診斷架構(gòu)模型,架構(gòu)模型見圖2。
圖2 車載網(wǎng)絡(luò)架構(gòu)示意圖
其中,DoIP診斷架構(gòu)須實(shí)現(xiàn)以下特性:①車輛與測試設(shè)備具有檢測對(duì)方并加入到網(wǎng)絡(luò)的能力;②具備車輛信息聲明的能力;③獲取車輛基本狀態(tài)信息,如車輛診斷模式信息查詢;④建立與通信連接的保持、維護(hù)機(jī)制等;⑤實(shí)現(xiàn)測試設(shè)備與車輛內(nèi)部ECU節(jié)點(diǎn)之間的數(shù)據(jù)路由;⑥錯(cuò)誤狀態(tài)處理,如物理網(wǎng)絡(luò)斷開等。
DoIP數(shù)據(jù)是層層向下傳遞的,直至構(gòu)成完整的以太網(wǎng)幀,通過物理層的介質(zhì)發(fā)出。DoIP數(shù)據(jù)封裝在以太網(wǎng)幀中,包含報(bào)頭和有效數(shù)據(jù),其中Protocol Version定義了DoIP的協(xié)議版本號(hào);Protocol Version為版本號(hào)取反;Payload Type定義了數(shù)據(jù)類型(標(biāo)識(shí)本幀數(shù)據(jù)的用途);Payload Length定義數(shù)據(jù)長度(標(biāo)識(shí)后面的數(shù)據(jù)長度);DoIP Payload包含了Payload Type對(duì)應(yīng)的具體數(shù)據(jù),Payload數(shù)據(jù)中又分為源地址、目標(biāo)地址、應(yīng)用數(shù)據(jù)。DoIP數(shù)據(jù)報(bào)文的格式見圖3。
圖3 DoIP數(shù)據(jù)報(bào)文
DoIP報(bào)文類型分為3類:節(jié)點(diǎn)管理類、車輛信息類與診斷類。節(jié)點(diǎn)管理類報(bào)文主要包括DoIP報(bào)頭否定響應(yīng)、車輛信息獲取、通信路由激活、診斷設(shè)備在線檢查,如車輛識(shí)別請(qǐng)求/響應(yīng)報(bào)文,路由激活請(qǐng)求/響應(yīng)報(bào)文等;車輛信息類主要包括獲取DoIP實(shí)體狀態(tài)信息、車輛電源模式信息,如DoIP實(shí)體狀態(tài)請(qǐng)求/響應(yīng)報(bào)文,診斷電源模式信息請(qǐng)求/響應(yīng)報(bào)文。診斷類主要包括診斷報(bào)文處理以及UDS數(shù)據(jù)交互,如診斷報(bào)文、診斷請(qǐng)求確認(rèn)響應(yīng)報(bào)文。
ISO 13400中定義了DoIP通信的標(biāo)準(zhǔn)流程,該流程中Tester(測試設(shè)備)和DoIP網(wǎng)關(guān)(邊緣節(jié)點(diǎn))通過IP網(wǎng)絡(luò)連接,DoIP網(wǎng)關(guān)連接了子網(wǎng)(非以太網(wǎng)車載網(wǎng)絡(luò)),Tester在當(dāng)前網(wǎng)絡(luò)拓?fù)渲心軌驅(qū)崿F(xiàn)診斷DoIP網(wǎng)關(guān)或者子網(wǎng)絡(luò)上的非DoIP實(shí)體的功能。診斷會(huì)話流程見圖4。
圖4 DoIP診斷會(huì)話流程
DoIP的整個(gè)診斷流程大致可以分為5步:車輛連接、車輛聲明、TCP通信連接及路由激活、診斷數(shù)據(jù)交互、TCP連接關(guān)閉。
1)車輛連接:Tester和DoIP網(wǎng)關(guān)之間要建立正確的物理連接,通過車輛激活線激活DoIP網(wǎng)關(guān)的診斷功能,然后分配Tester及DoIP網(wǎng)關(guān)的IP地址,分配IP地址一般通過DHCP動(dòng)態(tài)分配或Auto IP分配,主機(jī)廠可依據(jù)需求確定IP地址的分配方式,一般兩種分配方式均要求實(shí)現(xiàn)。
2)車輛聲明:車輛連接并上電后,車輛將自身的識(shí)別信息以廣播形式自發(fā)3次于所在網(wǎng)絡(luò)中。Tester若未獲取車輛自動(dòng)上報(bào)的識(shí)別信息,Tester需進(jìn)行車輛信息識(shí)別請(qǐng)求報(bào)文的發(fā)送(identification request),如果網(wǎng)絡(luò)中有車輛的話,車輛對(duì)這個(gè)車輛識(shí)別請(qǐng)求信息進(jìn)行響應(yīng),發(fā)送車輛識(shí)別請(qǐng)求響應(yīng)信息(車輛聲明),測試設(shè)備便發(fā)現(xiàn)了被測車輛。車輛聲明實(shí)現(xiàn)Tester和車內(nèi)特定的DoIP實(shí)體的點(diǎn)對(duì)點(diǎn)連接,若網(wǎng)絡(luò)中包含多個(gè)Tester、車輛、DoIP實(shí)體,通過車輛識(shí)別請(qǐng)求與響應(yīng)報(bào)文的信息交互,即車輛發(fā)現(xiàn)過程可以找到特定車輛及DoIP實(shí)體。
3)TCP通信連接及路由激活:Tester端和DoIP實(shí)體通過TCP三次握手機(jī)制建立TCP連接,然后Tester與DoIP實(shí)體節(jié)點(diǎn)之間進(jìn)行路由激活,來激活車載以太網(wǎng)診斷通信套接字(Socket),Tester發(fā)送路由激活請(qǐng)求報(bào)文信息至DoIP實(shí)體節(jié)點(diǎn),確認(rèn)Tester的邏輯地址、激活類型等信息是否合法。通過后,DoIP實(shí)體回復(fù)路由激活響應(yīng)報(bào)文,實(shí)現(xiàn)路由功能的激活。
4)診斷通信:Tester發(fā)送診斷請(qǐng)求報(bào)文(DoIP Payload Type 0x8001),診斷請(qǐng)求報(bào)文中包含目標(biāo)的邏輯地址,用來區(qū)分不同的診斷實(shí)體,邊緣節(jié)點(diǎn)(DoIP網(wǎng)關(guān))收到請(qǐng)求后回復(fù)診斷請(qǐng)求確認(rèn)ACK(DoIP Payload Type 0x8002),告知Tester收到診斷請(qǐng)求,與此同時(shí)會(huì)發(fā)送診斷請(qǐng)求給車內(nèi)所需診斷通信的DoIP實(shí)體節(jié)點(diǎn)。車內(nèi)節(jié)點(diǎn)收到請(qǐng)求后回復(fù)診斷響應(yīng)報(bào)文(DoIP Payload Type 0x8001),該響應(yīng)報(bào)文經(jīng)由DoIP網(wǎng)關(guān)轉(zhuǎn)發(fā)給Tester。若邊緣節(jié)點(diǎn)判定Tester發(fā)送的診斷請(qǐng)求有無效信息時(shí)(無效的目標(biāo)地址,信息超長等),此時(shí)邊緣節(jié)點(diǎn)會(huì)回復(fù)NACK(DoIP Payload Type 0x8003)。
5)TCP連接關(guān)閉,當(dāng)Tester端退出診斷通信連接時(shí),用于DoIP通信的套接字TCP_DATA Socket被關(guān)閉,DoIP診斷通信斷開。
由于基于TCP協(xié)議傳輸數(shù)據(jù)時(shí),數(shù)據(jù)包可能被其他人截取、篡改,這給數(shù)據(jù)傳輸過程中的信息安全帶來了極大的挑戰(zhàn),因此最新版ISO 13400-2 2019協(xié)議將信息安全因素考慮進(jìn)去,在整個(gè)DoIP診斷通信過程中增加了TLS(Transport Layer Security),即在建立TCP連接后,進(jìn)行TLS握手流程,實(shí)現(xiàn)數(shù)據(jù)加密,再進(jìn)行后續(xù)的路由激活、診斷數(shù)據(jù)交互。
在ISO 13400-1中,描述了DoIP診斷典型的通信場景,主要描述了以下4種診斷連接方案。
1)單個(gè)測試設(shè)備與單個(gè)車輛之間的物理介質(zhì)連接:此應(yīng)用能夠確保在進(jìn)行IP診斷時(shí),通信連接不會(huì)被其他車輛或設(shè)備干擾。
2)單個(gè)測試設(shè)備與單個(gè)車輛之間的網(wǎng)絡(luò)連接:在多個(gè)車輛或多個(gè)外部測試設(shè)備都連接到同一個(gè)網(wǎng)絡(luò)時(shí),外部測試設(shè)備和車輛都應(yīng)該擁有識(shí)別能力,能夠在網(wǎng)絡(luò)下識(shí)別出需要建立連接的目標(biāo),并拒絕接受其他車輛或外部測試設(shè)備的診斷請(qǐng)求。
3)單個(gè)設(shè)備與多輛車之間的網(wǎng)絡(luò)連接:多輛車與單個(gè)外部測試設(shè)備網(wǎng)絡(luò)連接,要求外部測試設(shè)備具備一對(duì)多連接的能力。
4)多個(gè)測試設(shè)備與單個(gè)車輛之間的網(wǎng)絡(luò)連接:該應(yīng)用方案要求車輛具備一對(duì)多連接的能力,能夠清楚地區(qū)分診斷請(qǐng)求和對(duì)每個(gè)邏輯連接負(fù)責(zé)的外部測試設(shè)備的響應(yīng)。外部測試設(shè)備能夠判斷當(dāng)前車輛是否在與其他設(shè)備進(jìn)行通信。
參照如上應(yīng)用場景,在車輛診斷具體應(yīng)用時(shí)可選取對(duì)應(yīng)的設(shè)計(jì)方案,滿足診斷場景需求,如售后模式車輛的故障檢測、產(chǎn)品/工廠模式車輛ECU的軟件更新、在工廠模式總裝工位的檢測、售后車輛遠(yuǎn)程診斷、OTA升級(jí)等。
遵循目前國際上通用的V模式開發(fā)流程,DoIP協(xié)議測試分為ECU級(jí)與系統(tǒng)級(jí)測試,主要測試內(nèi)容包括車輛診斷激活使能線測試、以太網(wǎng)UDS測試、DoIP數(shù)據(jù)報(bào)文格式、DoIP診斷流程、DoIP時(shí)間參數(shù)、刷寫測試等,同時(shí)主機(jī)廠會(huì)在ISO標(biāo)準(zhǔn)需求的基礎(chǔ)上依據(jù)系統(tǒng)設(shè)計(jì)需求及應(yīng)用場景等,自定義相關(guān)測試內(nèi)容。
ECU級(jí)別測試,主要進(jìn)行應(yīng)用層診斷協(xié)議測試驗(yàn)證,針對(duì)上層協(xié)議ISO 14229協(xié)議,測試內(nèi)容包含診斷服務(wù)和傳輸協(xié)議參數(shù)測試兩部分。診斷服務(wù)測試,根據(jù)相關(guān)協(xié)議發(fā)送正確格式的診斷請(qǐng)求報(bào)文,驗(yàn)證ECU是否有相應(yīng)的肯定診斷響應(yīng)并判斷其是否滿足協(xié)議要求;錯(cuò)誤協(xié)議處理機(jī)制測試,測試發(fā)送錯(cuò)誤格式的診斷請(qǐng)求報(bào)文,驗(yàn)證ECU是否有診斷響應(yīng)并判斷其否定響應(yīng)是否滿足協(xié)議要求。診斷傳輸協(xié)議參數(shù)測試,測試診斷服務(wù)及故障處理機(jī)制中時(shí)間參數(shù)正確性。
采用Vector公司的工具鏈,搭建測試環(huán)境,把診斷數(shù)據(jù)庫文件(CDD)導(dǎo)入至CANoe.Diva,添加封裝好的安全算法dll(Dynamic Link Library)文件,設(shè)置數(shù)據(jù)流時(shí)間參數(shù)的判斷標(biāo)準(zhǔn)等,單擊Generate就生成了可供CANoe調(diào)用的自動(dòng)化測試的工程文件,然后在CANoe中載入生成的Diva工程文件并運(yùn)行測試工程即可進(jìn)行診斷的自動(dòng)化測試。測試完成后,CANoe自動(dòng)生成測試報(bào)告。該方案執(zhí)行DoIP的UDS測試,技術(shù)成熟可靠,測試充分、高效,本文不再贅述。
系統(tǒng)級(jí)別測試基于Vector測試工具鏈,通過CANoe軟件開發(fā)測試腳本和測試工程,集成Vector硬件設(shè)備,完成系統(tǒng)測試環(huán)境的搭建。本系統(tǒng)VN5640實(shí)現(xiàn)以太網(wǎng)數(shù)據(jù)交互、采集,VT系統(tǒng)用于以太網(wǎng)鏈路的自動(dòng)化故障注入,如以太網(wǎng)線斷路、短路等。測試環(huán)境示意如圖5所示。
圖5 系統(tǒng)測試示意圖
系統(tǒng)級(jí)測試,依據(jù)系統(tǒng)設(shè)計(jì)規(guī)范要求,對(duì)各系統(tǒng)基本需求實(shí)現(xiàn)的正確性、準(zhǔn)確性、合理性進(jìn)行測試,并結(jié)合不同的車輛運(yùn)行場景,對(duì)系統(tǒng)在不同場景下的運(yùn)行狀態(tài)進(jìn)行檢測,考慮用戶應(yīng)用角度進(jìn)行應(yīng)用場景的測試驗(yàn)證、誤用和濫用方面的測試,同時(shí)考慮主機(jī)廠自定義及一些特殊的需求開展相應(yīng)測試。主要涉及的相關(guān)測試內(nèi)容為:控制器軟硬件版本讀取檢測,車輛發(fā)現(xiàn)請(qǐng)求、響應(yīng)、車輛聲明報(bào)文;車輛路由激活、診斷報(bào)文格式測試,預(yù)編程條件測試(電源模式、電池電量、車速、發(fā)動(dòng)機(jī)狀態(tài)、發(fā)動(dòng)機(jī)轉(zhuǎn)速、手剎等);控制器正向刷寫流程、控制器異常刷寫、高負(fù)載及故障注入等應(yīng)用場景測試驗(yàn)證等。
DoIP系統(tǒng)級(jí)測試是協(xié)議測試流程中的關(guān)鍵階段,不僅需考慮協(xié)議基本需求的實(shí)現(xiàn),在此階段,需基于系統(tǒng)維度,結(jié)合功能需求的應(yīng)用、車輛使用場景、非預(yù)期操作等開展相應(yīng)的測試,驗(yàn)證系統(tǒng)正確性與穩(wěn)定性。系統(tǒng)級(jí)測試主要是在集成所有相關(guān)ECU的情況下,對(duì)系統(tǒng)或子系統(tǒng)進(jìn)行驗(yàn)證,查看是否滿足設(shè)計(jì)時(shí)的規(guī)格要求。對(duì)于較為復(fù)雜的系統(tǒng),為保障測試的覆蓋率并節(jié)省測試時(shí)間,測試自動(dòng)化工具選擇和環(huán)境搭建十分重要。
本示例為車輛識(shí)別響應(yīng)報(bào)文格式及數(shù)據(jù)正確性的測試驗(yàn)證,測試車輛DoIP節(jié)點(diǎn)所發(fā)送的車輛識(shí)別響應(yīng)報(bào)文的Protocol Version、Payload Type、Payload Length、DoIP Payload等是否滿足設(shè)計(jì)需求。測試前,參照?qǐng)D5搭建測試環(huán)境,連接測試設(shè)備,完成CANoe軟硬件配置。
系統(tǒng)上電,車輛激活線進(jìn)行激活,使能網(wǎng)關(guān)DoIP診斷功能,系統(tǒng)處于正常運(yùn)行模式中。采用CANoe工具,發(fā)送不攜帶DoIP Payload參數(shù)的車輛識(shí)別請(qǐng)求報(bào)文至網(wǎng)關(guān)節(jié)點(diǎn),其中Protocol Version=0x02,Payload Type=0x0001,Payload Length=0。在CANoe軟件中查看采集到的車輛識(shí)別響應(yīng)報(bào)文,查看此響應(yīng)報(bào)文中的各字段數(shù)值是否符合預(yù)期要求,見圖6。
圖6 車輛識(shí)別響應(yīng)報(bào)文示例
CANoe采集網(wǎng)關(guān)節(jié)點(diǎn)發(fā)送的DoIP響應(yīng)報(bào)文,查看并分析所采集的車輛識(shí)別響應(yīng)報(bào)文,其中Protocol Version=0x02、Payload Type=0x0004、Payload Length=0x00000020、VIN、Logical Address、EID、GID、Further Action Required等字段數(shù)值,經(jīng)分析符合預(yù)期要求。參照以上測試要求及步驟進(jìn)行各DoIP節(jié)點(diǎn)ECU車輛識(shí)別響應(yīng)報(bào)文數(shù)據(jù)格式及正確性的測試驗(yàn)證。
伴隨著車輛電器功能的增加及對(duì)車輛個(gè)性化、科技化的需求,推動(dòng)著車載以太網(wǎng)技術(shù)的迅速推廣,隨著技術(shù)的不斷成熟,將成為整車下一代骨干網(wǎng)絡(luò)應(yīng)用的必然趨勢(shì)。同時(shí)遠(yuǎn)程刷寫、遠(yuǎn)程診斷等新技術(shù)的不斷出現(xiàn),基于車載以太網(wǎng)技術(shù)的DoIP協(xié)議必然應(yīng)用到車輛診斷系統(tǒng)中,因此,DoIP通信和測試的必要性就越發(fā)重要。本文對(duì)車載以太網(wǎng)的DoIP診斷通信技術(shù)與測試進(jìn)行了研究分析,為進(jìn)一步深入開展相關(guān)測試工作奠定了基礎(chǔ)。