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

神經網絡專家系統在電機故障診斷中的應用
什么是超級電容?你對超級電容了解多少?

采購GUTOR UPS備品備件,隱藏的“雷區” 你了解嗎?

Aigtek功率放大器在管道懸跨診斷中的具體應用


評論