基于K線的BCM診斷的實現
引言
本文引用地址:http://www.104case.com/article/128876.htm隨著汽車電子系統越來越復雜,診斷功能已經成為ECU軟件設計的一個重要組成部分,對ECU控制系統的正常運行及其大規模應用的市場化過程非常關鍵。隨著ECU功能的增加以及升級換代的需要,診斷標準及廠商自定義診斷功能越來越豐富,各種服務子功能也越來越細化,增加了診斷的難度,因此,深入研究診斷協議及其實現非常必要。K線和CAN總線是業內廣泛采用的兩種診斷標準,CAN總線在歐美車中廣泛使用,而K線在國產車中應用廣泛,筆者結合為某國產車型開發一款BCM(Body Control Module,車身控制模塊)的經驗,分析K線規范,然后從故障自診斷和在線診斷兩個方面講述一下BCM診斷功能的設計與實現。
K線協議分析
K線是ISO9141定義的用于診斷通信的串行數據總線,ISO14230在ISO9141的基礎上將其總線電壓擴展到24V,并完整定義了KWP2000協議,完善了診斷通信標準,擴展了診斷服務。K線通信采用SCI數據格式,數據鏈路層在串口通信上以軟件形式實現,物理層比較簡單,通過單根物理線完成半雙工異步通信,選擇LIN總線物理層芯片即可完成物理電平與邏輯電平的轉換。
ISO14230-1定義了K線物理層協議,ISO14230-2定義了數據鏈路層協議,ISO14230-3定義了應用層協議及各項診斷服務,下面從報文結構、初始化過程、定時參數三個方面重點介紹其數據鏈路層協議。
報文結構
K線診斷報文結構如表1所示。
K線報文由報文頭、數據字段及校驗和組成。報文頭包含格式字節Fmt、目標地址Tgt、源地址Src和附加長度信息Len;數據字段包括服務標識符Sid和數據Data,其長度由Fmt和Len決定;校驗和CS為單字節校驗,計算方式為對報文頭和數據字段中的所有數據累加求和,忽略求和過程中產生的進位。
評論