李青濤,錢楓,3,王明達,王潔,祝能,王超
(1.430081 湖北省 武漢市 武漢科技大學;2.100012 北京市 中國環(huán)境科學研究院;3.264207 山東省 威海市 山東鳴川汽車集團有限公司)
隨著對重型車污染物排放監(jiān)管力度的加大,國家生態(tài)環(huán)境部發(fā)布的GB 17691-2018《重型柴油車污染物排放限值及測量方法(中國第六階段)》明確規(guī)定所有國Ⅵ車型必須安裝OBD 車載終端,使用SAE J1939、ISO 15765、ISO 27145 通信協(xié)議實現(xiàn)OBD 車載終端與車輛CAN 總線的通訊,對發(fā)動機尾氣排放狀況進行實時監(jiān)控和故障診斷[1]。
由于各個主機廠采用的通信協(xié)議類型不盡相同,致使不同車型的通信參數(shù)配置也存在較大差異[2]。整車各控制域CAN 通道通信參數(shù)一致時,車載終端系統(tǒng)可以快速配置相同的通信參數(shù)并實現(xiàn)通信,但是由于車型更新、配置升級、網(wǎng)絡結(jié)構優(yōu)化等需求變化,整車各控制域通信機制也不斷調(diào)整,導致單個車輛的多通道CAN 總線可能存在不同的波特率、通信協(xié)議,車載終端若無法實現(xiàn)通信協(xié)議自適應,將導致其與車輛ECU 通訊失敗,無法起到OBD 車載終端的實時監(jiān)控診斷功能[3]。目前存在的CAN總線轉(zhuǎn)換器多數(shù)是協(xié)議轉(zhuǎn)換或者是波特率轉(zhuǎn)換,功能單一,不能對CAN 總線各通信參數(shù)進行較完整的識別,且應用于車載終端系統(tǒng),不僅增加成本,而且也會降低數(shù)據(jù)傳輸效率和增加誤碼率[4-5];汽車OBD 診斷儀可以識別車輛各種通信參數(shù),但是需要手動選擇匹配,使得量產(chǎn)的車載監(jiān)控終端安裝使用更為繁瑣。
針對當前國Ⅵ重型車適配的OBD 車載終端對CAN 總線波特率和協(xié)議類型不能進行自動識別,為了提高終端的通用性、兼容性和自適應性,設計了一種CAN 總線協(xié)議自適應算法。該算法首先通過輪詢法對CAN 總線的波特率進行準確識別;其次利用協(xié)議通信模式特征和數(shù)據(jù)包特征字符對車輛各CAN 通道總線通信協(xié)議類型進行自動識別,相對于單一的識別算法,該算法識別率和準確率更高,可以快速匹配車輛總線并進行可靠的數(shù)據(jù)通信。
OBD 車載終端遵循模塊化設計原則,旨在降低整體設計復雜程度[6]。車載終端通過CAN 數(shù)據(jù)采集模塊采集車輛實時運行數(shù)據(jù)、診斷數(shù)據(jù)、狀態(tài)參數(shù)以及其他需求信息,經(jīng)加密簽名后,利用2G或4G 無線通信模塊按照國Ⅵ標準規(guī)定的通信協(xié)議上傳于網(wǎng)絡平臺。圖1 是終端系統(tǒng)硬件架構,MCU選用國產(chǎn)芯片GD32F403RC,負責整個系統(tǒng)的運行調(diào)度,具有低功耗、高集成度和高性能的特點。
圖1 終端系統(tǒng)結(jié)構示意圖Fig.1 Schematic diagram of terminal system structure
CAN 控制器與車輛CAN 總線的硬件連接如圖2 所示。CAN 收發(fā)器采用恩智浦公司的TJA1042 芯片,控制車輛CAN 總線信號采集工作。CAN 收發(fā)器與車輛上的CAN 總線之間采用雙絞線形成的差分信號進行異步串行通信,依靠收發(fā)器中的位定時寄存器對總線電平分位,進而實現(xiàn)波特率設置;利用CAN 總線協(xié)議實現(xiàn)數(shù)據(jù)的穩(wěn)定傳輸[7-8]。
圖2 終端CAN 模塊與車輛通信示意圖Fig.2 Schematic diagram of terminal CAN module and vehicle communicationstructure
波特率參數(shù)配置在CAN 數(shù)據(jù)采集模塊的底層驅(qū)動中進行設置,根據(jù)波特率的計算公式(1)-(6),只需要合理設置BAUDPSC、BS1 和BS2 三個參數(shù)的值即可改變CAN 波特率。
式中:BaudRate——波特率;Bit_Time——位時間;tSYNC_SEG——同步段占用時間單元;tBS1——位段1總時間單元;tBS2——位段2 總時間單元;tq——最小時間單元;tpclk1——總線系統(tǒng)時鐘周期;BS1、BS2——位段1、位段2;BAUDPSC——CAN 總線系統(tǒng)時鐘預分頻系數(shù)。
MCU 內(nèi)部集成的CAN 控制器功能模塊有3 種工作狀態(tài):初始化狀態(tài)、正常通訊狀態(tài)和睡眠狀態(tài),通信過程中處于正常通訊狀態(tài)。寄存器CAN_INTEN 是CAN 中斷使能寄存器,控制各個中斷使能位,如圖3 所示。其中位2 和位5 分別是接收FIFO0 和FIFO1 滿中斷使能位,1 使能,0 禁用;位15 為錯誤中斷使能位,1 使能,0 禁用。在CAN 處于正常通訊狀態(tài)時,分別使能寄存器CAN_INTEN 位2、位5 和位15,讀取CAN_RFIFO0 接收FIFO0 寄存器、CAN_RFIFO1 接收FIFO1 寄存器和CAN_ERR 錯誤寄存器的狀態(tài)值,判斷當前波特率是否正確。
圖3 CAN_INTEN 中斷使能寄存器Fig.3 CAN_INTEN interrupt enable register
汽車CAN 總線上廣泛使用高速CAN:250 kB/s和500 kB/s[9],考慮到車載終端與車輛匹配使用的特性,車載終端僅需要檢測車輛總線上這2 種波特率即可。波特率自適應流程如圖4 所示,在自動識別波特率過程中,控制器不斷讀取錯誤寄存器的狀態(tài)值并進行判斷,若有錯誤中斷發(fā)生,說明當前波特率不正確,錯誤寄存器累加計數(shù),當計數(shù)值大于設定的錯誤報文閾值時,設置波特率參數(shù),切換波特率;若無錯誤中斷發(fā)生,說明當前波特率正確,波特率匹配成功。
圖4 波特率自動識別圖Fig.4 Baud rate automatic identification diagram
協(xié)議類型主要通過不同協(xié)議通信模式特征進行區(qū)分。SAE J1939 協(xié)議、ISO 15765 協(xié)議和ISO 27145 協(xié)議均以開放式系統(tǒng)互聯(lián)參考模型為基礎進行制定,相比OSI 的7 層協(xié)議,3 種診斷協(xié)議在物理層、數(shù)據(jù)鏈路層、網(wǎng)絡層和應用層進行詳細規(guī)定,并且各有不同,總線通信機制也具有很大差別[10-13]。如圖5所示,對于SAE J1939 協(xié)議,通訊報文多以廣播形式發(fā)送于CAN 總線,對于特定需求的消息報文,需要節(jié)點請求相應PGN 來獲取;對于ISO 15765 協(xié)議和ISO 27145 協(xié)議,所有通信報文是基于請求-回復型的通信機制,需要節(jié)點周期間隔性請求信息才能獲取數(shù)據(jù)。因此,根據(jù)總線上報文通信模式特征即可區(qū)分是廣播型SAE J1939 協(xié)議還是請求-回復型ISO 15765 或ISO 27145 協(xié)議。
圖5 廣播型協(xié)議和請求-回復型協(xié)議消息傳輸機制對比Fig.5 Comparison of broadcast and request-reply protocol message transmission mechanisms
如表1 所示,可以根據(jù)各協(xié)議通信模式特征的不同,先區(qū)分出廣播型協(xié)議和請求-回復型協(xié)議。對于廣播型協(xié)議如SAE J1939 協(xié)議,車輛各個電控節(jié)點會周期性向CAN 總線上發(fā)送數(shù)據(jù),當波特率匹配一致時,終端會接收到相應報文,終端以此來初步區(qū)分廣播型和請求-回復型協(xié)議。
表1 通信模式特征區(qū)分Tab.1 Communication mode feature distinction
對于請求-回復型協(xié)議ISO 15765 協(xié)議和ISO 27145 協(xié)議,利用特征字匹配算法對數(shù)據(jù)流中的凈荷內(nèi)容的更深層次的掃描和匹配,識別數(shù)據(jù)報文中的指紋信息,與已定義的特征字進行匹配比對,進而確定協(xié)議類型。ISO 27145 協(xié)議雖然基于ISO 15765 協(xié)議制作,但是兩者在一些固定的參數(shù)標識符上存在較大不同,因此可以根據(jù)靜態(tài)特征標識符進行區(qū)分[14],ISO 15765 協(xié)議和ISO 27145 部分服務標識符SID 和參數(shù)標識符PID 對比如表2 所示。
表2 ISO 15765 協(xié)議和ISO 27145 部分SID 和PID 對比Tab.2 Comparison of partial SID and PID between ISO 15765 protocol and ISO 27145
依據(jù)不同數(shù)據(jù)流的傳輸規(guī)則,特征字匹配識別存在單幀識別與多幀識別的差別,單包識別通過單幀報文匹配即可確定協(xié)議類型,多幀報文匹配則需多次檢驗比對才能準確辨別協(xié)議類型。本文特征字匹配識別主要考慮多幀報文的識別,報文特征字匹配處理流程如圖6 所示,通過逐包分析和匹配的識別技術,對CAN 總線協(xié)議能做到比較準確的識別。
圖6 特征字匹配處理流程Fig.6 Feature word matching processing flow
自適應算法的核心思想是根據(jù)車輛上多通道CAN 總線通信參數(shù)的差異動態(tài)匹配車載監(jiān)控終端的波特率和通信協(xié)議,各通信參數(shù)配置格式如表3所示。
表3 CAN 總線通信參數(shù)配置Tab.3 CAN bus communication parameter configuration
式中n 與m 均為自然數(shù)??芍灿?4 種組合方式,但由于SAE J1939 只有擴展幀格式,實際上只需考慮20 種匹配方式。
CAN 總線協(xié)議自適應算法實現(xiàn)流程如圖7 所示。具體步驟:(1)在終端啟動自檢后,會從FLASH 配置區(qū)讀取保存的協(xié)議檢測狀態(tài)參數(shù),若協(xié)議已經(jīng)檢測成功,則直接省略檢測步驟;若未檢測成功,則開始初始化CAN 通信參數(shù),執(zhí)行協(xié)議檢測程序。(2)車載終端在尚未確定車輛總線各通信參數(shù)的情況下處于監(jiān)聽檢測模式,終端在規(guī)定時間內(nèi)循環(huán)監(jiān)聽檢測各通道上的報文信息。(3)檢測各通道總線上是否有接收錯誤產(chǎn)生或者數(shù)據(jù)格式不正確或未接收到數(shù)據(jù),如果有則表示當前波特率不匹配或協(xié)議錯誤或者總線處于空閑狀態(tài);反之,說明當前通信通道波特率、協(xié)議類型及數(shù)據(jù)幀類型與車輛上通信參數(shù)一致。(4)若協(xié)議檢測成功,則保存當前通道的通信參數(shù),該通道可正常通信;若還未檢測成功,則輪詢切換協(xié)議及波特率類型,直至匹配成功為止。
圖7 CAN 總線協(xié)議自適應算法實現(xiàn)流程Fig.7 CAN bus protocol adaptive algorithm implementation process
為提高協(xié)議檢測效率,進行以下優(yōu)化:(1)依據(jù)CAN 總線波特率使用廣泛性,各通信通道的波特率默認設置為250 kB/s。(2)由于重型汽車多采用SAE J1939,故終端初始匹配的各通道協(xié)議類型均為SAE J1939。(3)自適應算法是利用輪詢遍歷方式進行檢測參數(shù),參數(shù)檢測時間需設定上限,該項服務時間必須考慮總線信息訪問沖突、信息傳遞延時時間[15]、報文優(yōu)先級及周期性報文時分調(diào)度等因素的影響,保障各個檢測部分的公平性[16]。(4)考慮到檢測過程中的軟硬件運行環(huán)境變化,設置循環(huán)檢測次數(shù)上限,到達次數(shù)上限后終端自動重啟,重新開始循環(huán)檢測,提高正確匹配性能。(5)為進一步增強OBD 車載終端的CAN 總線協(xié)議的自適應性能,對于終端出廠后未配置任何通信參數(shù)、外界干擾導致終端和車輛通信異常、車輛升級或其他原因?qū)е驴偩€波特率改變等特殊情況,軟件設計中加入了總線通信參數(shù)實時判斷并配置功能。
對OBD 車載終端的CAN 總線協(xié)議自適應算法實驗驗證主要利用的工具有車載24 V 電源、周立功CAN 適配器、PC 機、車載終端、仿真器和串口線束及其他線束,用CANTest 測試軟件和SecureCRT調(diào)試終端對車載終端中CAN 總線協(xié)議自適應狀態(tài)進行記錄。實驗之前,將電源、CAN 適配器、PC 機、車載終端、仿真器和串口線束連接可靠。
以重型柴油車為測試對象,針對不同車型進行測試,進一步觀察OBD 車載終端的CAN 總線協(xié)議自適應性能。終端在車輛上安裝成功后,對多通道的CAN 總線協(xié)議進行自動識別。結(jié)果表明,OBD車載終端的CAN 總線協(xié)議自適應模塊能正常滿足功能需求,實現(xiàn)與車輛總線協(xié)議可靠匹配,其中兩通道上的SAE J1939 協(xié)議和ISO 15765 協(xié)議自適應實驗環(huán)境和日志信息如圖8、圖9 所示,實驗結(jié)果和實車各通道總線協(xié)議一致。
圖8 實驗環(huán)境Fig.8 Lab environment
(1)本文在重型車適配的OBD 車載終端基礎上設計了一種CAN 總線協(xié)議自適應算法。通過對CAN 總線波特率輪詢識別、協(xié)議通信模式特征識別和特征字匹配識別等多種識別方法的結(jié)合大大提高了協(xié)議的識別率和準確率,利用CAN 總線協(xié)議自適應算法使終端對車輛總線通訊參數(shù)具備自動識別能力,進一步優(yōu)化了OBD 車載終端的應用性能。
(2)實驗結(jié)果表明,應用CAN 總線協(xié)議自適應算法后的OBD 車載終端能在不同通道上完成各通信參數(shù)的自動識別,并可識別多種CAN 總線通信協(xié)議,實現(xiàn)快速匹配,適應多樣化的需求。算法系統(tǒng)具有較高的穩(wěn)定性和實用性,大大提高OBD車載終端的實際使用性能和應用范圍。
(3)本文設計的CAN 總線協(xié)議自適應算法已廣泛應用于雄安、煙臺、義烏、西寧、杭州等地重型車的OBD 車載終端,并與山東凱馬汽車制造有限公司深度合作。實踐表明,OBD 車載終端應用CAN 總線協(xié)議自適應算法,很好地解決了重型車上出現(xiàn)的多通道通信參數(shù)不同導致車載終端與車輛總線適配困難的問題,具有顯著的工程實踐意義。