楊炯 丁常坤 鄭彥樸








摘? 要:本文實現了一種通過采集CAN總線物理層通信波形,不需要復雜的CAN通信協議解碼過程,分析CAN總線故障和使用率的偵測系統,并輸出相關故障預警信息。通過采樣、識別和分析總線數據幀信息,測量總線使用率并進行一系列比較,輸出總線故障預警信號,實時監測CAN總線的工作狀態和故障偵測。具體內容包含系統實現原理和方案,并詳細討論CAN總線數據幀提取、使用率測量和異常監測方法。實際運行效果表明:該系統結構合理、性能穩定、準確性高,具有廣闊的應用前景。
關鍵詞: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? 引? 言
隨著汽車工業的發展和電子控制技術的引入,汽車電子化程度越來越高,汽車上的電子控制單元也越來越多,汽車的動力性、穩定性、安全性、經濟性都得到了大幅提升,很好地緩解了全球范圍的環保、節能和交通安全等問題。但在汽車電子控制系統引入的同時,也帶來一些其他的問題,如系統運行可靠性降低、故障率增大、需要共享的數據信息量增加等。因此基于增強汽車控制功能、提高汽車安全性和穩定性、降低燃油消耗等多方面的考慮,總線技術和故障偵測技術應運而生,這也使得車輛實時在線故障偵測系統的開發成為必要。
CAN總線在設計之初具有良好的安全性和可靠性,使其在汽車電子系統中得到廣泛的應用。但隨著網絡總線負載的增加,總線通訊的數據量越來越大,總線使用率(負載率)越來越高,例如電動汽車,在電動汽車內部出現更多的輔助系統和人機交互系統,這就使得CAN總線網絡的安全性和可靠性顯得尤為重要,CAN總線網絡的使用率(負載率)和故障檢測對保證汽車CAN網絡環境和品質有著重要的作用。
1? CAN系統概述
本系統實現了一種能根據CAN總線通信波形自動檢測總線發生故障的方法,不需要復雜的CAN通信協議解碼過程,通過對通信波形進行采樣和幀數據識別,分別測量總線的平均使用率(較長測量時間T,1s以上)和瞬時使用率(較短測量時間t,1s以下),然后經過一系列的比較輸出總線異常中斷控制信號,實時監測CAN總線的工作狀態。此系統可用于對CAN總線通信過程中出現的故障進行實時檢測和分析,提高CAN總線網絡的安全性和可靠性。具體測量方法如圖1所示,正常通信情況下,p1(瞬時使用率)/P(平均使用率)
系統內部主要由配置接口模塊、幀數據采集識別模塊、總線使用率測量模塊、比較輸出異常中斷模塊組成,其實現的功能如圖2所示。
2? CAN系統工作原理
CAN總線使用率和故障偵測系統的工作流程如圖3所示。
CAN總線使用率和故障偵測系統的工作原理:(1)主機通過配置接口配置CAN總線波特率寄存器、測量時間T寄存器、測量時間t寄存器和比較參數寄存器;(2)采集CAN總線上的數據位信息,根據波特率輸出數據和時鐘信號,識別CAN總線上數據的幀起始和幀結束,輸出有效信號;(3)將測量時間分為128份,測量每份時間段內有效信號區間CAN總線上的數據位時鐘個數Num;(4)將Num寫進FIFO并累加,滿狀態時讀出之前保存的數值并減去,FIFO始終保存最近時間段內的128個Num值;(5)分別測量兩個不同的時間段T(以s為單位)和t(以ms為單位)內的數據位累加值P和p,即為總線的平均使用率和瞬時使用率;(6)比較P、p、N(比例系數)三者的倍數大小關系,當p/t>(P/T)*N時輸出高電平中斷控制信號,否則輸出低電平中斷控制信號;(7)重復第(2)~(6)步操作。
3? CAN系統模塊設計要點
3.1? CAN總線數據位提取方法
為了分析CAN總線的通信信息,需要采集足夠的數據,由波特率寄存器的數值可以得到CAN總線通信時所使用的波特率,需設置合適的采樣頻率(至少數倍總線的通信波特率)對總線信號進行采樣。本模塊采用3倍于通信波特率的采樣頻率對總線信號進行采樣,即總線上的每個數據位采集得到三個電平信息。
由于采樣頻率高于總線的通信波特率,因此采集到的數據不能直接作為CAN總線的數據位信息。在采集到數據后,需要按采樣頻率與CAN總線波特率的比值倍數對采集的數據取樣,取樣所得的數據即為采集到的CAN信號幀的數據位信息。數據采集和CAN信號幀數據位的提取通過幀數據采集識別模塊完成。
該模塊依據波特率信息對CAN總線上的每個數據位采集三個點的電平信息,分別在數據位波形的1/4、1/2和3/4處,取其中相同的兩個采樣電平作為此時CAN總線的數據位信息,具體采樣方式如圖4所示,其中,①、②、③分別表示波形的1/4、1/2和3/4。
3.2? CAN總線數據幀識別方法
在獲得CAN總線數據位信息后,將其與CAN協議定義的標準數據幀格式進行對比,可從中分離出數據幀的相關信息,標準的數據幀格式如圖5所示。
根據CAN總線規范可知,當節點檢測到總線空閑時,節點才開始發送報文。因此,總線空閑狀態的識別非常重要,只有識別了空閑狀態才能正確識別幀的起始狀態。通常,節點在發送完幀結束標志(EOF,7個連續隱性位)、錯誤界定符(8個連續隱性位)或過載界定符(8個連續隱性位)后,會發送間歇場(INT,3個連續隱性位),然后總線進入空閑狀態。由此可知,在總線進入空閑狀態前,總線上會檢測到至少11個連續的隱性位(高電平)。因此,在系統運行且波特率有效的情況下,檢測到11個連續的隱性位認為總線通過幀結束進入空閑狀態,在空閑狀態下檢測到顯性位(低電平)認為總線節點開始發送報文。幀起始和幀結束格式如圖6所示,圖中的1代表隱性位高電平,0代表顯性位低電平。CAN總線采用不歸零碼位填充技術,發送節點只要檢測到位流里有5個連續相同極性的位,便自動在接下來的位流中插入一個極性相反的填充位。
在識別到幀起始和幀結束信號后,需依據波特率信息計數這段區間內的數據位時鐘個數,以便用于計算總線的使用率,該功能通過數據幀采集和識別模塊實現,具體實現流程圖如圖7所示。
幀數據采集識別模塊的工作原理:(1)根據波特率采集CAN總線數據位波形1/4、1/2、3/4處的電平,取相等的電平作為數據位信息,輸出數據位和時鐘信息;(2)保存12位的幀數據信息Data,若Data=12'b111111111110,則為幀起始信號,輸出高電平的幀有效信號;若Data=12'b 011111111111,則為幀結束信號,輸出低電平的幀無效信號;(3)計數幀有效信號期間內的數據位時鐘個數。
3.3? CAN總線使用率測量方法
為了測量CAN總線的平均使用率和瞬時使用率,需不停的統計當前時刻之前測量時間段T(以s為測量單位)和測量時間段t(以ms為測量單位)內的有效數據位時鐘總個數,為了測量的方便,該模塊將測量時間平均分為128個相對較小的時間段,分別測量每個小時間段內有效的數據位時鐘個數。
將測量結果保存到1個深度為128的FIFO里,并不斷累加FIFO內數據的總和,既可以得到測量時間T和測量時間t內的有效數據時鐘總個數,即總線的平均使用率P和瞬時使用率p。該部分實現方式采用流水線設計,整體實現示意圖如圖8所示。首先將第一次測量得到的128個測量值進行累加,得到總線使用率;接著將D1測量值丟棄后再重新加入D129測量值進行累加,得到新的總線使用率;再接著將D2測量值丟棄后再重新加入D130測量值進行累加,又得到新的總線使用率。以此類推,即累加值永遠只累加最近測量時間內FIFO內的128個測量值之和。
3.4? CAN總線異常檢測方法
當發現總線的瞬時使用率與平均使用率的商大于比例系數N時,說明CAN總線通信有可能出現故障,需發出異常中斷控制信號。由以上測量方式可以得出,當p/t>(P/T)*N時,需發出異常中斷控制信號,對公式進行轉換得到:當P
4? 結? 論
本文實現了一種能根據CAN總線通信波形自動檢測總線發生故障的方法,該方法不需要復雜的CAN通信協議解碼過程,可用于對CAN總線通信過程中出現的故障進行實時檢測和分析,提高CAN總線網絡的安全性和可靠性。實際運行效果表明,該系統結構合理,性能穩定,準確性高,具有廣闊的應用前景。
參考文獻:
[1] 代壽剛,干莽,宋占偉.基于FPGA的CAN總線故障分析儀 [J].吉林大學學報(信息科學版),2012,30(5):503-509.
[2] 韓建,田博文,王春龍.基于FPGA的CAN總線網絡故障檢測修復系統研究 [J].化工自動化及儀表,2014,41(9):1040-1042+1068.
[3] 袁衛波.基于CAN總線的車輛在線故障診斷系統 [D].西安:長安大學,2012.
作者簡介:楊炯(1991.04-),男,漢族,廣東揭陽人,本科,FPGA工程師,研究方向:測量儀器。