統一診斷服務
統一診斷服務(英語:Unified Diagnostic Services,簡稱UDS)是車用電子的通訊協定,是電子控制器(ECU)中裝置診斷用的網絡傳輸協定,對應的標準是ISO 14229-1[1]。此標準是衍生自ISO 14230-3(KWP2000)以及目前已不使用的ISO 15765-3 (控制器區域網絡上的診斷通訊,DoCAN[2])。「統一診斷服務」中的「統一」是指此標準是國際性標準,不是特定公司的專用標準。目前所有一階供應商新生產的ECU都已支援此通訊協定,也已整合到其他標準中,例如AUTOSAR。現代汽車中的電子控制器控制了非常多的機能,包括燃料噴射裝置(EFI)、發動機控制器、傳動、防鎖死剎車系統(ABS)、門鎖、剎車、窗戶動作等。
診斷工具可以連接車上所有支援統一診斷服務功能的電子控制器。車上常用的控制器區域網絡只用到OSI模型的第一層及第二層,而統一診斷服務整合了OSI模型的第五層及第七層。服務識別碼(Service ID、SID)及服務相關的參數都放在8個位元組的訊息框內。
現今的車輛有配合離線診斷的診斷介面,讓電腦或是診斷工具(作為測試裝置)可以連接到汽車上的通訊系統。因此可以傳送統一診斷服務的請求到控制器,控制器必須回覆(可能是正面或是負面的回覆),這樣可以確認個別控制單元中的故障記憶體、更新控制單元的韌體、和硬件進行低階的互動(例如開啟或關閉特定的輸出)、或是進行特定的機能,目的是了瞭解電子控制器的環境或是操作條件,以診斷故障或是不希望出現的行為。
服務
功能群 | 請求 SID | 回覆 SID | 服務 | 說明 |
---|---|---|---|---|
診斷及通訊管理 | 0x10 | 0x50 | 診斷會話控制 Diagnostic Session Control |
UDS會使用不同的會話(session),可以用診斷會話控制(Diagnostic Session Control)來切換。可用的服務會依照目前有效的會話而不同。在一開始,控制單元預設是在「預設會話」(Default Session),有定義其他的會話,需要實現的會話會依照裝置的種類而不同。
此外,也有一些保留的會話識別符,為了汽車生產者及供應商的特殊需求而設計。 |
0x11 | 0x51 | ECU重設 ECU Reset |
ECU重設的服務是要重新啟動ECU。依照控制單元硬件以及實現方式的不同,有以下幾種不同的重設:
也有一些汽車生產者及供應商定義的特殊數值。 | |
0x27 | 0x67 | 安全性存取 Security Access |
可以用安全性檢查(Security check)來啟動大部份的安全關鍵性服務(security-critical services)。此情形下控制單元會傳送「密碼種子(seed)」到客戶端(電腦或是診斷工具)。客戶端再用密碼種子計算金鑰(key)送回控制單元,以此來解安全關鍵性服務 | |
0x28 | 0x68 | 通訊控制 Communication Control |
此服務可以關閉控制單元傳送以及接收訊息的功能。 | |
0x29 | 0x69 | 認證 Communication Control |
標準在2020年的更新版本,提供一種標準化的方式,可以提供一些安全性存取(0x27)服務無法支援的現代認證方式,包括以PKI為基礎的認證交換,以及雙向的驗證機制。 | |
0x3E | 0x7E | 測試者存在 Tester Present |
若客戶端長時間沒有交換通訊資料,控制單元會自動離開目前的會話,回到「預設會話」,也可能會進入休眠模式。而此一服務的目的就是讓控制單元知道客戶端仍存在。 | |
0x83 | 0xC3 | 存取時序參數 Access Timing Parameters |
在控制器及從機的通訊中,需要觀察一定的時間,若時間超過此限制,仍沒有送出訊息,就會假設連接已有問題。可以讀取及修改此時間。 | |
0x84 | 0xC4 | 安全資料傳輸 Secured Data Transmission |
||
0x85 | 0xC5 | 控制DTC設置 Control DTC Settings |
啟動或關閉部份(或所有)錯誤的偵測。若診斷工作是在車內進行的,這個機能格外重要,因為診斷工作有可能造成部份零件的異常行為。 | |
0x86 | 0xC6 | 事件回覆 Response On Event |
||
0x87 | 0xC7 | 鏈結控制 Link Control |
服務鏈結控制是用來設置診斷存取的位元率。多半只在中間閘道器上實現此一機能。 | |
資料傳輸 | 0x22 | 0x62 | 根據識別碼讀取資料 Read Data By Identifier |
透過此服務可以讀取控制單元中一個或多個的資料。這些資料的種類不限,也可以有不同的長度,例如料號或是軟件版本等。也可以讀取像是感測器狀態之類會變動的值。每一個值會對一個資料識別碼(Data Identifier、簡稱DID),數值從0到65535。會用正常的CAN訊號來傳送特定ECU使用的資料。DID資料只用在資料請求上,也可以用一些沒有ECU使用的DID來傳送資訊,雖ECU不會使用,但服務工具或軟件測試程式可以使用這類的資訊。 |
0x23 | 0x63 | 根據地址讀取記憶體 Read Memory By Address |
依給定地址讀取實體記憶體中的值。測試工具可以用此機能來讀取軟件內部的行為。 | |
0x24 | 0x64 | 根據識別碼讀取縮放比例資料 Read Scaling Data By Identifier |
||
0x2A | 0x6A | 周期性根據識別碼讀取資料 Read Data By Identifier Periodic |
透過此服務可以讓控制單元週期性傳送資料。只能傳送透過「動態定義資料識別碼」定義的識別碼 | |
0x2C | 0x6C | 動態定義資料識別碼 Dynamically Define Data Identifier |
此服務提供一個修正裝置資料識別碼(DID)的方式,可以重新調整資料識別碼。這個通常是不同資料識別碼的組合,或者單純是所有DID的串接。
請求資料可以依以下的原則規劃組態:
| |
0x2E | 0x6E | 根據識別碼寫入資料 Write Data By Identifier |
可以更改資料識別碼中的數值,命令中除了資料識別碼外,也要同時提供要修改的數值 | |
0x3D | 0x7D | 根據地址寫入到記憶體 Write Memory By Address |
「根據地址寫入到記憶體」可以讓外面診斷工具寫資訊到ECU裏的特定地址,或特定的連續地址 | |
儲存資料傳送 | 0x14 | 0x54 | 清除診斷資訊 Clear Diagnostic Information |
清除已儲存的診斷問題碼(Diagnostic Trouble Code,簡稱DTC) |
0x19 | 0x59 | 讀取DTC資訊 Read DTC Information |
DTC是診斷問題碼。每一個DTC對應一個控制單元的故障,會以其編碼儲存在錯誤記憶體中,可以在任意時候讀取。除了錯誤外,也可能會記錄一些相關的資訊,也可以一併讀取。 | |
輸入/輸出控制 | 0x2F | 0x6F | 根據識別碼的輸入/輸出控制 Input Output Control By Identifier |
此服務可以讓外部系統介面透過診斷介面控制輸入/輸出訊號
透過設置選擇位元組,可以設置有關請求的特殊條件,可以設置以下的值: ReturnControlToECU:裝置需將訊號的控制權送回 ResetToDefault:測試者試圖重設訊號,回到系統的預設值 Freeze Current State:裝置需凍結目前的訊號,不允許變化 ShortTermAdjustment:裝置需使用目前提供的訊號值 |
遠端啟動程式 | 0x31 | 0x71 | 遠端控制 Routine Control |
此控制服務程式可以進行各種的服務,有三種不同的資訊種類:
可以特別標示啟始及結束的資訊參數,因此可以實現每一種專案特定的服務。 |
上載/下載 | 0x34 | 0x74 | 請求下載 Request Download |
利用「請求下載」服務,可以下載新的軟件或是其他資料到控制單元內。需標示資料的位置以及長度,因此,控制器可以知道資料封包的大小。 |
0x35 | 0x75 | 請求上載 Request Upload |
「請求上載」服務和「請求下載」服務是類似的,此服務可以將控制單元的軟件傳送給測試者。也需標示資料的位置以及長度,測試者需指定資料封包的大小。 | |
0x36 | 0x76 | 傳送資料 Transfer Data |
在真正傳送資料時,會用到此一服務,不論是上載或是下載都是使用此一服務。傳送的方向則視之前是「請求上載」服務或「請求下載」服務而不同。此一服務會用之前指定的最大封包長度傳送資料,若資料長度超過最大封包長度,需要用數個封包來傳送,直到傳送完成為止。 | |
0x37 | 0x77 | 請求結束傳送 Request Transfer Exit |
可以用此服務中止資料傳送。此服務用在測試着和控制單元比較時。在執行時,控制單元可以負面回應來中止資料傳送請求。若指定的資料量還沒傳送完,也可以用此服務中止傳送。 | |
0x38 | 0x78 | 請求檔案傳送 Request File Transfer |
此服務用來啟始客戶端到伺服器的檔案下載,或是伺服器到客戶端的檔案上載。也可以提供一些檔案系統的相關資訊。 | |
0x7F | 否定回應 Negative Response |
此回應會在服務無法進行時回覆,例如不支援的資料識別符。此時會加上否定的回應碼。 |
相關條目
- 車上診斷系統,廣義的車上診斷服務
- OBD-II PID,類似功能的美國標準
參考資料
外部連結
- Unified Diagnostic Services - ISO 14229 (poster by softing.com)