車載以太網診斷協議,Diagnostics over Internet Protocol簡稱為DoIP,可以通過以太網協議進行汽車診斷。DoIP是一種用于在車輛之間或車輛與診斷設備之間進行通信和診斷的標準協議。通過DoIP,診斷工程師可以通過以太網或遠程訪問和診斷車輛的電子系統,并可以進行以太網控制器的診斷訪問和刷寫。
DoIP是TSMaster支持的重要功能之一,本文主要介紹TSMaster的DoIP模塊中診斷服務功能操作,以及相應的傳輸層配置,并結合診斷功能常見的使用操作進行展開。
本文關鍵詞:DoIP,車載以太網診斷,基礎診斷,自動診斷流程,以太網
目錄
Catalog
1.TSMaster DoIP的同星以太網硬件準備
2.TSMaster DoIP模塊如何開始使用
4.TSMaster DoIP診斷傳輸層配置
5.TSMaster基礎診斷配置
6.TSMaster診斷控制臺
7.TSMaster自動診斷流程與注冊系統變量
8.診斷典型應用
1、TSMaster DoIP的同星以太網硬件準備
TSMaster的DoIP軟件功能的實現,是以同星的以太網硬件作為基礎。其中應用于DoIP的同星以太網硬件有TE1051、TE1054(規劃中)、TE1021。
TE1051
TE1051是一路以太網轉USB接口的設備,可以將標準以太網100Base-Tx 1000Base-T或車載以太網100/1000Base-T1的數據通過USB接口傳輸到PC上,并通過TSMaster軟件實現以太網數據的仿真、分析、測試,也可以實現DoIP和SOMEIP等功能。同時,TE1051設備小巧且外殼堅固,無需外部供電,適用于各種環境工況下的DoIP診斷刷寫。
圖1-1 TE1051硬件
TE1021
TE1021是一路車載以太網轉普通以太網接口(100/1000Base-T1 to 100Base-Tx/1000Base-T)的介質轉換工具。用戶可以將100Base-T1轉換為100Base-Tx或將1000Base-T1轉換為1000Base-T。可適用于不同以太網接口的DoIP應用場景,同時TE1021小巧且外殼堅固,攜帶方便。
圖1-2 ??TE1021硬件
2、TSMaster DoIP模塊如何開始使用
TSMaster的DoIP模塊的創建與基本使用流程如下:
▲ Step1:DoIP位于主菜單【應用】->【DoIP】,如圖2-1。
圖2-1 DOIP
▲ Step2:【添加DoIP】模塊,可以添加多個DoIP模塊,如圖2-2。
圖2-2 添加DoIP模塊
▲ Step3:根據ECU的配置設置車載以太網傳輸層參數,比如診斷儀類型、通道、被測件IP地址等以太網參數和安全訪問算法。具體操作流程在下文第3章節展開。
▲Step4:當配置好傳輸層相關參數與安全算法,啟動工程后,點擊【Connect DUT】連接車載控制器。當連接成功后,基礎診斷窗口和系統消息窗口會提示:連接以太網被測件成功,如圖2-3。以及在ISO15765-2的地方可以看到連接的服務消息,如圖2-4。
圖2-3 連接以太網被測件
圖2-4 ?ISO5765-2消息
▲Step5: 服務以及流程都配置好之后,在【自動診斷流程】處直接打開啟動按鈕,執行診斷流程。如圖2-5所示。
圖2-5 執行自動診斷流程
3、TSMaster診斷儀IP網絡接口配置
TSMaster的網絡接口配置流程如下:
▲Step1:找到主菜單【硬件】->【TCP/IP Stack】,如圖3-1。
圖3-1 TCP/IP Stack
▲Step2:【Eth CH1】右鍵選擇【Add Network Card】,如圖3-2。
圖3-2 添加網絡接口
▲Step3:在【General Setting】中選擇【用戶自定義Mac】,輸入自定義Mac地址。如圖3-3。
圖3-3 自定義Mac地址
▲Step4:【使能IPV4】,然后打開【添加】按鈕,輸入診斷測試儀的IP地址和IP掩碼,如圖3-4。
圖3-4 添加IP地址
4、TSMaster DoIP診斷傳輸層配置
TSMaster 提供了DoIP的診斷傳輸層的配置功能,用戶可以根據需求配置相應的傳輸層配置比如診斷儀類型、通道、IP地址、端口和請求和應答ID、以及安全算法等一系列配置。
4.1 診斷傳輸層
診斷傳輸層的配置根據診斷儀類型分為兩種:TE系列設備和系統TCP/IP。
4.1.1 TE系列設備
TE系列設備類型以TE1051為例,TE1051是一個1路以太網轉USB接口的工具,通過USB接口傳輸到PC上,并通過TSMaster軟件實現以太網數據的DoIP功能。
對于DoIP診斷傳輸層ISO TP,包含被測件和測試儀的以太網參數和診斷ID參數,如圖4-1所示。
圖4-1 DoIP診斷傳輸層ISO TP配置
DoIP診斷傳輸層ISO TP的具體參數如下分類介紹:
▲ 總線類型:診斷傳輸層類型。
使用同星DoIP功能選擇總線類型為【Ethernet】,如圖4-2所示。
圖4-2 ?DoIP診斷總線類型
▲ 診斷儀類型:診斷設備類型。
通過USB連接PC,選擇的診斷儀類型為【TE系列設備】,若是傳統的網線連接PC則選擇系統TCP/IP,如圖4-3所示。
圖4-3 ?Ethernet 診斷儀類型選擇
▲ 通道:診斷模塊用到的邏輯通道。
TSMaster 支持多個診斷模塊同時在線工作,這里用于選擇當前診斷模塊的應用邏輯通道,通過下拉列表進行選擇,如圖4-4所示。
圖4-4 ?Ethernet 通道選擇
▲IP地址掩碼:以太網通信使用的IP地址掩碼。
▲被測件IP:被測件的IP地址。
在DoIP通信中,IP地址掩碼和被測件IP地址需要根據具體的網絡拓撲結構和通信需求進行設置。
▲被測件端口:被測件端口號。
在ISO 13400標準中端口13400被指定為DoIP通信的默認端口號。
▲測試儀IP:測試儀的IP地址。
測試儀IP為連接PC的測試設備(如同星的TE051)的IP地址。根據IP地址掩碼和被測件IP,將PC的IP地址和被測件IP配置在同一網段內,以此兩者可以正常連接和通信。測試儀IP地址的配置在前面的第3章已詳細說明。
▲測試儀端口:測試儀或PC的端口
注意:對于診斷工具的端口號設置并沒有固定的規定,用戶可以根據需求自己設置或者使用軟件自動分配的端口號。
▲請求ID / 應答ID / 功能ID:設置診斷模塊PC工具端的診斷請求/應答/功能幀的 ID。
4.1.2系統TCP/IP
系統TCP/IP類型以TE1021為例,TE1021是直接通過系統的網口連接PC。
DoIP診斷傳輸層ISO TP,包含被測件和測試儀的以太網參數和診斷ID參數,如圖4-5所示。
圖4-5 ?DoIP診斷傳輸層ISO TP配置
DoIP診斷傳輸層ISO TP的具體參數如下分類介紹:
▲ 總線類型:診斷傳輸層類型。
使用同星DoIP功能選擇總線類型為【Ethernet】,如圖4-6所示。
圖4-6 ?DoIP診斷總線類型
▲ 診斷儀類型:診斷設備類型。
診斷儀通過PC系統的網口連接PC,則選擇的診斷儀類型為【系統TCP/IP】,如圖4-7所示。
圖4-7 ?Ethernet 診斷儀類型選擇
▲ 通道:診斷模塊用到的邏輯通道。
用于選擇當前診斷模塊的應用邏輯通道,這里默認是【System Ethernet Interface】,如圖4-8所示。
圖4-8 ?Ethernet 通道選擇
▲ IP地址掩碼:以太網通信使用的IP地址掩碼。
▲被測件IP:被測件的IP地址。
在DoIP通信中,IP地址掩碼和被測件IP地址需要根據具體的網絡拓撲結構和通信需求進行設置。
▲被測件端口:被測件端口號。
在ISO 13400標準中端口13400被指定為DoIP通信的默認端口號。
▲測試儀IP:PC的系統的網口的IP地址。
根據IP地址掩碼和被測件IP,將PC的IP地址和被測件IP配置在同一網段內,使得兩者可以正常連接和通信。找到電腦的【設置】->【網絡和Internet】,找到網口所連接的以太網,選擇【屬性】,在【IP分配】選擇【編輯】按鈕。選擇手動,打開IPv4,填寫IP地址以及子網掩碼。如圖4-9所示。
圖4-9 ?PC端以太網IP地址設置
▲ 測試儀端口:測試儀或PC的端口
注意:對于診斷工具的端口號設置并沒有固定的規定,用戶可以根據需求自己設置或者使用軟件自動分配的端口號。
▲ 請求ID / 應答ID / 功能ID:設置診斷模塊PC工具端的診斷請求/應答/功能幀的 ID。
4.2 診斷服務層
診斷服務層參數主要包含路由激活,S3,P2 時間參數,以及加載 SeedKey 的 安全訪問。如圖4-10所示。
圖4-10 ?診斷服務層參數
4.2.1 路由激活
【連接DUT之后自動執行路由激活命令】:勾選后,當測試儀或PC與被測件建立網絡連接后,軟件自動執行路由激活命令。
【TCP初始化激活超時時間】:這個參數描述了從TCP_Data連接建立過后到失效的最大超時時間。如果在設定時間范圍內都不執行激活路由的指令,DoIP模塊會主動關閉TCP_Data套接字。規范定義時間為2000ms。
【激活類型】,共有5種類型:
1. 【Default】:默認激活模式(Default Activation Mode),這是最基本的路由激活類型,通常用于建立標準的DoIP通信會話。在默認激活模式下,設備之間會進行基本的身份驗證和參數交換,以建立通信連接。
2. 【WWH-OBD】:全球調和車載診斷系統要求的診斷通信激活,在這種模式下,設備之間可能需要進行額外的身份驗證和安全驗證,以確保通信的合規性和安全性。
3. 【ISO/SAE Reserved】:為未來的標準或特定應用保留的路由激活模式。
4. 【Central Security】:Central Security(中央安全)路由激活模式,它涉及到車輛網絡安全的核心管理和認證機制。這種模式通常用于確保只有經過授權和驗證的設備才能與車輛的網絡系統進行通信。
5. 【Additional OEM-Specific Use】:為原始設備制造商(OEM)提供的特定用途而保留的額外路由激活模式。不同的OEM可以根據自己的需求和車輛網絡架構,定義和使用特定的路由激活模式,以滿足其獨特的診斷、通信或安全要求。
4.2.2 P2時間參數
【P2超時時間】:表示 ECU 收到診斷請求幀過后,最短回復的時間間隔。對于診斷工具端,該參數可以作為發送請求過后,等待回復的超時判斷參數。比如診斷工具發送了一個診斷報文,P2超時時間段內都沒有收到回復,則認為請求失敗,超時退出。
【P2擴展時間】:當診斷工具發出診斷報文過后,被測 ECU 來不及在 P2 超時時間段內做出應答,則回復一幀 7F XX 78 報文,告訴診斷工具端自己來不及響應,需要延長等待時間再回復。ECU 發送了延遲等待報文后,則把等待時間參數切換為 P2擴展時間。診斷工具端的超時判斷參數在收到延遲等待報文后,需要切換到 P2擴展時間。
上述兩個參數可以點開【詳情】按鈕,查看圖示說明,如圖4-11所示。
圖4-11 ?P2時間參數設置
4.2.3 診斷儀在線
診斷儀在線包括S3服務器時間和S3客戶端時間參數。
【S3服務器時間】:表示該ECU從Default會話被切換到其他會話過后,經過多長時間會自動切換回默認會話的超時時間。
【S3客戶端時間】:表示作為診斷Tester端,發送TesterPresent幀的時間間隔。
上述兩個參數的示意圖,可以點開【詳情】按鈕,查看圖示說明,如圖4-12所示。
圖4-12 ?S3時間參數設置
【診斷儀在線】:TSMaster 斷模塊中,可以選擇配置并使能診斷儀在線命令,如圖4-13所示。
圖4-13 ?診斷儀在線設置
當使能【診斷儀在線】,在診斷模塊上方會出現啟動【診斷儀在線】的開關。設置診斷儀在線為【打開】狀態,則按照設定的S3客戶端時間間隔發送該報文。
診斷儀在線的發送字節是可選的。支持三種類型:
【默認診斷儀在線服務】:為最常用的0x3E 0x80。
【從基礎配置中選擇】:從基本診斷配置中選擇配置好的3E命令。
【用戶自定義】:用于自定義的字節。
4.2.4 種子密鑰
TSMaster 中提供了兩種SeedKey種子密鑰的處理方法。第一種就是常用的加載主流的種子密匙的DLL動態鏈接庫;第二種是提供了內置的種子密鑰的解釋器,可以直接編寫SeedKey源代碼,并可以保存生成DLL動態鏈接庫。
—4.2.4.1載入動態鏈接庫
TSMaster不僅支持了C/C++,Delphi等語言封裝的DLL文件,也新增支持基于DotNet平臺如C#,VB.Net等語言編寫的DLL動態鏈接庫,可以高效兼容不同平臺生成的安全訪問DLL,為工程師帶來更便捷的使用體驗。
載入動態鏈接庫加載界面,如圖4-14所示。
圖4-14 ?載入動態鏈接庫
圖標從左往右依次為:
【1】 加載DLL
【2】 刪除DLL
【3】 打開DLL校驗器,通過DLL校驗器,用戶可以判斷加載的 DLL 接口是否正確,算法是否符合設計要求。比如,用戶選擇Seed的Level過后,輸入Seed值,點擊GenKey 進行判斷。如果該DLL接口跟模板定義接口統一,則會輸出提示信息:Generate Key Success,然后用戶根據Key值跟目標值對比,進一步確認DLL中的算法是否符合設計要求。如圖4-15。
圖4-15 ?SeedKey校驗器
【4】 可打開TSMaster安裝目錄下Seed&Key接口工程所在的文件路徑。
在TSMaster安裝目錄中,提供了封裝Seed&Key 算法的模板工程。如GenerateKeyEx,GenerateKeyExOpt, ASAP1A_CCP_ComputeKeyFromSeed,基于此模板工程開發即可得到能夠直接加載的DLL函數。TSMaster默認支持SeedKey函數接口具體為如下:
函數接口1:
unsignedintGenerateKeyEx(
constunsignedchar* ipSeedArray, /* Array for the seed [in] */
unsignedintiSeedArraySize, /* Length of the array for the seed [in] */
constunsignedintiSecurityLevel,/* Security level [in] */
constchar* ipVariant, /* Name of the active variant [in] */
unsignedchar* iopKeyArray, /* Array for the key [in, out] */
unsignedintiMaxKeyArraySize, /* Maximum length of the array for the key [in] */
unsignedint& oActualKeyArraySize); /* Length of the key [out] */
函數接口2:
unsignedintGenerateKeyExOpt(
constunsignedchar* ipSeedArray, /* Array for the seed [in] */
unsignedintiSeedArraySize, /* Length of the array for the seed [in] */
constunsignedintiSecurityLevel, /* Security level [in] */
constchar* ipVariant, /* Name of the active variant [in] */
constchar* iPara, /* */
unsignedchar* iopKeyArray, /* Array for the key [in, out] */
unsignedintiMaxKeyArraySize, /* Maximum length of the array for the key [in] */
unsignedint& oActualKeyArraySize) /* Length of the key [out] */
函數接口3:
boolASAP1A_CCP_ComputeKeyFromSeed(
constunsignedchar* ipSeedArray, /* Array for the seed [in] */
unsignedshortiSeedArraySize, /* Length of the array for the seed [in] */
unsignedchar* iopKeyArray, /* Array for the key [in, out] */
unsignedshortiMaxKeyArraySize, /* Maximum length of the array for the key [in] */
unsignedshort* opSizeKey) /* Length of the key [out] */
如何兼容其他函數接口
在日常使用中經常出現用戶已經開發好了SeedKey DLL,同時該 DLL 的接口不是上述三種中的任何一種,則無法直接加載到TSMaster的診斷模塊中。對此,可以通過二次封裝的形式將存在的SeedKey算法庫進行包裝,生成可以直接加載到TSMaster診斷模塊中的 DLL 。
以一個實際的實例來講解如何兼容其他接口函數的DLL文件,二次封裝流程的示意圖,如圖4-16。
圖4-16 ?二次封裝流程
▲第一步:查看當前的DLL,名稱為UserSeedKey.DLL。該函數內部的API函數有:
●Seed 等級為1的時候,調用函數void GetKeyFromSeed01(byte* ASeed, byte* AKey);
●Seed等級為3的時候,調用函數void GetKeyFromSeed03(byte* ASeed, byte* AKey);
●Seed等級為11的時候,調用函數 void GetKeyFromSeed11(byte* ASeed, byte* AKey);
進而得知當前DLL不支持上述三種函數接口,需要進行二次封裝。
▲第二步:選擇 TSMaster 安裝目錄中提供的 GenerateKeyEx 的模板工程,在該工程中用上述DLL的函數接口。基本思路是:
1. 采用 Loadlibrary 動態用戶現有的 DLL。
2. 根據傳入的Level參數,采用GetProcAddress函數動態獲取實際的用于計算Key的函數指針。
3. 如果獲取函數指針成功,則使用該函數指針傳輸Seed值,并計算對應的Key值。GenerateKeyEx工程二次封裝示例,如圖4-17。
圖4-17 ??GenerateKeyEx工程二次封裝示例
▲第三步:該GenerateKeyEx工程開發結束后,TSMaster 直接加載GenerateKeyEx所在的DLL。需要注意的是,用戶需要把現有的UserSeedKey.DLL拷貝到TSMaster根目錄或者GenerateKeyEx.DLL所在的目錄。如果不拷貝過去,GenerateKeyEx.DLL執行的時候會出現找不到對應依賴DLL的情況,解鎖失敗。
—4.2.4.2 編寫SeedKey代碼
在TSMaster的內置算法編輯器里的操作流程,示意如圖4-18所示。
圖4-18 ?內置算法編輯器
【1】選擇SeedKey算法的函數;
【2】打開算法校驗器,可以于檢查算法結果是否正確;
【3】打開編寫代碼的窗口;
【4】可用于導出所編寫代碼的為DLL文件;
【5】選擇一個需要的SeedKey函數接口,并支持擴展自定義函數接口;
【6】SeedKey源代碼編輯工作區,用于解密算法代碼的輸入與編輯。
值得注意的是,TSMaster 目前提供了最常用的算法函數的接口形式,如果使用自己特殊的函數接口形式,可以聯系上海同星支持,可將相應接口增加到選項中。
另外,所有的接口函數都定義了返回值類型為s32。增加此約束,主要是增加函數的嚴謹性。其中,返回值為0表示成功,返回值為其他值則有對應的錯誤碼。因此,在編輯代碼的時候,最后一行需要加上return返回值,如圖4-19所示,否則系統執行函數過后會認為算法執行失敗,不予往后面執行。
圖4-19 ?函數return返回值
5、TSMaster 基礎診斷配置
基礎診斷模塊包含基本診斷服務和組合服務。對于診斷過程中獨立執行的命令,在基本診斷服務中;用于文件下載的$34、$36和$37放入組合服務中。如圖5-1所示。
圖5-1 基礎診斷配置
5.1 添加刪除服務命令
把鼠標放到需要添加和刪除的服務命令上方,右鍵展開,選擇是否需要添加和刪除該服務,如圖5-2所示。
圖5-2 ?添加和刪除的服務命令
5.2 配置基本診斷參數
以診斷會話控制為例,主要包含如下參數的配置,如圖5-3所示。
圖5-3 ?配置基本診斷參數
【1】 配置服務名稱:用戶可以配置一個易于理解和管理的服務名稱。
【2】 是否功能標識符:本診斷服務是否采用功能標識符發送診斷請求。
【3】 是否有回復:用戶可配置是否檢查此服務的回復內容。
【4】 選擇子服務類型:比如 Session Control 中的 DiagnosticSessionType 就包含如上圖所示的 Session 類型。
【5】 參數列表的字節序:支持Motorola 和 Intel 字節序。
【6】 參數列表:診斷服務除了診斷 ID 和子服務類型 ID,還可以帶著參數發送給被測 ECU。參數列表包含請求和應答幀的參數列表,可以選擇增加/刪除多種類型的參數。如圖5-4。
圖5-4 ?新增與刪除參數
其中,根據不同服務指令,可以設置不同的ID參數。比如診斷請求會話里的診斷會話類型參數是必選設置,而參數列表是可選的。在修改配置后,界面上方會實時顯示實際診斷報文的示例報文,如請求協議數據包是:【10 01 xx xx】:xx 表示該參數是可變的,根據用戶實際填入的數據確定;診斷儀將要收到的應答協議數據包為【50 01 xx】。
圖5-5 請求與應答參數設置
5.3 診斷服務參數
診斷模塊參數支持 7 種數據類型。包括:UInt,Int,Single,Double,HexArray,Ascii和 SystemVar。如圖5-6。
圖5-6 診斷模塊參數類型
【1】 UInt:無符號整型,其數據長度必須小于32bits,并且為8的倍數,可以為8,16,24,32bits。
【2】 Int:有符號整形,其數據長度必須小于32bits,并且為8的倍數,可以為8,16,24,32bits
【3】 Single:單精度浮點數,數據長度為固定的32bits。用戶直接輸入輸出浮點數據。
【4】 Double:單精度浮點數,數據長度為固定的64bits。用戶直接輸入輸出浮點數據。
【5】 Hex Array:十六進制數組,數據長度為8的倍數。輸入數據滿足16禁止數據類型。
【6】 ASCII:ASCII字符串,數據長度為8的倍數。輸入數據為ASCII字符數組,轉化為16進制后進行發送。
【7】 SystemVar:系統變量,數據長度為8的倍數。TSMaster 系統變量可支持 Uint,Int,Single,Double,UintArray,DoubleArray,HexArray,String 等各種數據類型。其具體的數據類型由系統變量自身定義所決定。
5.4 配置組合服務
診斷組合服務($343637下載文件)共包含通用配置、擦除Flash配置、請求和傳輸數據配置、傳輸退出配置、擴展和輔助的配置。如下詳細介紹每個配置。
5.4.1 通用配置
通用配置中支持加載下載文件格式為hex/bin/s19/mot/srec/vdf等等。可以對起始地址和數據長度的字節數修改,調調整校驗和字節序和自定義CRC校驗算法導入和修改,并可通過下載文件查看器下載文件內容。如圖5-7。
圖5-7 通用配置
【1】服務名稱:配置該服務的名稱
【2】文件名稱:加載可執行文件,支持hex\bin\s19\mot\srec\vdf...
【3】hex viewer:TSMaster 內置了可執行文件查看編輯器 TSHexViewer,用戶可以用該工具,查看載入Hex 文件的詳細信息,如圖5-8所示。
圖5-8 查看載入的下載文件
【4】地址和長度標識符。可修改起始地址和數據長度的字節。
【5】校驗和相關配置。校驗和字節序支持英特爾和摩托羅拉。在程序下載過程中,為了保證數據的完整性,需要引入 Checksum 算法對數據的完整性和有效性進行校驗。TSMaster 診斷模塊的符合服務中,引入了主流的CRC 算法進行校驗。其選擇框如下圖所示,同時可實現自定義CRC校驗算法導入和修改,此處自定義算法只能是DLL文件的形式,如圖到5-9。
圖5-9 支持自定義CRC算法導入與修改
當加載好下載文件后,選擇指定的算法過,診斷模塊會對可執行文件計算其檢驗和值,包括該可執行文件每一個數據塊的檢驗和值以及文件整體的檢驗和值,如圖5-10所示。
圖5-10 文件與數據塊檢驗和值
TSMaster的診斷模塊能夠直接把系統變量作為參數,在計算好每一個數據塊與文件的檢驗和值過后,會進一步自動轉化成系統變量,如圖5-11。
圖5-11 檢驗和系統變量
生成好的檢驗和系統變量,可以通過系統變量的類型添加到服務參數中。以常用的校驗可執行文件的有效性為例,配置如下的 $31例程控制服務命令,就可以實現對文件有效性的檢查,如圖5-12。
圖5-12 檢驗和系統變量添加到服務參數
5.4.2擦除Flash配置
擦除Flash配置,可以配置無自動擦除、擦除Hex地址范圍、下載每一個數據塊之前擦除對應塊。期望回復值以實際ECU的響應進行填寫輸入。如圖5-13。
圖5-13 擦除Flash配置
5.4.3請求和傳輸數據配置
請求傳輸數據命令的數據格式可以修改,比如從00修改為AA。可以自定義最大傳輸數據塊的長度,默認為0x202,實際傳輸層數據包為514字節。如圖5-14。
圖5-14 請求和傳輸數據配置
5.4.4傳輸退出配置
傳輸退出配置,可以設置如下配置,如圖5-15:
● 無校驗
●在ECU端校驗($37+塊校驗和)
●用戶自定義
●在PC端校驗($37+塊校驗和)
校驗和類型選擇無校驗或校驗每一個數據塊
圖5-15 傳輸退出配置
5.4.5 擴展
擴展配置可以添加簽名文件、特殊的CRC算法,與通用配置-校驗和相關配置里的自定義CRC算法導入相比,此處更靈活可支持任意格式的文件,如圖5-16。
圖5-16 擴展配置
5.4.6 輔助
輔助中可對下載文件按連續地址的大小分割,比如將數據塊按0x1000進行分割。如圖5-17。
圖5-17 下載文件分割設置
6、診斷控制臺
診斷控制臺作為診斷命令調試器,可以讓用戶選擇每一條單獨的服務命令,編輯發送服務報文和接收服務報文,進行測試驗證。主要包含四塊工作區域,分別為服務命令選擇區,手動命令輸入區,診斷命令發送/應答區和診斷信息區,如圖6-1所示。
圖6-1 控制臺工作分區
6.1 服務命令選擇區
服務命令選擇區中是根據基礎配或者加載ODX/PDX診斷數庫生成的可執行服務列表。用戶可以雙擊執行選中的服務或者右鍵選擇執行該服務,如圖6-2所示。
圖6-2 服務命令選擇區
6.2 手動命令輸入區
測試過程中,如果用戶想發送任意的診斷命令,則可以在手動命令輸入區中輸入自己想要發送的任意報文。在輸入診斷報文過后,點擊右邊的Execute 按鈕,就可以完成診斷報文的發送。為了增加測試靈活性,還可以通過選擇框選擇采用物理地址發送還是功能 ID 發送診斷請求報文。如圖6-3。
圖6-3 手動命令輸入區
6.3 診斷命令發送/應答區
在本區域中,用戶可以編輯發送數據段以及期望接收數據段,啟動執行來驗證被測ECU 的診斷響應是否符合實際要求,以及是否同步診斷系統變量,如圖6-4。
圖6-4 診斷命令發送/應答區
6.4 診斷信息區
該區域分為服務層信息和ISO15765-2數據流區,其中服務層信息顯示當前在診斷模塊中的操作步驟流程與響應信息。如圖6-5。
圖6-5 服務層信息
當診斷服務沒有得到肯定響應或者無響應時,報錯提示信息等。如圖6-6。
圖6-6 服務層信息負響應提示
ISO15765-2數據流區,用于顯示診斷模塊詳細的服務層報文信息。結合前面配置的診斷數據庫,還可以把原始的報文數據解析成物理信號等呈現。以22服務為例,可以查看到診斷服務層解析后的參數數據,如圖6-7。
圖6-7 ?ISO15765-2數據流區
7、TSMaster自動診斷流程與注冊系統變量
7.1 診斷流程創建與管理
TSMaster的自動化診斷流程不僅僅是針對某一個具體的應用,而是針對整個項目的診斷流程進行管理。用戶可以根據完整項目的需求,配置測試診斷流程組,每個組里面可以包含多個不同的診斷流程,在一個診斷流程中包含具體的診斷步驟。
在UDS流程管理欄右鍵鼠標,展開流程用例管理的操作菜單,如圖7-1。
圖7-1 流程用例管理的操作菜單
操作菜單從上到下分別包含如下操作:
【1】切換UDS流程:切換到當前UDS流程節點。雙擊該節點,也可以達到切換到該流程節點的效果。切換到該節點過后,節點圖標和背景色為藍色,同時右邊的節點流程中展開顯示該UDS流程包含的詳細診斷步驟,如圖7-2。
圖7-2 ?切換UDS流程
【2】啟動UDS流程:啟動該節點的診斷流程。點擊該選項后,診斷模塊按照右邊的配置,從上往下自動執行診斷步驟。
【3】中斷UDS流程:點擊該節點后,中斷正在執行的診斷流程步驟。
【4】添加流程組:新增診斷流程組。比如新增Test Group1。診斷組下面可以再增加診斷流程用例,其本身不包含診斷步驟。
【5】添加新的測試流程:新增一個診斷流程用例,在診斷流程用例下面可以增加詳細的診斷步驟。
【6】編程名稱:選中一個流程組或者流程用例,右鍵選中Edit name編輯該節點的名稱。
【7】注冊系統變量:選擇一個診斷流程用例,注冊為系統變量。
【8】反注冊系統變量:選中已注冊為系統變量的診斷流程用例,取消注冊系統變量。
【9】刪除所選:刪除選中的節點。
【10】刪除所有:清楚所有的節點。
7.2 配置自動診斷流程
TSMaster自動診斷流程,可以快速配置多組診斷流程并可以設置循環運行和注冊系統變量用于外部調用等,如下進行詳細介紹。
7.2.1自動診斷工具欄介紹
診斷流程配置工具欄如圖7-3所示。
圖7-3 ?診斷流程配置工具欄
圖標依次從左往右為:
【1】新增診斷流程組。
【2】新增診斷流程用例。
【3】刪除選中的診斷流程組/用例。
【4】啟動配置好的診斷流程。
【5】終端正在運行的診斷流程。
【6】鎖定/解鎖流程配置區域。如果鎖定該區域,在診斷流程區域變得不可編輯。
【7】全選/全不選診斷流程。
【8】使能設置的循環運行次數。
【9】實際運行次數顯示。
7.2.2自動化診斷流程配置步驟
在UDS測試流程區里,右鍵創建新創建一個UDS流程,雙擊該流程進入后,解鎖邏輯器,并可以設置本流程可以循環運行的次數,默認不使能循環運行。如圖7-4。
圖7-4 ?創建新的UDS流程
然后在邏輯區右鍵添加步驟或者刪除步驟,并進一步解析管理欄中功能。如圖7-5。
圖7-5 ?診斷步驟添加與管理
【1】在左邊的管理欄中選中一個診斷流程節點。
【2】在右邊的編輯區域,添加、刪除、編輯診斷步驟。
【3】添加步驟后,選擇該步驟類型。
【4】編輯步驟名稱。
【5】選擇該步驟地址類型,物理地址還是功能地址。
【6】配置詳細的診斷請求數據包。
【7】配置詳細的診斷應答數據包。
【8】配置本步驟結束后步驟之間的等待時間。
【9】配置本步驟發生錯誤的錯誤處理方法。
7.2.3 診斷步驟類型
測試步驟中,為了增加診斷配置的靈活性,設計了4種類型可供選擇,主要包含:普通步驟,選擇已有配置,種子和密鑰,測試儀在線。通過這4種類型,基本上涵蓋了市面上所有主流的診斷流程需求,下面詳細介紹每種類型的特點。如圖7-6。
圖7-6 ?診斷步驟類型
【1】普通步驟:主要用于一些簡單的請求數據和應答數據都很直接的場合。直接在請求服務中填入想要發送的請求數據,在應答服務中填入期望的應答報文,比如服務請求數據為【10 01】,服務應答數據為【50 01 12 34】。如圖7-7。如果有些服務不需要響應,則可以不設置有回復。
圖7-7 ?普通步驟類型
【2】選擇已有配置:該配置設計的目的,就是讓用戶選擇在基礎診斷設置中已經配置好的診斷服務,這種方式是TSMaster最推薦的配置方式。選擇已有配置過程,如圖7-8所示。
圖7-8 ?選擇已有配置
【3】種子和密鑰:種子和密鑰只需要選擇種子等級和密鑰等級參數即可,解密的DLL直接關聯到傳輸層參數配置載入的種子和密鑰DLL中,如圖7-9所示:
圖7-9 ?種子和密鑰
對此,無論是在診斷控制臺模塊中,還是自動診斷流程模塊,都是需要先配置好傳輸層的參數配置。
【4】測試儀在線:為了支持更加靈活的測試需求,在自動化流程步驟中,提供了打開和關閉測試儀在線的命令選擇,以及配置該命令數據以及周期間隔:
▲ 是否啟動(start)/停止(stop)該命令,如圖7-10:
圖7-10 ?啟動/停止測試儀在線命令
▲ 配置測試儀在線的命令的數據以及周期間隔,如7-10:
圖7-11 ?配置測試儀在線的命令
7.2.4 步驟間隔時間
診斷流程模塊步驟跟步驟之間的延時是可以設置的,單位為ms,如圖7-12:
圖7-12 ?配置測試儀在線的命令
7.2.5 屬性
在屬性中,可以設置響應出錯后的以及本指令是停止還是繼續運行,如圖7-13所示:
圖7-13 ?屬性
在TSMaster后續產品規劃中,響應出錯后允許跳轉到指定的流程中(比如跳轉到擦除流程中),進一步增加自動運行流程模塊的靈活性。
7.2.6 使能步驟/位置調整
對于已經完成配置的診斷流程步驟,用戶根據左邊的選擇框來勾選想要執行的診斷步驟。如圖7-14。
關于執行順序調整:無論是測試用例組,測試用例還是測試用例中的具體步驟,用戶想調整相互之間執行順序的時候,直接拖拽對應的測試用例到相應位置即可。
圖7-14 ?診斷流程步驟使能
7.3診斷模塊的內生系統變量
在TSMaster新添加基礎診斷模塊后,系統變量管理器會自動生成所有者為診斷模塊Diagnostic的系統變量,通過修改系統變量可以配置對應的參數。如圖7-15。
圖7-15 ?診斷模塊系統變量
7.3.1 診斷服務通用系統變量
診斷內生的通用系統變量包含:
● 導出工程ExportProject:用于導出診斷工程。
●導入工程ImportProject:用于導入已有的診斷工程。
●診斷儀在線TesterIsPresent:是否啟動診斷儀在線命令。
●DLC:FD幀的最大DLC值,該參數只有在FD模式下才有效。
●接收連續幀最小幀間隔STMin(R):用戶自定義接收端STMin參數,單位ms。如設置為0,表示支持以最短的事件間隔接收,。
●發送連續幀最小幀間隔STMin(T):用戶定義發送端STMin參數,單位ms。
●用戶自定義連續幀最小幀間隔User Define STMin:是否手動定義連續幀最小幀間隔,單位ms。
●填充字節FiledByte:發送診斷幀填充字節。
●功能ID類型FunctionalIDType:傳輸層功能ID的類型,0是標準幀,1是擴展幀。
●功能ID (FunctionalID):傳輸層功能ID。
●應答ID類型ResIDType:傳輸層應答ID的類型,0是標準幀,1是擴展幀。
●應答ID (ResID):傳輸層應答ID。
●請求ID類型ReqIDType:傳輸層請求ID的類型,0是標準幀,1是擴展幀。
●請求ID (ReqID):傳輸層請求ID。
●總線類型BusType:設置總線類型:0代表CAN總線;1代表CANFD總線;2代表LIN總線;3代表DOIP(基于以太網的診斷)。
●通道Chn:設置診斷模塊的通道參數,比如0代表通道1,1代表通道2。
●自動化流程進度UDSProgress:自動診斷流程的實時進度,該變量用來獲取自動診斷流程的運行狀態。
●安全訪問種子和密鑰SeedAndKeyDLL:設置種子&密鑰DLL的絕對路徑,使用時注意轉義字符。
●P2擴展時間P2Extended:設置P2擴展時間。
●P2擴展時間P2TimeOut:設置P2超時時間。
●S3服務端時間S3ServerTime:設置S3服務端時間。
●S3服務端時間S3ClientTime:設置S3客戶端時間。
7.3.2 診斷服務特定系統變量
在基礎診斷配置的復合診斷服務添加新的服務后,系統變量管理器同樣會生成對應的系統變量:服務名_DataFile,此變量為下載文件的絕對路徑,修改此變量可控制下載文件的載入與切換。如圖7-16。
圖7-16 ?下載文件路徑系統變量
此外,當載入下載文件后,系統變量控制器會根據選擇的校驗和算法生成每塊校驗和,及總校驗和,下載文件的首地址和長度,如果已經添加了符合診斷服務,載入了下載文件,并且在基本診斷服務中關聯了下載文件相關變量,那么在替換下載文件的同時,這些關聯的變量也會隨之改變,最小的工程修改實現文件的靈活切換。
7.3.3 自動診斷流程的注冊系統變量
在診斷控制臺中可以根據需要靈活配置診斷服務,這些診斷服務配置好后,用戶需要在診斷控制臺中雙擊啟動該診斷服務。
如果用戶希望在Panel界面中或者程序中啟動診斷流程命令,步驟如下:
【1】首先在診斷Basic Diagnostic Config窗體中,選中目標服務,然后右鍵菜單把該診斷服務注冊為系統變量,如圖7-17所示。
圖7-17 ?診斷服務注冊為系統變量
注冊完成后,該流程的圖標多出3個小彩圓,表示成為一個注冊系統變量的服務,未注冊的流程為藍色圓,如圖7-18所示:
圖7-18 ?注冊為系統變量的圖標變化
【2】注冊完成后,在系統變量管理器中,就可以看到生成系統變量_Start和_Result如圖7-19。
圖7-19 ?注冊為系統變量的變量
其中_Start的數值賦值為:
● 0是空閑狀態。
● 1是正在執行狀態。
● 2是執行成功。
● 3是執行失敗。
_Result的數值結果為:
●>0表示啟動診斷流程
●=0表示中斷停止診斷流程
●<0為非法參數。
【3】在面板Panel中添加按鈕button控件,并關聯生成好的系統變量流程名_Start,將將按鈕按下事件設置為1,如圖7-20。
圖7-20 ?面板按鈕控件關聯系統變量
【4】運行程序,點擊Panel的測試按鈕,將值1賦給流程名_Start,診斷模塊執行相應的診斷流程,實現自動運行診斷流程。
8、DoIP診斷典型應用
本文設計了一個簡單的 BootLoader 流程來說明如何基于 TSMaster DoIP模塊配置一個Flash BootLoader 流程。
8.1 配置刷寫例程
【1】首先創建UDS流程:注意切換編輯器為解鎖狀態,否則無法添加新的流程步驟。如圖8-1。
圖8-1 解鎖編輯器
【2】切換默認會話,切換擴展會話,然后切換整車制造商自定義會話,在基礎診斷配置先提前配置好,如圖8-2。然后在自動診斷流程中使用選擇已有配置進行添加,如圖8-3。
圖8-2 基礎診斷配置會話服務圖8-3 ?切換默認會話、擴展會話、整車制造商自定義會話
【3】添加種子和密鑰步驟,解鎖ECU,如圖8-4。
圖8-4 ?種子和密鑰步驟
【4】基于讀取ID:F080位置處的數據。
方式1:使用普通步驟配置形式,如圖8-5。
圖8-5? 普通步驟讀取DID F188零件號
方式2:在基礎診斷配置中配置好,然后在流程中使用選擇已有配置,如圖8-6。
圖8-6 ?選擇已有配置讀取DID F080
【5】接著在IDF086處寫入數據20 11 20 00 00 00 00 00 00,如圖8-7。
圖8-7 ?IDF186處寫入字符串
【6】檢查刷寫前提條件,如圖8-8。
圖8-8 ?檢查刷寫前提條件
【7】添加FlashDriver/應用程序文件流程。首先在基礎診斷配置添加FlashDriver和應用程序文件,如圖8-9。
圖8-9 ?基礎診斷配置添加刷寫文件
然后在自動診斷流程中選擇相應的已有配置,選擇創建好的組合下載服務。如圖8-10。
圖8-10 ?選擇已有的組合下載服務
【8】采用例程控制擦除Flash。通過診斷基礎設置配置好后擦除指令,將起始地址和數據長度的系統變量,通過系統變量的方式添加請求參數,如圖8-11。
圖8-11 ?診斷基礎配置擦除指令
然后通過選擇已有配置加入到流程中。如圖8-12。
圖8-12 ?例程控制擦除Flash
8.2 DoIP診斷流程一鍵運行
在完成配置后,總的配置流程如圖8-13所示。
圖8-13 ?完成Flash BootLoader配置流程
連接以太網被測件之后,通過按鈕一鍵執行自動診斷流程,當每個步驟都是正響應時,會顯示為綠色,如圖8-14。
圖8-14 ?一鍵執行自動診斷流程
在Ethernet報文消息中可以查看完整的DoIP BootLoader刷寫流程,也可以使用總線記錄將過程報文記錄成blf文件保存。
圖8-15 ?Ethernet診斷流程報文
以上,基于TSMaster的DoIP模塊,實現零代碼方式,可以非常簡單快速地開發基于以太網的DoIP診斷流程應用。
-
以太網
+關注
關注
40文章
5460瀏覽量
172724 -
MASTER
+關注
關注
0文章
104瀏覽量
11329 -
車載以太網
+關注
關注
18文章
226瀏覽量
23076
發布評論請先 登錄
相關推薦
評論