![]()
一、引言
ISO15765是一種廣泛應用于汽車電子系統的診斷通信協議,它定義了如何在控制器局域網(CAN)總線上實現診斷服務的傳輸。該協議解決了經典CAN數據鏈路層(ISO11898)與統一診斷服務(ISO14229)之間的數據長度不匹配問題,為車載診斷(OBD)和ECU刷寫等應用提供了可靠的通信機制。
ISO15765由多個部分構成,其中核心部分包括:
ISO15765-1:規定物理層和數據鏈路層,主要基于CAN總線。
ISO15765-2:定義網絡層(TP層),負責數據的分包與重組,是本文重點討論的內容。
ISO15765-3:規定應用層服務,與ISO14229(UDS)相兼容。
本文將重點圍繞ISO15765-2網絡層協議展開,詳細介紹其設計目的、報文格式、傳輸機制以及時間控制等關鍵內容。
二、協議設計目的
ISO15765的核心目標是解決ISO11898(經典CAN)與ISO14229(UDS)之間的數據長度不匹配問題。經典CAN數據鏈路層每個CAN幀最多承載8字節數據,而ISO14229作為面向多種總線的診斷協議,其應用層服務數據最大可達4095字節。為了在CAN這種短幀總線上傳輸長達數千字節的診斷數據,必須在網絡層引入分包與重組機制。ISO15765-2正是為此而生,它定義了如何將大型診斷數據拆分為多個CAN幀發送,并在接收端重新組裝,從而實現透明傳輸。
三、單幀與多幀傳輸 3.1 單幀傳輸(SF)
當診斷服務數據的長度不超過CAN單幀的可用載荷時,可采用單幀方式直接發送。在ISO15765中,第一個字節通常用于表示數據長度,因此實際可用數據長度為6或7字節(取決于是否擴展地址)。例如,若應用層發送6字節數據,則單幀格式為:第一個字節的高4位表示幀類型(單幀為0),低4位表示數據長度;后續6字節為實際數據。
3.2 多幀傳輸
若數據長度超過單幀容量(>6或7字節),則需使用多幀傳輸。發送端網絡層將數據拆分為一個首幀(FF)和多個連續幀(CF),并等待接收端通過流控幀(FC)來協調發送節奏。多幀傳輸最大支持4095字節(0xFFF)。
首幀(FF):包含分段數據的總長度(12位,最大4095)以及部分數據(通常6字節)。接收端收到首幀后,準備接收后續連續幀。
連續幀(CF):每個連續幀的第一個字節包含順序編號(SN,從1開始循環),后續7字節為數據。接收端根據編號重組數據。
流控幀(FC):由接收端發送,用于控制發送端連續幀的發送速率,包括允許發送的連續幀數量(BS)和最小間隔時間(STmin)。
ISO15765-2定義了四種網絡層協議數據單元(N_PDU),通過N_PCI(協議控制信息)的第一個字節的高4位來區分類型:
N_PCI Type
描述
用途
單幀 (SF)
0
單幀
傳輸不超過6/7字節的數據
首幀 (FF)
1
首幀
多幀傳輸的第一幀,包含總長度和起始數據
連續幀 (CF)
2
連續幀
多幀傳輸的后續幀,包含順序編號和數據
流控幀 (FC)
3
流控幀
接收端用于控制發送端的速率,包含流狀態(FS)、塊大小(BS)和最小間隔時間(STmin)
4.1 首幀(FF)
當數據長度超過單幀容量時,首幀作為多幀傳輸的起點。其N_PCI的第一個字節高4位為1,低4位與第二個字節共同構成12位數據總長度(0xFFF以內)。首幀可攜帶最多6字節數據,剩余數據將在后續連續幀中傳輸。
4.2 連續幀(CF)
連續幀用于傳輸剩余數據。第一個字節高4位為2,低4位為順序編號(SN),取值范圍0~15,循環使用。接收端根據SN將數據按序重組。連續幀每個最多攜帶7字節數據。
4.3 流控幀(FC)
流控幀由接收端在收到首幀后發送,用于協調發送端的連續幀發送。其N_PCI第一個字節高4位為3,低4位為流狀態(FS),后續兩個字節分別表示塊大小(BS)和最小間隔時間(STmin)。
流狀態(FS):
0:繼續發送(CTS)
1:等待(WT)
2:溢出(OVFLW,表示接收端緩沖區不足)
塊大小(BS):允許發送的連續幀數量,0表示無限制。
STmin:連續幀之間的最小間隔時間,以毫秒或微秒為單位。
單幀用于未分片的數據。第一個字節高4位為0,低4位表示數據長度(0~7,但實際可用為0~6或0~7取決于是否擴展地址)。后續字節為實際數據。
五、網絡層時間控制機制
為保證通信的可靠性,防止發送端和接收端因等待而永久掛起,ISO15765-2定義了一系列超時參數,用于控制網絡層的時間行為。這些超時機制確保在異常情況下能夠及時終止通信,避免總線阻塞。
5.1 關鍵時間參數
N_As:發送端從請求發送到成功發送CAN幀的最大時間。
N_Ar:接收端從接收到請求到發送響應幀的最大時間。
N_Bs:發送端在發送首幀后,等待接收端流控幀的最大時間。
N_Br:接收端在發送流控幀后,等待發送端下一個連續幀的最大時間。
N_Cs:發送端在發送連續幀后,等待接收端下一個流控幀或完成接收的最大時間。
N_Cr:接收端在接收連續幀過程中,等待下一個連續幀的最大時間。
以下是一個典型的多幀傳輸時序:
發送端發送首幀(FF),啟動定時器N_Bs。
接收端收到首幀后,準備接收并發送流控幀(FC),啟動定時器N_Br。
發送端收到流控幀后,停止N_Bs,開始發送連續幀(CF),并啟動N_Cs。
接收端收到連續幀后,若還有更多幀,則繼續等待,并重置N_Cr;若塊大小達到,可能再次發送流控幀。
整個傳輸過程中,任何超時都將導致通信中止,并向上層報告錯誤。
這些時間參數的設定需根據實際系統要求配置,以保證在不同總線負載和ECU處理能力下通信的穩定性。
六、診斷工具與ECU間的定時
在實際診斷應用中,診斷工具(如CANalyzer、PCAN等)與ECU之間的通信必須嚴格遵守ISO15765定義的時間參數。工具通常作為發送端或接收端,需要正確實現網絡層定時,否則可能導致通信失敗。例如,工具在發送多幀請求后,必須在N_Bs內收到ECU的流控幀;同樣,工具在收到流控幀后,需按STmin間隔發送連續幀。
七、總結
ISO15765協議通過引入網絡層(ISO15765-2),巧妙地將CAN總線短幀與UDS長數據結合,為汽車診斷提供了高效、可靠的傳輸機制。其核心在于四種報文類型(SF、FF、CF、FC)的靈活運用,以及精細的時間控制機制。理解ISO15765對于開發汽車診斷工具、設計ECU軟件以及排查通信故障具有重要意義。
隨著汽車電子架構的演進,雖然更高帶寬的CAN FD和以太網逐漸普及,但ISO15765作為經典的診斷協議,仍在大量現有車型中占據主導地位,是汽車工程師必須掌握的基礎知識。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.