前幾天在分享了Canoe中遇到的一些DoIP相關(guān)的問題如何解決,那CANoe中診斷功能如何使用呢。
在Vector的工具鏈中,cdd文件作為診斷開發(fā)和測(cè)試的載體,所以第一步需要導(dǎo)入cdd文件到CANoe中,其步驟如下。

添加完成后,需要對(duì)一些參數(shù)進(jìn)行檢查,包括配置的CanID,UDS協(xié)議層時(shí)間參數(shù),Tp層的時(shí)間參數(shù)等。
首先是配置發(fā)送報(bào)文的Id、Stmin、流控幀,BlockSize、FC Delay等,各個(gè)字段的含義如下。
STmin : TP層協(xié)議參數(shù),兩包連續(xù)幀發(fā)送的間隔
BlockSize : TP層協(xié)議參數(shù),收到流控幀后可發(fā)送連續(xù)幀數(shù)量。設(shè)置為0時(shí),發(fā)送數(shù)量無限制
FC Delay : CANOe 收到 首幀或連續(xù)幀后,回復(fù)流控幀的延遲時(shí)間。目的是防止CANoe的流控幀回復(fù)過快,導(dǎo)致接收端接受失敗。
Max.Length : 一幀最大傳輸數(shù)據(jù)量(首幀+連續(xù)幀)
Mixing of CAN2.0 and FD frames : 是否兼容CAN幀和CAN-FD幀。
Ignore : 默認(rèn)值, 不兼容,例如配置為CAN幀時(shí),CANOe不接受CAN-FD幀,配置為CAN-FD幀時(shí),也一樣。
Accecpt : 兼容,例如配置為CAN幀時(shí),CANOe可以接受CAN-FD幀,返回CAN幀。
Adapt : 兼容,例如配置為CAN幀時(shí),CANOe可以接受CAN-FD幀,并且能返回CAN-FD幀。

這個(gè)配置好之后就要處理Diagnostic Layer參數(shù)的設(shè)置了。如下圖所示,需要設(shè)置的參數(shù)如下:
Send test present : CANOe是否自動(dòng)發(fā)送3E 服務(wù),用于Session保持
S3 Client time : CANOe 自動(dòng)發(fā)送3E服務(wù)的間隔
S3 Server time : 下位機(jī)程序 未收到 任何診斷請(qǐng)求,保持在Default以外的Session的最大時(shí)間
P2 Server : 下位機(jī)程序 收到Request 到 開始回復(fù) Response 的時(shí)間間隔
P2 Client : 上位機(jī)程序 發(fā)送完Request 到 收到 回復(fù) Response 的時(shí)間間隔
P2 extended Server : 下位機(jī) 發(fā)送完NRC78 到下一次回復(fù)Reponse的時(shí)間間隔
P2 extended Client : 上位機(jī)收到 NRC78 到 收到下一次回復(fù) Response的時(shí)間間隔
Seed&Key DLL : 用于27服務(wù)解鎖,調(diào)用。dll自動(dòng)計(jì)算Key的值,該.dll文件由車廠或Tier1 提供

上面這些都設(shè)置好之后,就可以開始使用了。點(diǎn)擊Diagnotic Console,在連接好之后,就可以通過點(diǎn)擊不同的服務(wù)發(fā)送了。

上面將的是DoCAN的使用方法,如果是需要使用DoIP,有一些其他的配置,首先cdd里配置的地方不一樣,在Ethernet Networks這一欄,需要配置Interface是13400。

另外還需要設(shè)置邏輯地址,VIN碼等信息。



//建立DoIP連接,首先需要設(shè)置DUT IPv4地址,Tester邏輯地址,OEMSpecific字段void ECU_DoipInit(){DoIP_InitAsTester();DoIP_SetVehicleAddress(IPv4_str);DoIP_SetTesterLogicalAddress (gTesterAddress);DoIP_SetRoutingActivationOEMSpecific(sendOEMSpecific,OEMspecific);DoIP_ConnectToVehicle();}long DoIP_SendAndGetResponseData(byte diag_data[],word diag_size,byte resData[], long & resSize,dword vehicleAddress, dword testerAddress,dword timeout){long ret;DoIP_DataReq( diag_data, diag_size, vehicleAddress, testerAddress);ret=WaitForDoIPResponse(resData,resSize,timeout);return ret;}long DoIP_SendAndGetResponseData(byte diag_data[],byte resData[], long & resSize,dword vehicleAddress, dword testerAddress,dword timeout){long ret;word diag_size;diag_size=elCount(diag_data);DoIP_DataReq( diag_data, diag_size, vehicleAddress, testerAddress);ret=WaitForDoIPResponse(resData,resSize,timeout);return ret;}
-end-
分享不易,懇請(qǐng)點(diǎn)個(gè)【??】和【在看】