楊炯 丁常坤 鄭彥樸
摘? 要:本文實現(xiàn)了一種通過采集CAN總線物理層通信波形,不需要復雜的CAN通信協(xié)議解碼過程,分析CAN總線故障和使用率的偵測系統(tǒng),并輸出相關故障預警信息。通過采樣、識別和分析總線數(shù)據(jù)幀信息,測量總線使用率并進行一系列比較,輸出總線故障預警信號,實時監(jiān)測CAN總線的工作狀態(tài)和故障偵測。具體內容包含系統(tǒng)實現(xiàn)原理和方案,并詳細討論CAN總線數(shù)據(jù)幀提取、使用率測量和異常監(jiān)測方法。實際運行效果表明:該系統(tǒng)結構合理、性能穩(wěn)定、準確性高,具有廣闊的應用前景。
關鍵詞:CAN總線;總線使用率(負載率);通信故障檢測
中圖分類號:TP27? ? ? ?文獻標識碼:A 文章編號:2096-4706(2019)15-0042-04
CAN Bus Utilization and Fault Detection System
YANG Jiong,DING Changkun,ZHENG Yanpu
(Guangzhou Zhiyuan Electronics Co.,Ltd.,Guangzhou? 510660,China)
Abstract:In this paper,a detection system for CAN bus faults and usage rate is realized by collecting communication waveforms in physical layer of CAN bus,which does not need complicated decoding process of CAN communication protocol,and outputs relevant fault warning information. By sampling,identifying and analyzing the bus data frame information,the bus utilization rate is measured and a series of comparisons are made. The bus fault warning signal is output,and the working state and fault detection of CAN bus are monitored in real time. The specific content includes the principle and scheme of the system,and discusses in detail the methods of CAN bus data frame extraction,usage measurement and anomaly monitoring. The actual operation results show that the system has reasonable structure,stable performance and high accuracy,and has broad application prospects.
Keywords:CAN bus;bus utilization (load rate);communication fault detection
0? 引? 言
隨著汽車工業(yè)的發(fā)展和電子控制技術的引入,汽車電子化程度越來越高,汽車上的電子控制單元也越來越多,汽車的動力性、穩(wěn)定性、安全性、經(jīng)濟性都得到了大幅提升,很好地緩解了全球范圍的環(huán)保、節(jié)能和交通安全等問題。但在汽車電子控制系統(tǒng)引入的同時,也帶來一些其他的問題,如系統(tǒng)運行可靠性降低、故障率增大、需要共享的數(shù)據(jù)信息量增加等。因此基于增強汽車控制功能、提高汽車安全性和穩(wěn)定性、降低燃油消耗等多方面的考慮,總線技術和故障偵測技術應運而生,這也使得車輛實時在線故障偵測系統(tǒng)的開發(fā)成為必要。
CAN總線在設計之初具有良好的安全性和可靠性,使其在汽車電子系統(tǒng)中得到廣泛的應用。但隨著網(wǎng)絡總線負載的增加,總線通訊的數(shù)據(jù)量越來越大,總線使用率(負載率)越來越高,例如電動汽車,在電動汽車內部出現(xiàn)更多的輔助系統(tǒng)和人機交互系統(tǒng),這就使得CAN總線網(wǎng)絡的安全性和可靠性顯得尤為重要,CAN總線網(wǎng)絡的使用率(負載率)和故障檢測對保證汽車CAN網(wǎng)絡環(huán)境和品質有著重要的作用。
1? CAN系統(tǒng)概述
本系統(tǒng)實現(xiàn)了一種能根據(jù)CAN總線通信波形自動檢測總線發(fā)生故障的方法,不需要復雜的CAN通信協(xié)議解碼過程,通過對通信波形進行采樣和幀數(shù)據(jù)識別,分別測量總線的平均使用率(較長測量時間T,1s以上)和瞬時使用率(較短測量時間t,1s以下),然后經(jīng)過一系列的比較輸出總線異常中斷控制信號,實時監(jiān)測CAN總線的工作狀態(tài)。此系統(tǒng)可用于對CAN總線通信過程中出現(xiàn)的故障進行實時檢測和分析,提高CAN總線網(wǎng)絡的安全性和可靠性。具體測量方法如圖1所示,正常通信情況下,p1(瞬時使用率)/P(平均使用率)
系統(tǒng)內部主要由配置接口模塊、幀數(shù)據(jù)采集識別模塊、總線使用率測量模塊、比較輸出異常中斷模塊組成,其實現(xiàn)的功能如圖2所示。
2? CAN系統(tǒng)工作原理
CAN總線使用率和故障偵測系統(tǒng)的工作流程如圖3所示。
CAN總線使用率和故障偵測系統(tǒng)的工作原理:(1)主機通過配置接口配置CAN總線波特率寄存器、測量時間T寄存器、測量時間t寄存器和比較參數(shù)寄存器;(2)采集CAN總線上的數(shù)據(jù)位信息,根據(jù)波特率輸出數(shù)據(jù)和時鐘信號,識別CAN總線上數(shù)據(jù)的幀起始和幀結束,輸出有效信號;(3)將測量時間分為128份,測量每份時間段內有效信號區(qū)間CAN總線上的數(shù)據(jù)位時鐘個數(shù)Num;(4)將Num寫進FIFO并累加,滿狀態(tài)時讀出之前保存的數(shù)值并減去,F(xiàn)IFO始終保存最近時間段內的128個Num值;(5)分別測量兩個不同的時間段T(以s為單位)和t(以ms為單位)內的數(shù)據(jù)位累加值P和p,即為總線的平均使用率和瞬時使用率;(6)比較P、p、N(比例系數(shù))三者的倍數(shù)大小關系,當p/t>(P/T)*N時輸出高電平中斷控制信號,否則輸出低電平中斷控制信號;(7)重復第(2)~(6)步操作。
3? CAN系統(tǒng)模塊設計要點
3.1? CAN總線數(shù)據(jù)位提取方法
為了分析CAN總線的通信信息,需要采集足夠的數(shù)據(jù),由波特率寄存器的數(shù)值可以得到CAN總線通信時所使用的波特率,需設置合適的采樣頻率(至少數(shù)倍總線的通信波特率)對總線信號進行采樣。本模塊采用3倍于通信波特率的采樣頻率對總線信號進行采樣,即總線上的每個數(shù)據(jù)位采集得到三個電平信息。
由于采樣頻率高于總線的通信波特率,因此采集到的數(shù)據(jù)不能直接作為CAN總線的數(shù)據(jù)位信息。在采集到數(shù)據(jù)后,需要按采樣頻率與CAN總線波特率的比值倍數(shù)對采集的數(shù)據(jù)取樣,取樣所得的數(shù)據(jù)即為采集到的CAN信號幀的數(shù)據(jù)位信息。數(shù)據(jù)采集和CAN信號幀數(shù)據(jù)位的提取通過幀數(shù)據(jù)采集識別模塊完成。
該模塊依據(jù)波特率信息對CAN總線上的每個數(shù)據(jù)位采集三個點的電平信息,分別在數(shù)據(jù)位波形的1/4、1/2和3/4處,取其中相同的兩個采樣電平作為此時CAN總線的數(shù)據(jù)位信息,具體采樣方式如圖4所示,其中,①、②、③分別表示波形的1/4、1/2和3/4。
3.2? CAN總線數(shù)據(jù)幀識別方法
在獲得CAN總線數(shù)據(jù)位信息后,將其與CAN協(xié)議定義的標準數(shù)據(jù)幀格式進行對比,可從中分離出數(shù)據(jù)幀的相關信息,標準的數(shù)據(jù)幀格式如圖5所示。
根據(jù)CAN總線規(guī)范可知,當節(jié)點檢測到總線空閑時,節(jié)點才開始發(fā)送報文。因此,總線空閑狀態(tài)的識別非常重要,只有識別了空閑狀態(tài)才能正確識別幀的起始狀態(tài)。通常,節(jié)點在發(fā)送完幀結束標志(EOF,7個連續(xù)隱性位)、錯誤界定符(8個連續(xù)隱性位)或過載界定符(8個連續(xù)隱性位)后,會發(fā)送間歇場(INT,3個連續(xù)隱性位),然后總線進入空閑狀態(tài)。由此可知,在總線進入空閑狀態(tài)前,總線上會檢測到至少11個連續(xù)的隱性位(高電平)。因此,在系統(tǒng)運行且波特率有效的情況下,檢測到11個連續(xù)的隱性位認為總線通過幀結束進入空閑狀態(tài),在空閑狀態(tài)下檢測到顯性位(低電平)認為總線節(jié)點開始發(fā)送報文。幀起始和幀結束格式如圖6所示,圖中的1代表隱性位高電平,0代表顯性位低電平。CAN總線采用不歸零碼位填充技術,發(fā)送節(jié)點只要檢測到位流里有5個連續(xù)相同極性的位,便自動在接下來的位流中插入一個極性相反的填充位。
在識別到幀起始和幀結束信號后,需依據(jù)波特率信息計數(shù)這段區(qū)間內的數(shù)據(jù)位時鐘個數(shù),以便用于計算總線的使用率,該功能通過數(shù)據(jù)幀采集和識別模塊實現(xiàn),具體實現(xiàn)流程圖如圖7所示。
幀數(shù)據(jù)采集識別模塊的工作原理:(1)根據(jù)波特率采集CAN總線數(shù)據(jù)位波形1/4、1/2、3/4處的電平,取相等的電平作為數(shù)據(jù)位信息,輸出數(shù)據(jù)位和時鐘信息;(2)保存12位的幀數(shù)據(jù)信息Data,若Data=12'b111111111110,則為幀起始信號,輸出高電平的幀有效信號;若Data=12'b 011111111111,則為幀結束信號,輸出低電平的幀無效信號;(3)計數(shù)幀有效信號期間內的數(shù)據(jù)位時鐘個數(shù)。
3.3? CAN總線使用率測量方法
為了測量CAN總線的平均使用率和瞬時使用率,需不停的統(tǒng)計當前時刻之前測量時間段T(以s為測量單位)和測量時間段t(以ms為測量單位)內的有效數(shù)據(jù)位時鐘總個數(shù),為了測量的方便,該模塊將測量時間平均分為128個相對較小的時間段,分別測量每個小時間段內有效的數(shù)據(jù)位時鐘個數(shù)。
將測量結果保存到1個深度為128的FIFO里,并不斷累加FIFO內數(shù)據(jù)的總和,既可以得到測量時間T和測量時間t內的有效數(shù)據(jù)時鐘總個數(shù),即總線的平均使用率P和瞬時使用率p。該部分實現(xiàn)方式采用流水線設計,整體實現(xiàn)示意圖如圖8所示。首先將第一次測量得到的128個測量值進行累加,得到總線使用率;接著將D1測量值丟棄后再重新加入D129測量值進行累加,得到新的總線使用率;再接著將D2測量值丟棄后再重新加入D130測量值進行累加,又得到新的總線使用率。以此類推,即累加值永遠只累加最近測量時間內FIFO內的128個測量值之和。
3.4? CAN總線異常檢測方法
當發(fā)現(xiàn)總線的瞬時使用率與平均使用率的商大于比例系數(shù)N時,說明CAN總線通信有可能出現(xiàn)故障,需發(fā)出異常中斷控制信號。由以上測量方式可以得出,當p/t>(P/T)*N時,需發(fā)出異常中斷控制信號,對公式進行轉換得到:當P
4? 結? 論
本文實現(xiàn)了一種能根據(jù)CAN總線通信波形自動檢測總線發(fā)生故障的方法,該方法不需要復雜的CAN通信協(xié)議解碼過程,可用于對CAN總線通信過程中出現(xiàn)的故障進行實時檢測和分析,提高CAN總線網(wǎng)絡的安全性和可靠性。實際運行效果表明,該系統(tǒng)結構合理,性能穩(wěn)定,準確性高,具有廣闊的應用前景。
參考文獻:
[1] 代壽剛,干莽,宋占偉.基于FPGA的CAN總線故障分析儀 [J].吉林大學學報(信息科學版),2012,30(5):503-509.
[2] 韓建,田博文,王春龍.基于FPGA的CAN總線網(wǎng)絡故障檢測修復系統(tǒng)研究 [J].化工自動化及儀表,2014,41(9):1040-1042+1068.
[3] 袁衛(wèi)波.基于CAN總線的車輛在線故障診斷系統(tǒng) [D].西安:長安大學,2012.
作者簡介:楊炯(1991.04-),男,漢族,廣東揭陽人,本科,F(xiàn)PGA工程師,研究方向:測量儀器。