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