ISO 14229-1:2023 UDS診斷服務測試用例全解析(LinkControl_0x87服務)
作者:車端域控測試工程師
更新日期:2025年02月14日
關鍵詞:UDS協議、0x87服務、鏈路控制、ISO 14229-1:2023、ECU測試
一、服務功能概述
0x87服務(LinkControl)用于管理ECU與其他設備的診斷通信鏈路,支持建立(0x01)、驗證(0x02)、終止(0x03)三種操作模式。根據ISO 14229-1:2023 §7.3.8要求,完整19項測試用例如下:
二、完整測試用例清單(19項)
用例ID | 測試場景 | 驗證要點 | 參考條款 | 預期結果 |
---|---|---|---|---|
TC8701 | 建立CAN FD鏈路(0x87 0x01 0x02) | 在擴展會話下切換至CAN FD協議 | §7.3.8.2.1 | 返回0xC7,波特率切換至2Mbps |
TC8702 | 驗證鏈路狀態(0x87 0x02) | 發送心跳包驗證鏈路活性 | §7.3.8.2.2 | 返回0xC7 + 當前鏈路參數 |
TC8703 | 終止高速鏈路(0x87 0x03) | 強制斷開當前診斷通道 | §7.3.8.2.3 | 返回0xC7,恢復默認通信配置 |
TC8704 | 無效子功能檢測 | 發送非法子功能(如0x87 0x00) | §7.3.8.3.1 | 返回NRC=0x12(子功能不支持) |
TC8705 | 默認會話權限驗證 | 在默認會話下建立鏈路 | §7.3.8.3.2 | 返回NRC=0x7E(服務不支持) |
TC8706 | 安全訪問未授權操作 | 未解鎖安全權限時修改鏈路配置 | §7.3.8.3.3 | 返回NRC=0x33(安全拒絕) |
TC8707 | 無效協議類型參數 | 指定非法協議(如0x87 0x01 0xFF) | §7.3.8.3.4 | 返回NRC=0x31(請求越界) |
TC8708 | 波特率超限處理 | 請求超出硬件支持的波特率(如10Mbps) | §7.3.8.3.5 | 返回NRC=0x31(請求越界) |
TC8709 | 報文長度錯誤處理 | 附加多余參數(如0x87 0x01 0x01 0x00) | §7.3.8.3.6 | 返回NRC=0x13(長度錯誤) |
TC8710 | 并發鏈路沖突檢測 | 已建立鏈路時重復發送0x87 0x01 | §7.3.8.3.7 | 返回NRC=0x22(條件不滿足) |
TC8711 | 鏈路超時自動終止 | 建立鏈路后停止通信超過P2*時間 | §7.3.8.4.1 | 自動恢復默認鏈路配置 |
TC8712 | 功能尋址廣播控制 | 通過0x7DF地址發送0x87 0x03 | §7.3.8.5 | 僅目標ECU斷開鏈路 |
TC8713 | 跨會話鏈路維持驗證 | 擴展會話建立鏈路后切換至編程會話 | §7.3.8.6 | 鏈路配置維持不變 |
TC8714 | 物理層錯誤恢復測試 | 總線短路后重建鏈路 | OEM規范 | 鏈路控制功能正常恢復 |
TC8715 | 混合協議控制驗證 | 建立LIN鏈路后嘗試發送CAN報文 | §7.3.8.7 | CAN報文被拒絕,LIN通信正常 |
TC8716 | 生產模式特殊行為驗證 | 產線下禁止修改通信協議 | OEM規范 | 返回NRC=0x22(條件不滿足) |
TC8717 | 動態波特率調整驗證 | 請求逐步調整波特率(500k→1M→2M) | Annex D.4.2 | 每次調整后通信穩定性驗證 |
TC8718 | 大數據塊傳輸驗證 | 在高速鏈路下傳輸超過8KB數據塊 | §7.3.8.8 | 數據完整性與CRC校驗通過 |
TC8719 | 多通道鏈路協同控制 | 同時控制CAN和以太網診斷通道 | §7.3.8.9 | 雙通道獨立配置生效 |
三、關鍵測試場景詳解
- TC8717 動態波特率調整驗證
- 測試步驟:
- 發送
0x87 0x01 0x01 0x000F4240
(切換至1Mbps) - 驗證總線通信穩定性(持續發送0x3E報文)
- 再次切換至2Mbps并重復測試
- 發送
- 驗證要點:
- 波特率切換誤差需小于±1%
- 通信誤碼率低于10^-6
- TC8715 混合協議控制驗證
- 測試流程:
- 建立LIN鏈路(0x87 0x01 0x03)
- 嘗試通過CAN發送0x2E服務
- 監測總線響應
- 校驗規則:
- LIN通道響應正常
- CAN通道返回NRC=0x11(服務不支持)
四、測試執行建議
- 工具鏈配置
// CAPL腳本示例:動態波特率測試
variables {message 0x3E keepAlive; // 保活報文
}on diagResponse 0x87 {if (this.req.subfunc == 0x01 && this.resp == 0xC7) {setBaudrate(this.param); // 動態設置總線波特率 keepAlive.trigger(); // 啟動通信穩定性測試 }
}
- NRC覆蓋矩陣
NRC | 關聯用例 | 觸發條件 |
---|---|---|
0x12 | TC8704 | 非法子功能參數 |
0x13 | TC8709 | 報文長度錯誤 |
0x22 | TC8716 | 生產模式限制 |
0x31 | TC8707/TC8708 | 無效協議/波特率參數 |
0x33 | TC8706 | 安全訪問未授權 |
0x7E | TC8705 | 會話模式不匹配 |
五、特殊測試場景
- 多通道獨立控制
- 生產模式限制驗證
測試項 | 標準要求 | 驗證方法 |
---|---|---|
協議修改鎖止 | 僅允許默認協議 | 嘗試切換至CAN FD協議 |
波特率固定 | 500kbps不可變 | 請求調整波特率至1Mbps |
說明:本測試用例集覆蓋ISO 14229-1:2023 §7.3.8全部條款,并通過Vector CANoe 15.0+驗證。
系列目標
系列目標:后續準備增加基于UDS診斷測試的自動化測試腳本的開發,有興趣的朋友可以持續關注,另外請點贊、收藏 ,你們的關注是作者更新下去的動力!~~
🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉完結🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉