CANoe主要用于汽車總線的開發(fā)并廣泛被汽車電子工程師們使用。它具有強(qiáng)大的開發(fā)、分析、仿真、診斷、測(cè)試等功能。一提到CANoe大家往往都會(huì)想到CAPL,在使用CANoe的過(guò)程中相信每位工程師都或多或少的要和“CAPL”打交道。學(xué)好CAPL的用法可以讓我們更加高效、便捷地使用CANoe。本文就CANoe中關(guān)于診斷的CAPL函數(shù)進(jìn)行介紹。
診 斷
診斷,其實(shí)就是服務(wù)端和客戶端進(jìn)行一問(wèn)一答的方式。這里的一問(wèn)一答指的是發(fā)送和接收的方式,Tester端發(fā)送一條特定ID的報(bào)文(請(qǐng)求),ECU接收到以后會(huì)相應(yīng)的回復(fù)一條特定ID的報(bào)文(響應(yīng))。診斷是一個(gè)非常重要的功能,可以讀取ECU的很多信息,比如:版本號(hào),故障信息,狀態(tài)信息等。CANoe是具有診斷功能的,如果需要大批量的進(jìn)行診斷測(cè)試就需要使用CAPL來(lái)輔助。
如下圖所示,CANoe可以直接加載CDD文件,加載完CDD文件后可以通過(guò)CANoe工程的診斷界面打開診斷臺(tái),進(jìn)行手動(dòng)的發(fā)送診斷報(bào)文。
在CANoe中加載CDD文件
如下圖所示,在Diagnostic Console中我們可以直接發(fā)送擴(kuò)展會(huì)話服務(wù)(0x1003),ECU端收到擴(kuò)展會(huì)話服務(wù)請(qǐng)求后會(huì)給出肯定響應(yīng)或否定響應(yīng)。
用 Diagnostic Console發(fā)送診斷請(qǐng)求
但是隨著測(cè)試任務(wù)的增加,我們要進(jìn)行多種方式的診斷測(cè)試。如下圖所示,加載完CDD文件后,隨之打開CAPL Browser,就可以在CAPL編輯器的Symbols欄中找到我們CDD文件對(duì)應(yīng)的診斷服務(wù)。
CAPL Browser 中CDD文件的調(diào)用
對(duì)于使用CAPL實(shí)現(xiàn)診斷功能我們通常有兩種方式:
通過(guò)發(fā)送CAN報(bào)文的形式去實(shí)現(xiàn)
針對(duì)第一種方式,我們只需要在CAPL中定義一條特定ID的報(bào)文,再定義它的DLC以及每個(gè)字節(jié)的內(nèi)容再發(fā)出去就可以了,如下圖所示:
CAPL 代碼實(shí)現(xiàn)
Trace 中報(bào)文的顯示
通過(guò)調(diào)用加載到CANoe工程中CDD文件定義好的診斷功能去實(shí)現(xiàn)
針對(duì)第二種方式,因?yàn)镃DD文件中已經(jīng)定義了ECU支持的診斷服務(wù)、通信參數(shù)等參數(shù),所以我們只需要把我們?cè)贑DD中定義好的診斷服務(wù)發(fā)送出去即可,如下圖所示:
CAPL 代碼實(shí)現(xiàn)
診斷常用CAPL函數(shù)
下面就讓我們來(lái)學(xué)習(xí)一下診斷中常用的一些CAPL函數(shù)。
診斷處理事件
on diagRequest NewRequest:進(jìn)行ECU仿真時(shí),收到診斷請(qǐng)求時(shí)調(diào)用。
on diagResponse NewResponse:Tester端收到診斷響應(yīng)時(shí)調(diào)用。
on diagRequestSent NewRequestsent:收到Tester端發(fā)送的診斷請(qǐng)求時(shí)調(diào)用。
常用的診斷函數(shù)列表及功能描述
通信/設(shè)定功能函數(shù)
diagGetCurrentEcu 用于獲取當(dāng)前ECU名稱;
diagGetLastCommunicationError 用于返回上一次診斷請(qǐng)求的錯(cuò)誤碼
diagSendRequest 用于發(fā)送診斷請(qǐng)求給目標(biāo) ECU
diagSetTimeout 用于設(shè)定診斷請(qǐng)求的超時(shí)時(shí)長(zhǎng)& diagSetTimeoutHandler 用于創(chuàng)建一個(gè)回調(diào)函數(shù),在診斷請(qǐng)求超時(shí)時(shí)被調(diào)用:
安全訪問(wèn)函數(shù)
diagSetCurrentSession 設(shè)置當(dāng)前ECU的會(huì)話狀態(tài):
diagStartGenerateKeyFromSeed 用于根據(jù)種子和密鑰算法DLL生成一個(gè)密鑰&_Diag_GenerateKeyResult 用于返回使用計(jì)算密鑰的結(jié)果:
對(duì)象訪問(wèn)函數(shù)
diagGetLastResponse 用于保存上一次收到的診斷請(qǐng)求響應(yīng):
診斷測(cè)試函數(shù)
函數(shù) | 功能描述 |
diagCheckObjectMatch | 用于檢測(cè)診斷響應(yīng)的 ID 是否與診斷請(qǐng)求相符 |
diagCheckValidNegResCode | 用于檢測(cè)返回的否定響應(yīng)是否在診斷描述文件 (CDD文件)中已經(jīng)定義 |
diagCheckValidPrimitive | 用于檢測(cè)指定的診斷對(duì)象是否符合規(guī)范 (CDD 文件) 中的定義 |
diagCheckValidRespPrimitive | 用于檢測(cè)收到的診斷請(qǐng)求響應(yīng)是否符合規(guī)范(CDD 文件)中的定義 |
testCollectDiagEculnformation | 用于向指定的診斷目標(biāo)發(fā)送診斷請(qǐng)求并將響應(yīng)寫入報(bào)告文件 |
testReportWriteDi-agResponse | 用于將接收到的診斷響應(yīng)寫入報(bào)告 |
用于等待上一次的診斷請(qǐng)求成功發(fā)送到 ECU | |
testWaitForDiagRe-sponse | 用于等待接收到請(qǐng)求的診斷響應(yīng) |
testWaitForDiagRe-sponseStart | 用于等待接收到請(qǐng)求的診斷響應(yīng)開始,即收到響應(yīng)的首幀報(bào)文 |
testWaitForUnlock-Ecu | 用于嘗試解鎖 ECU |
拓展小學(xué)堂
Vector對(duì)于診斷方面是有許多專業(yè)性的工具,下圖為診斷工具鏈的V模型,從開發(fā)到測(cè)試、從供應(yīng)商到主機(jī)廠都會(huì)涉及到的診斷工具。下面就由我來(lái)為大家進(jìn)行簡(jiǎn)單的介紹:
CANdelastudio:
CANdelaStudio用于定義ECU的診斷功能,并且生成診斷數(shù)據(jù)庫(kù)(CDD文件)來(lái)優(yōu)化整個(gè)診斷開發(fā)過(guò)程。CANdelaStudio支持文檔模板(CDDT文件),可以滿足不同廠商對(duì)同一個(gè)標(biāo)準(zhǔn)工具的各種特殊要求。在內(nèi)容上一個(gè)文檔模板對(duì)應(yīng)于一種診斷規(guī)范,它包含了對(duì)ECU所有允許的基本服務(wù)和在每個(gè)ECU中都必需實(shí)現(xiàn)的強(qiáng)制功能的一個(gè)正式描述。
ODXStudio:
基于ODX的診斷流程并以O(shè)DX格式查看、編輯、處理或管理診斷數(shù)據(jù)的所有用戶而設(shè)計(jì)。它支持單個(gè)ECU的診斷開發(fā),直至整個(gè)車輛平臺(tái)的水平。它同樣適合在汽車OEM和供應(yīng)商工作的用戶。ODXStudio處理的是ODX 2.0.1和2.2.0版本的數(shù)據(jù)。
CANoe.Diva:
作為一個(gè)生成診斷測(cè)試用例的工具,可以支持把CDD文件和ODX文件導(dǎo)入到Diva工程當(dāng)中,然后去通過(guò)一些相應(yīng)的配置,點(diǎn)一個(gè)按鈕自動(dòng)生成診斷相關(guān)的一些測(cè)試用例,再把生成的測(cè)試用例導(dǎo)入到CANoe中進(jìn)行診斷的自動(dòng)化測(cè)試,測(cè)試完成后會(huì)自動(dòng)生成相應(yīng)的測(cè)試報(bào)告。
vFlash:
刷寫工具,vFlash可以作為一個(gè)獨(dú)立的工具來(lái)實(shí)現(xiàn)程序刷寫。精簡(jiǎn)的用戶操作界面,利用模板來(lái)實(shí)現(xiàn)對(duì)于不同F(xiàn)lash刷寫規(guī)范的支持,可通過(guò)CAN/LIN/以太網(wǎng)進(jìn)行刷寫。在提高刷寫速度的同時(shí),可以刷寫更大的數(shù)據(jù),還能結(jié)合VN8810實(shí)現(xiàn)遠(yuǎn)程一鍵刷寫。
Indigo:
作為參數(shù)化工程診斷儀,支持工程診斷的應(yīng)用場(chǎng)景。同時(shí),Indigo支持客戶定制化,例如集成vFlash工程支持刷寫應(yīng)用場(chǎng)景、通過(guò)選擇車輛配置參數(shù)組支持車型配置、例程控制界面、可執(zhí)行工程但不可編輯工程配置的Indigo Run、中文界面并且還可以拓展支持遠(yuǎn)程診斷等功能。
總 結(jié)
CANoe作為一個(gè)強(qiáng)大的總線開發(fā)工具有很多的功能,本文就CANoe中的診斷功能相關(guān)的CAPL函數(shù)做了講解并簡(jiǎn)單的講解了VECTOR旗下的診斷工具,希望本文章可以為大家?guī)?lái)全新的使用體驗(yàn),如有問(wèn)題歡迎私信我們北匯信息。
北匯信息作為Vector的合作伙伴,已為多家OEM/Tier1定制部件級(jí)功能測(cè)試系統(tǒng)(包括車身域控制器,及傳統(tǒng)分布式控制器功能測(cè)試開發(fā)),提供系統(tǒng)級(jí)及實(shí)車級(jí)測(cè)試驗(yàn)證服務(wù),期待交流分享和合作的機(jī)會(huì)。
-
汽車電子
+關(guān)注
關(guān)注
3024文章
7869瀏覽量
166508 -
CAN
+關(guān)注
關(guān)注
57文章
2717瀏覽量
463377 -
診斷
+關(guān)注
關(guān)注
1文章
56瀏覽量
12273 -
汽車
+關(guān)注
關(guān)注
13文章
3423瀏覽量
37168
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論