摘要
CAN總線是為解決現(xiàn)代汽車中眾多的控制與測試儀器之間的數(shù)據(jù)交換而開發(fā)的一種串行數(shù)據(jù)通信協(xié)議念颈,它是一種多主總線,通信介質(zhì)可以是雙絞線连霉、同軸電纜或光導(dǎo)纖維榴芳。對于汽車工業(yè)而言置济,它的實時性必尼、靈活性督赤、可靠性掰担、低成本以及良好的故障珍斷和糾錯能力都有著很大的吸引力及市場空間胸竞。CAN作為控制器聯(lián)網(wǎng)的手段甚疟,已廣泛應(yīng)用于各品牌汽車屯远。在控制發(fā)動機暖眼、變速箱哩至、ABS等車身安全模塊躏嚎,都是以CAN網(wǎng)為主網(wǎng)。相信CAN技術(shù)將會成為汽車領(lǐng)域發(fā)展的新途徑憨募。
引言
CAN是控制器局域網(wǎng)絡(luò)(Controller Area Network, CAN)的簡稱紧索,是由研發(fā)和生產(chǎn)汽車電子產(chǎn)品著稱的德國BOSCH公司開發(fā)了的,并最終成為國際標(biāo)準(zhǔn)(ISO 11898)菜谣。是國際上應(yīng)用最廣泛的現(xiàn)場總線之一珠漂。由于其高性能晚缩,高可靠性,及獨特的設(shè)計媳危,CAN總線越來越受到人們的重視荞彼。在北美和西歐,CAN總線協(xié)議已經(jīng)成為汽車計算機控制系統(tǒng)和嵌入式工業(yè)控制局域網(wǎng)的標(biāo)準(zhǔn)總線待笑,并且擁有以CAN為底層協(xié)議專為大型貨車和重工機械車輛設(shè)計的J1939協(xié)議鸣皂。
本文主要對CAN總線技術(shù)的介紹,深入研究面向汽車的CAN通信協(xié)議的特點暮蹂,優(yōu)勢寞缝,應(yīng)用等。
1 基本概念
CAN 是Controller Area Network 的縮寫(以下稱為CAN)仰泻,是ISO國際標(biāo)準(zhǔn)化的串行通信協(xié)議荆陆。在汽車產(chǎn)業(yè)中,出于對安全性集侯、舒適性被啼、方便性、低公害棠枉、低成本的要求浓体,各種各樣的電子控制系統(tǒng)被開發(fā)了出來。由于這些系統(tǒng)之間通信所用的數(shù)據(jù)類型及對可靠性的要求不盡相同辈讶,由多條總線構(gòu)成的情況很多命浴,線束的數(shù)量也隨之增加。為適應(yīng)“減少線束的數(shù)量”荞估、“通過多個LAN咳促,進行大量數(shù)據(jù)的高速通信”的需要,1986 年德國電氣商博世公司開發(fā)出面向汽車的CAN 通信協(xié)議勘伺。此后,CAN 通過ISO11898 及ISO11519 進行了標(biāo)準(zhǔn)化褂删,在歐洲已是汽車網(wǎng)絡(luò)的標(biāo)準(zhǔn)協(xié)議飞醉。
CAN 的高性能和可靠性已被認同,并被廣泛地應(yīng)用于工業(yè)自動化屯阀、船舶缅帘、醫(yī)療設(shè)備、工業(yè)設(shè)備等方面∧阉ィ現(xiàn)場總線是當(dāng)今自動化領(lǐng)域技術(shù)發(fā)展的熱點之一钦无,被譽為自動化領(lǐng)域的計算機局域網(wǎng)。它的出現(xiàn)為分布式控制系統(tǒng)實現(xiàn)各節(jié)點之間實時盖袭、可靠的數(shù)據(jù)通信提供了強有力的技術(shù)支持失暂。
2 優(yōu)勢
CAN屬于現(xiàn)場總線的范疇彼宠,它是一種有效支持分布式控制或?qū)崟r控制的串行通信網(wǎng)絡(luò)。較之許多RS-485基于R線構(gòu)建的分布式控制系統(tǒng)而言弟塞,基于CAN總線的分布式控制系統(tǒng)在以下方面具有明顯的優(yōu)越性:
2.1 網(wǎng)絡(luò)各節(jié)點之間的數(shù)據(jù)通信實時性強
首先凭峡,CAN控制器工作于多種方式,網(wǎng)絡(luò)中的各節(jié)點都可根據(jù)總線訪問優(yōu)先權(quán)(取決于報文標(biāo)識符)采用無損結(jié)構(gòu)的逐位仲裁的方式競爭向總線發(fā)送數(shù)據(jù)决记,且CAN協(xié)議廢除了站地址編碼摧冀,而代之以對通信數(shù)據(jù)進行編碼,這可使不同的節(jié)點同時接收到相同的數(shù)據(jù)系宫,這些特點使得CAN總線構(gòu)成的網(wǎng)絡(luò)各節(jié)點之間的數(shù)據(jù)通信實時性強索昂,并且容易構(gòu)成冗余結(jié)構(gòu),提高系統(tǒng)的可靠性和系統(tǒng)的靈活性扩借。而利用RS-485只能構(gòu)成主從式結(jié)構(gòu)系統(tǒng)楼镐,通信方式也只能以主站輪詢的方式進行,系統(tǒng)的實時性往枷、可靠性較差框产;
2.2縮短了開發(fā)周期
CAN總線通過CAN收發(fā)器接口芯片82C250的兩個輸出端CANH和CANL與物理總線相連,而CANH端的狀態(tài)只能是高電平或懸浮狀態(tài)错洁,CANL端只能是低電平或懸浮狀態(tài)秉宿。這就保證不會在出現(xiàn)在RS-485網(wǎng)絡(luò)中的現(xiàn)象,即當(dāng)系統(tǒng)有錯誤屯碴,出現(xiàn)多節(jié)點同時向總線發(fā)送數(shù)據(jù)時描睦,導(dǎo)致總線呈現(xiàn)短路,從而損壞某些節(jié)點的現(xiàn)象导而。而且CAN節(jié)點在錯誤嚴(yán)重的情況下具有自動關(guān)閉輸出功能忱叭,以使總線上其他節(jié)點的操作不受影響,從而保證不會出現(xiàn)象在網(wǎng)絡(luò)中今艺,因個別節(jié)點出現(xiàn)問題韵丑,使得總線處于“死鎖”狀態(tài)。而且虚缎,CAN具有的完善的通信協(xié)議可由CAN控制器芯片及其接口芯片來實現(xiàn)撵彻,從而大大降低系統(tǒng)開發(fā)難度,縮短了開發(fā)周期实牡,這些是僅有電氣協(xié)議的RS-485所無法比擬的陌僵。
2.3已形成國際標(biāo)準(zhǔn)的現(xiàn)場總線
另外,與其它現(xiàn)場總線比較而言创坞,CAN總線是具有通信速率高碗短、容易實現(xiàn)、且性價比高等諸多特點的一種已形成國際標(biāo)準(zhǔn)的現(xiàn)場總線题涨。這些也是CAN總線應(yīng)用于眾多領(lǐng)域偎谁,具有強勁的市場競爭力的重要原因总滩。
2.4最有前途的現(xiàn)場總線之一
CAN 即控制器局域網(wǎng)絡(luò),屬于工業(yè)現(xiàn)場總線的范疇搭盾。與一般的通信總線相比,CAN總線的數(shù)據(jù)通信具有突出的可靠性咳秉、實時性和靈活性。由于其良好的性能及獨特的設(shè)計鸯隅,CAN總線越來越受到人們的重視澜建。它在汽車領(lǐng)域上的應(yīng)用是最廣泛的,世界上一些著名的汽車制造廠商蝌以,如BENZ(奔馳)炕舵、BMW(寶馬)、PORSCHE(保時捷)跟畅、ROLLS-ROYCE(勞斯萊斯)和JAGUAR(美洲豹)等都采用了CAN總線來實現(xiàn)汽車內(nèi)部控制系統(tǒng)與各檢測和執(zhí)行機構(gòu)間的數(shù)據(jù)通信咽筋。同時,由于CAN總線本身的特點徊件,其應(yīng)用范圍已不再局限于汽車行業(yè)奸攻,而向自動控制、航空航天虱痕、航海睹耐、過程工業(yè)、機械工業(yè)部翘、紡織機械硝训、農(nóng)用機械、機器人新思、數(shù)控機床窖梁、醫(yī)療器械及傳感器等領(lǐng)域發(fā)展。CAN已經(jīng)形成國際標(biāo)準(zhǔn)夹囚,并已被公認為幾種最有前途的現(xiàn)場總線之一纵刘。其典型的應(yīng)用協(xié)議有:SAEJ1939/ISO11783、CANOpen崔兴、CANaerospace彰导、DeviceNet、NMEA 2000等敲茄。
3 概念和特征
下面對CAN協(xié)議的媒體訪問控制子層的一些概念和特征做如下說明:
(1)報文(Message)總線上的數(shù)據(jù)以不同報文格式發(fā)送,但長度受到限制山析。當(dāng)總線空閑時堰燎,任何一個網(wǎng)絡(luò)上的節(jié)點都可以發(fā)送報文。
(2)信息路由(Information Routing)在CAN中笋轨,節(jié)點不使用任何關(guān)于系統(tǒng)配置的報文秆剪,比如站地址赊淑,由接收節(jié)點根據(jù)報文本身特征判斷是否接收這幀信息。因此系統(tǒng)擴展時仅讽,不用對應(yīng)用層以及任何節(jié)點的軟件和硬件作改變陶缺,可以直接在CAN中增加節(jié)點。
(3)標(biāo)識符(Identifier) 要傳送的報文有特征標(biāo)識符(是數(shù)據(jù)幀和遠程幀的一個域)洁灵,它給出的不是目標(biāo)節(jié)點地址饱岸,而是這個報文本身的特征。信息以廣播方式在網(wǎng)絡(luò)上發(fā)送徽千,所有節(jié)點都可以接收到苫费。節(jié)點通過標(biāo)識符判定是否接收這幀信息。
(4)數(shù)據(jù)一致性應(yīng)確保報文在CAN里同時被所有節(jié)點接收或同時不接收双抽,這是配合錯誤處理和再同步功能實現(xiàn)的百框。
(5)位傳輸速率不同的CAN系統(tǒng)速度不同,但在一個給定的系統(tǒng)里牍汹,位傳輸速率是唯一的铐维,并且是固定的。
(6)優(yōu)先權(quán)由發(fā)送數(shù)據(jù)的報文中的標(biāo)識符決定報文占用總線的優(yōu)先權(quán)慎菲。標(biāo)識符越小嫁蛇,優(yōu)先權(quán)越高。
(7)遠程數(shù)據(jù)請求(Remote Data Request) 通過發(fā)送遠程幀钧嘶,需要數(shù)據(jù)的節(jié)點請求另一節(jié)點發(fā)送相應(yīng)的數(shù)據(jù)棠众。回應(yīng)節(jié)點傳送的數(shù)據(jù)幀與請求數(shù)據(jù)的遠程幀由相同的標(biāo)識符命名有决。
(8)仲裁(Arbitration) 只要總線空閑闸拿,任何節(jié)點都可以向總線發(fā)送報文。如果有兩個或兩個以上的節(jié)點同時發(fā)送報文书幕,就會引起總線訪問碰撞新荤。通過使用標(biāo)識符的逐位仲裁可以解決這個碰撞。仲裁的機制確保了報文和時間均不損失台汇。當(dāng)具有相同標(biāo)識符的數(shù)據(jù)幀和遠程幀同時發(fā)送時苛骨,數(shù)據(jù)幀優(yōu)先于遠程幀。在仲裁期間苟呐,每一個發(fā)送器都對發(fā)送位的電平與被監(jiān)控的總線電平進行比較痒芝。如果電平相同,則這個單元可以繼續(xù)發(fā)送牵素,如果發(fā)送的是“隱性”電平而監(jiān)視到的是“顯性”電平严衬,那么這個單元就失去了仲裁,必須退出發(fā)送狀態(tài)笆呆。
(9)總線狀態(tài)總線有“顯性”和“隱性”兩個狀態(tài)请琳,“顯性”對應(yīng)邏輯“0”粱挡,“隱性”對應(yīng)邏輯“1”《砭“顯性”狀態(tài)和“隱性”狀態(tài)與為“顯性”狀態(tài)询筏,所以兩個節(jié)點同時分別發(fā)送“0”和“1”時,總線上呈現(xiàn)“0”竖慧。CAN總線采用二進制不歸零(NRZ)編碼方式嫌套,所以總線上不是“0”,就是“1”测蘑。但是CAN協(xié)議并沒有具體定義這兩種狀態(tài)的具體實現(xiàn)方式灌危。
(10)故障界定(Confinement) CAN節(jié)點能區(qū)分瞬時擾動引起的故障和永久性故障。故障節(jié)點會被關(guān)閉碳胳。
(11)應(yīng)答接收節(jié)點對正確接收的報文給出應(yīng)答勇蝙,對不一致報文進行標(biāo)記。
(12)CAN通訊距離最大是10公里(設(shè)速率為5Kbps),或最大通信速率為1Mbps(設(shè)通信距離為40米)挨约。
(13)CAN總線上的節(jié)點數(shù)可達110個味混。通信介質(zhì)可在雙絞線,同軸電纜诫惭,光纖中選擇翁锡。
(14)報文是短幀結(jié)構(gòu),短的傳送時間使其受干擾概率低夕土,CAN有很好的校驗機制馆衔,這些都保證了CAN通信的可靠性。
特點
CAN總線是德國BOSCH公司從80年代初為解決現(xiàn)代汽車中眾多的控制與測試儀器之間的數(shù)據(jù)交換而開發(fā)的一種串行數(shù)據(jù)通信協(xié)議怨绣,它是一種多主總線角溃,通信介質(zhì)可以是雙絞線、同軸電纜或光導(dǎo)纖維篮撑。通信速率最高可達1Mbps减细。
完成對通信數(shù)據(jù)的成幀處理
CAN總線通信接口中集成了CAN協(xié)議的物理層和數(shù)據(jù)鏈路層功能,可完成對通信數(shù)據(jù)的成幀處理赢笨,包括位填充未蝌、數(shù)據(jù)塊編碼、循環(huán)冗余檢驗茧妒、優(yōu)先級判別等項工作萧吠。
使網(wǎng)絡(luò)內(nèi)的節(jié)點個數(shù)在理論上不受限制
CAN協(xié)議的一個最大特點是廢除了傳統(tǒng)的站地址編碼,而代之以對通信數(shù)據(jù)塊進行編碼桐筏。采用這種方法的優(yōu)點可使網(wǎng)絡(luò)內(nèi)的節(jié)點個數(shù)在理論上不受限制怎憋,數(shù)據(jù)塊的標(biāo)識符可由11位或29位二進制數(shù)組成,因此可以定義2或2個以上不同的數(shù)據(jù)塊九昧,這種按數(shù)據(jù)塊編碼的方式绊袋,還可使不同的節(jié)點同時接收到相同的數(shù)據(jù),這一點在分布式控制系統(tǒng)中非常有用铸鹰。數(shù)據(jù)段長度最多為8個字節(jié)癌别,可滿足通常工業(yè)領(lǐng)域中控制命令、工作狀態(tài)及測試數(shù)據(jù)的一般要求蹋笼。同時展姐,8個字節(jié)不會占用總線時間過長,從而保證了通信的實時性剖毯。CAN協(xié)議采用CRC檢驗并可提供相應(yīng)的錯誤處理功能圾笨,保證了數(shù)據(jù)通信的可靠性。CAN卓越的特性逊谋、極高的可靠性和獨特的設(shè)計擂达,特別適合工業(yè)過程監(jiān)控設(shè)備的互連,因此胶滋,越來越受到工業(yè)界的重視板鬓,并已公認為最有前途的現(xiàn)場總線之一。
可在各節(jié)點之間實現(xiàn)自由通信
CAN總線采用了多主競爭式總線結(jié)構(gòu)究恤,具有多主站運行和分散仲裁的串行總線以及廣播通信的特點俭令。CAN總線上任意節(jié)點可在任意時刻主動地向網(wǎng)絡(luò)上其它節(jié)點發(fā)送信息而不分主次,因此可在各節(jié)點之間實現(xiàn)自由通信部宿。CAN總線協(xié)議已被國際標(biāo)準(zhǔn)化組織認證抄腔,技術(shù)比較成熟,控制的芯片已經(jīng)商品化理张,性價比高赫蛇,特別適用于分布式測控系統(tǒng)之間的數(shù)通訊。CAN總線插卡可以任意插在PC AT XT兼容機上涯穷,方便地構(gòu)成分布式監(jiān)控系統(tǒng)棍掐。結(jié)構(gòu)****簡單只有2根線與外部相連,并且內(nèi)部集成了錯誤探測和管理模塊拷况。
傳輸距離和速率
CAN總線特點:
(1) 數(shù)據(jù)通信沒有主從之分作煌,任意一個節(jié)點可以向任何其他(一個或多個)節(jié)點發(fā)起數(shù)據(jù)通信,靠各個節(jié)點信息優(yōu)先級先后順序來決定通信次序赚瘦,高優(yōu)先級節(jié)點信息在134μs通信;
(2) 多個節(jié)點同時發(fā)起通信時粟誓,優(yōu)先級低的避讓優(yōu)先級高的,不會對通信線路造成擁塞;
(3) 通信距離最遠可達10KM(速率低于5Kbps)速率可達到1Mbps(通信距離小于40M)起意;
(4) CAN總線傳輸介質(zhì)可以是雙絞線鹰服,同軸電纜。CAN總線適用于大數(shù)據(jù)量短距離通信或者長距離小數(shù)據(jù)量,實時性要求比較高悲酷,多主多從或者各個節(jié)點平等的現(xiàn)場中使用套菜。
4 技術(shù)介紹
位仲裁
要對數(shù)據(jù)進行實時處理,就必須將數(shù)據(jù)快速傳送设易,這就要求數(shù)據(jù)的物理傳輸通路有較高的速度逗柴。在幾個站同時需要發(fā)送數(shù)據(jù)時,要求快速地進行總線分配顿肺。實時處理通過網(wǎng)絡(luò)交換的緊急數(shù)據(jù)有較大的不同戏溺。一個快速變化的物理量,如汽車引擎負載屠尊,將比類似汽車引擎溫度這樣相對變化較慢的物理量更頻繁地傳送數(shù)據(jù)并要求更短的延時旷祸。
CAN總線以報文為單位進行數(shù)據(jù)傳送,報文的優(yōu)先級結(jié)合在11位標(biāo)識符中讼昆,具有最低二進制數(shù)的標(biāo)識符有最高的優(yōu)先級托享。這種優(yōu)先級一旦在系統(tǒng)設(shè)計時被確立后就不能再被更改】氐總線讀取中的沖突可通過位仲裁解決嫌吠。當(dāng)幾個站同時發(fā)送報文時,站1的報文標(biāo)識符為011111掺炭;站2的報文標(biāo)識符為0100110辫诅;站3的報文標(biāo)識符為0100111。所有標(biāo)識符都有相同的兩位01涧狮,直到第3位進行比較時炕矮,站1的報文被丟掉,因為它的第3位為高者冤,而其它兩個站的報文第3位為低肤视。站2和站3報文的4、5涉枫、6位相同邢滑,直到第7位時,站3的報文才被丟失愿汰。注意困后,總線中的信號持續(xù)跟蹤最后獲得總線讀取權(quán)的站的報文。在此例中衬廷,站2的報文被跟蹤摇予。這種非破壞性位仲裁方法的優(yōu)點在于,在網(wǎng)絡(luò)最終確定哪一個站的報文被傳送以前吗跋,報文的起始部分已經(jīng)在網(wǎng)絡(luò)上傳送了侧戴。所有未獲得總線讀取權(quán)的站都成為具有最高優(yōu)先權(quán)報文的接收站宁昭,并且不會在總線再次空閑前發(fā)送報文。
CAN具有較高的效率是因為總線僅僅被那些請求總線懸而未決的站利用酗宋,這些請求是根據(jù)報文在整個系統(tǒng)中的重要性按順序處理的积仗。這種方法在網(wǎng)絡(luò)負載較重時有很多優(yōu)點,因為總線讀取的優(yōu)先級已被按順序放在每個報文中了本缠,這可以保證在實時系統(tǒng)中較低的個體隱伏時間斥扛。
對于主站的可靠性,由于CAN協(xié)議執(zhí)行非集中化總線控制,所有主要通信丹锹,包括總線讀取(許可)控制芬失,在系統(tǒng)中分幾次完成楣黍。這是實現(xiàn)有較高可靠性的通信系統(tǒng)的唯一方法。
CAN與其它通信方案的比較
在實踐中棱烂,有兩種重要的總線分配方法:按時間表分配和按需要分配租漂。在第一種方法中,不管每個節(jié)點是否申請總線颊糜,都對每個節(jié)點按最大期間分配哩治。由此,總線可被分配給每個站并且是唯一的站衬鱼,而不論其是立即進行總線存取或在一特定時間進行總線存取业筏。這將保證在總線存取時有明確的總線分配。在第二種方法中鸟赫,總線按傳送數(shù)據(jù)的基本要求分配給一個站蒜胖,總線系統(tǒng)按站希望的傳送分配(如:EthernetCSMA/CD)。因此抛蚤,當(dāng)多個站同時請求總線存取時台谢,總線將終止所有站的請求,這時將不會有任何一個站獲得總線分配岁经。為了分配總線朋沮,多于一個總線存取是必要的。
CAN實現(xiàn)總線分配的方法缀壤,可保證當(dāng)不同的站申請總線存取時樊拓,明確地進行總線分配。這種位仲裁的方法可以解決當(dāng)兩個站同時發(fā)送數(shù)據(jù)時產(chǎn)生的碰撞問題诉位。不同于Ethernet網(wǎng)絡(luò)的消息仲裁骑脱,CAN的非破壞性解決總線存取沖突的方法,確保在不傳送有用消息時總線不被占用苍糠。甚至當(dāng)總線在重負載情況下叁丧,以消息內(nèi)容為優(yōu)先的總線存取也被證明是一種有效的系統(tǒng)。雖然總線的傳輸能力不足,所有未解決的傳輸請求都按重要性順序來處理拥娄。在CSMA/CD這樣的網(wǎng)絡(luò)中蚊锹,如Ethernet,系統(tǒng)往往由于過載而崩潰稚瘾,而這種情況在CAN中不會發(fā)生牡昆。
CAN的報文格式
在總線中傳送的報文,每幀由7部分組成摊欠。CAN協(xié)議支持兩種報文格式丢烘,其唯一的不同是標(biāo)識符(ID)長度不同,標(biāo)準(zhǔn)格式為11位些椒,擴展格式為29位播瞳。
在標(biāo)準(zhǔn)格式中,報文的起始位稱為幀起始(SOF)免糕,然后是由11位標(biāo)識符和遠程發(fā)送請求位 (RTR)組成的仲裁場赢乓。RTR位標(biāo)明是數(shù)據(jù)幀還是請求幀,在請求幀中沒有數(shù)據(jù)字節(jié)石窑。
控制場包括標(biāo)識符擴展位(IDE)牌芋,指出是標(biāo)準(zhǔn)格式還是擴展格式。它還包括一個保留位 (ro)松逊,為將來擴展使用躺屁。它的最后四個位用來指明數(shù)據(jù)場中數(shù)據(jù)的長度(DLC)。數(shù)據(jù)場范圍為0~8個字節(jié),其后有一個檢測數(shù)據(jù)錯誤的循環(huán)冗余檢查(CRC)棺棵。
應(yīng)答場(ACK)包括應(yīng)答位和應(yīng)答分隔符楼咳。發(fā)送站發(fā)送的這兩位均為隱性電平(邏輯1),這時正確接收報文的接收站發(fā)送主控電平(邏輯0)覆蓋它烛恤。用這種方法母怜,發(fā)送站可以保證網(wǎng)絡(luò)中至少有一個站能正確接收到報文。
報文的尾部由幀結(jié)束標(biāo)出缚柏。在相鄰的兩條報文間有一很短的間隔位苹熏,如果這時沒有站進行總線存取,總線將處于空閑狀態(tài)币喧。
CAN數(shù)據(jù)幀的組成
遠程幀
遠程幀由6個場組成:幀起始轨域、仲裁場、控制場杀餐、CRC場干发、應(yīng)答場和幀結(jié)束。
遠程幀不存在數(shù)據(jù)場史翘。遠程幀的RTR位必須是隱位枉长。
DLC的數(shù)據(jù)值是獨立的冀续,它可以是0~8中的任何數(shù)值,為對應(yīng)數(shù)據(jù)幀的數(shù)據(jù)長度必峰。
錯誤幀
錯誤幀由兩個不同場組成洪唐,第一個場由來自各站的錯誤標(biāo)志疊加得到,第二個場是錯誤界定符
錯誤標(biāo)志具有兩種形式:
活動錯誤標(biāo)志(Active error flag)吼蚁,由6個連續(xù)的顯位組成認可錯誤標(biāo)志(Passive error flag)凭需,由6個連續(xù)的隱位組成
錯誤界定符包括8個隱位
超載幀
超載幀包括兩個位場:超載標(biāo)志和超載界定符
發(fā)送超載幀的超載條件:要求延遲下一個數(shù)據(jù)幀或遠程幀
在間歇場檢測到顯位超載標(biāo)志由6個顯位組成
超載界定符由8個隱位組成
數(shù)據(jù)錯誤檢測
不同于其它總線,CAN協(xié)議不能使用應(yīng)答信息肝匆。事實上粒蜈,它可以將發(fā)生的任何錯誤用信號發(fā)出。CAN協(xié)議可使用五種檢查錯誤的方法术唬,其中前三種為基于報文內(nèi)容檢查薪伏。
3.4.1循環(huán)冗余檢查(CRC)
在一幀報文中加入冗余檢查位可保證報文正確。接收站通過CRC可判斷報文是否有錯粗仓。
3.4.2幀檢查
這種方法通過位場檢查幀的格式和大小來確定報文的正確性,用于檢查格式上的錯誤设捐。
3.4.3.應(yīng)答錯誤
如前所述借浊,被接收到的幀由接收站通過明確的應(yīng)答來確認。如果發(fā)送站未收到應(yīng)答萝招,那么表明接收站發(fā)現(xiàn)幀中有錯誤蚂斤,也就是說,ACK場已損壞或網(wǎng)絡(luò)中的報文無站接收槐沼。CAN協(xié)議也可通過位檢查的方法探測錯誤曙蒸。
3.4.4總線檢測
有時,CAN中的一個節(jié)點可監(jiān)測自己發(fā)出的信號岗钩。因此纽窟,發(fā)送報文的站可以觀測總線電平并探測發(fā)送位和接收位的差異。
3.4.5位填充
一幀報文中的每一位都由不歸零碼表示兼吓,可保證位編碼的最大效率臂港。然而,如果在一幀報文中有太多相同電平的位视搏,就有可能失去同步审孽。為保證同步,同步沿用位填充產(chǎn)生浑娜。在五個連續(xù)相等位后佑力,發(fā)送站自動插入一個與之互補的補碼位;接收時筋遭,這個填充位被自動丟掉打颤。例如暴拄,五個連續(xù)的低電平位后,CAN自動插入一個高電平位瘸洛。CAN通過這種編碼規(guī)則檢查錯誤揍移,如果在一幀報文中有6個相同位,CAN就知道發(fā)生了錯誤反肋。
如果至少有一個站通過以上方法探測到一個或多個錯誤那伐,它將發(fā)送出錯標(biāo)志終止當(dāng)前的發(fā)送。這可以阻止其它站接收錯誤的報文石蔗,并保證網(wǎng)絡(luò)上報文的一致性罕邀。當(dāng)大量發(fā)送數(shù)據(jù)被終止后,發(fā)送站會自動地重新發(fā)送數(shù)據(jù)养距。作為規(guī)則诉探,在探測到錯誤后23個位周期內(nèi)重新開始發(fā)送。在特殊場合棍厌,系統(tǒng)的恢復(fù)時間為31個位周期肾胯。
但這種方法存在一個問題,即一個發(fā)生錯誤的站將導(dǎo)致所有數(shù)據(jù)被終止耘纱,其中也包括正確的數(shù)據(jù)敬肚。因此,如果不采取自監(jiān)測措施,總線系統(tǒng)應(yīng)采用模塊化設(shè)計束析。為此艳馒,CAN協(xié)議提供一種將偶然錯誤從永久錯誤和局部站失敗中區(qū)別出來的辦法。這種方法可以通過對出錯站統(tǒng)計評估來確定一個站本身的錯誤并進入一種不會對其它站產(chǎn)生不良影響的運行方法來實現(xiàn)员寇,即站可以通過關(guān)閉自己來阻止正常數(shù)據(jù)因被錯誤地當(dāng)成不正確的數(shù)據(jù)而被終止弄慰。
硬同步和重同步
硬同步只有在總線空閑狀態(tài)條件下隱形位到顯性位的跳變沿發(fā)生時才進行,表明報文傳輸開始蝶锋。在硬同步之后陆爽,位時間計數(shù)器隨同步段重新開始計數(shù)。硬同步強行將已發(fā)生的跳變沿置于重新開始的位時間同步段內(nèi)牲览。根據(jù)同步規(guī)則墓陈,如果某一位時間內(nèi)已有一個硬同步出現(xiàn),該位時間內(nèi)將不會發(fā)生再同步第献。再同步可能導(dǎo)致相位緩沖段1被延長或相位緩沖段2被短贡必。這兩個相位緩沖段的延長時間或縮短時間上限由再同步跳轉(zhuǎn)寬度(SJW)給定。
可靠性
為防止汽車在使用壽命期內(nèi)由于數(shù)據(jù)交換錯誤而對司機造成危險庸毫,汽車的安全系統(tǒng)要求數(shù)據(jù)傳輸具有較高的安全性仔拟。如果數(shù)據(jù)傳輸?shù)目煽啃宰銐蚋撸蛘邭埩粝聛淼臄?shù)據(jù)錯誤足夠低的話飒赃,這一目標(biāo)不難實現(xiàn)利花。從總線系統(tǒng)數(shù)據(jù)的角度看科侈,可靠性可以理解為,對傳輸過程產(chǎn)生的數(shù)據(jù)錯誤的識別能力炒事。殘余數(shù)據(jù)錯誤的概率可以通過對數(shù)據(jù)傳輸可靠性的統(tǒng)計測量獲得臀栈。它描述了傳送數(shù)據(jù)被破壞和這種破壞不能被探測出來的概率。
殘余數(shù)據(jù)錯誤概率必須非常小挠乳,使其在系統(tǒng)整個壽命周期內(nèi)权薯,按平均統(tǒng)計時幾乎檢測不到。計算殘余錯誤概率要求能夠?qū)?shù)據(jù)錯誤進行分類睡扬,并且數(shù)據(jù)傳輸路徑可由一模型描述盟蚣。如果要確定CAN的殘余錯誤概率,我們可將殘留錯誤的概率作為具有80~90位的報文傳送時位錯誤概率的函數(shù)卖怜,并假定這個系統(tǒng)中有5~10個站屎开,并且錯誤率為1/1000,那么最大位錯誤概率為10—13數(shù)量級马靠。例如奄抽,CAN網(wǎng)絡(luò)的數(shù)據(jù)傳輸率最大為1Mbps,如果數(shù)據(jù)傳輸能力僅使用50%甩鳄,那么對于一個工作壽命4000小時如孝、平均報文長度為 80位的系統(tǒng),所傳送的數(shù)據(jù)總量為9×1010娩贷。在系統(tǒng)運行壽命期內(nèi),不可檢測的傳輸錯誤的統(tǒng)計平均小于10—2量級锁孟。換句話說彬祖,一個系統(tǒng)按每年365天,每天工作8小時品抽,每秒錯誤率為0. 7計算储笑,那么按統(tǒng)計平均,每1000年才會發(fā)生一個不可檢測的錯誤圆恤。
5 應(yīng)用舉例
CAN總線在工控領(lǐng)域主要使用低速-容錯CAN即ISO11898-3標(biāo)準(zhǔn)突倍,在汽車領(lǐng)域常使用500Kbps的高速CAN。
CAN總線的汽車內(nèi)部網(wǎng)絡(luò)系統(tǒng)
某進口車型擁有盆昙,車身羽历、舒適、多媒體等多個控制網(wǎng)絡(luò)淡喜,其中車身控制使用CAN網(wǎng)絡(luò)秕磷,舒適使用LIN網(wǎng)絡(luò),多媒體使用MOST網(wǎng)絡(luò)炼团,以CAN網(wǎng)為主網(wǎng)澎嚣,控制發(fā)動機疏尿、變速箱、ABS等車身安全模塊易桃,并將轉(zhuǎn)速褥琐、車速、油溫等共享至全車晤郑,實現(xiàn)汽車智能化控制敌呈,如高速時自動鎖閉車門,安全氣囊彈出時贩汉,自動開啟車門等功能驱富。
CAN系統(tǒng)又分為高速和低速,高速CAN系統(tǒng)采用硬線是動力型匹舞,速度:500kbps褐鸥,控制ECU、ABS等赐稽;低速CAN是舒適型叫榕,速度:125Kbps,主要控制儀表姊舵、防盜等晰绎。
優(yōu)點編輯
廢除傳統(tǒng)的站地址編碼,代之以對通信數(shù)據(jù)塊進行編碼括丁,可以多主方式工作荞下;
采用非破壞性仲裁技術(shù),當(dāng)兩個節(jié)點同時向網(wǎng)絡(luò)上傳送數(shù)據(jù)時史飞,優(yōu)先級低的節(jié)點主動停止數(shù)據(jù)發(fā)送尖昏,而優(yōu)先級高的節(jié)點可不受影響繼續(xù)傳輸數(shù)據(jù),有效避免了總線沖突;
采用短幀結(jié)構(gòu),每一幀的有效字節(jié)數(shù)為8個庐冯,數(shù)據(jù)傳輸時間短,受干擾的概率低迹淌,重新發(fā)送的時間短;
每幀數(shù)據(jù)都有CRC校驗及其他檢錯措施己单,保證了數(shù)據(jù)傳輸?shù)母呖煽啃园η裕m于在高干擾環(huán)境下使用;
節(jié)點在錯誤嚴(yán)重的情況下荷鼠,具有自動關(guān)閉總線的功能句携,切斷它與總線的聯(lián)系,以使總線上其他操作不受影響允乐;
可以點對點矮嫉,一對多及廣播集中方式傳送和接受數(shù)據(jù)削咆。
具有實時性強、傳輸距離較遠蠢笋、抗電磁干擾能力強拨齐、成本低等優(yōu)點;
采用雙線串行通信方式昨寞,檢錯能力強瞻惋,可在高噪聲干擾環(huán)境中工作;
具有優(yōu)先權(quán)和仲裁功能援岩,多個控制模塊通過CAN控制器掛到CAN-Bus上歼狼,形成多主機局部網(wǎng)絡(luò);
可根據(jù)報文的ID決定接收或屏蔽該報文享怀;
可靠的錯誤處理和檢錯機制羽峰;
發(fā)送的信息遭到破壞后,可自動重發(fā)添瓷;
節(jié)點在錯誤嚴(yán)重的情況下具有自動退出總線的功能梅屉;
報文不包含源地址或目標(biāo)地址,僅用標(biāo)志符來指示功能信息鳞贷、優(yōu)先級信息坯汤。
6 測試工具編輯
CAN總線多用于工控和汽車領(lǐng)域,在CAN總線的開發(fā)測試階段搀愧,需要對其拓撲結(jié)構(gòu)惰聂,節(jié)點功能,網(wǎng)路整合等進行開發(fā)測試咱筛,需要虛擬庶近、半虛擬、全實物仿真測試平臺眷蚓,并且必須測試各節(jié)點是否符合ISO11898中規(guī)定的錯誤響應(yīng)機制等,所以CAN總線的開發(fā)需要專業(yè)的開發(fā)測試工具反番,并且在生產(chǎn)階段也需要一批簡單易用的生產(chǎn)線測試工具沙热。CAN總線開發(fā)測試工具的主要供應(yīng)商有ZLG、Passion IXXAT罢缸、IHR篙贸、Vector、Intrepidcs枫疆、Passion Warwick爵川、LAIKE等。常用的開發(fā)測試工具如CANScope息楔、CANalyst-II寝贡、Passiontech DiagRA扒披、canAnalyser、X-Analyser圃泡、AutoCAN碟案、CANspider,LAIKE CANTest等颇蜡。
7 錯誤處理編輯
在CAN總線中存在5種錯誤類型价说,它們互相并不排斥,下面簡單介紹一下它們的區(qū)別风秤、產(chǎn)生的原因及處理方法鳖目。
位錯誤:向總線送出一位的某個節(jié)點同時也在監(jiān)視總線,當(dāng)監(jiān)視到總線位的電平和送出的電平不同時缤弦,則在該位時刻檢測到一個位錯誤领迈。但是在仲裁區(qū)的填充位流期間或應(yīng)答間隙送出隱性位而檢測到顯性位時,不認為是錯誤位甸鸟。送出認可錯誤標(biāo)注的發(fā)送器惦费,在檢測到顯性位時也不認為是錯誤位。
填充錯誤:在使用位填充方法進行編碼的報文中抢韭,出現(xiàn)了第6個連續(xù)相同的位電平時薪贫,將檢測出一個填充錯誤。
CRC錯誤:CRC序列是由發(fā)送器CRC計算的結(jié)果組成的刻恭。接收器以和發(fā)送器相同的方法計算CRC瞧省。如果計算的結(jié)果和接收到的CRC序列不同,則檢測出一個CRC錯誤鳍贾。
形式錯誤:當(dāng)固定形式的位區(qū)中出現(xiàn)一個或多個非法位時鞍匾,則檢測到一個形式錯誤。
應(yīng)答錯誤:在應(yīng)答間隙骑科,發(fā)送器未檢測到顯性位時橡淑,則由它檢測出一個應(yīng)答錯誤。
檢測到出錯條件的節(jié)點通過發(fā)送錯誤標(biāo)志進行標(biāo)定咆爽。當(dāng)任何節(jié)點檢測出位錯誤梁棠、填充錯誤、形式錯誤或應(yīng)答錯誤時斗埂,由該節(jié)點在下一位開始發(fā)送出錯誤標(biāo)志符糊。
當(dāng)檢測到CRC錯誤時。出錯標(biāo)志在應(yīng)答界定符后面那一位開始發(fā)送.除非其他出錯條件的錯誤標(biāo)志已經(jīng)開始發(fā)送呛凶。
在CAN總線中男娄,任何一個單元可能處于下列3種故障狀態(tài)之一:錯誤激活狀態(tài)(ErrorActive)、錯誤認可狀態(tài)(Error Passitive)和總線關(guān)閉狀態(tài)(Bus off)。
錯誤激活單元可以照常參和總線通信模闲,并且當(dāng)檢測到錯誤時建瘫,送出一個活動錯誤標(biāo)志。錯誤認可節(jié)點可參和總線通信围橡,但是不允許送出活動錯誤標(biāo)志暖混。當(dāng)其檢測到錯誤時,只能送出認可錯誤標(biāo)志翁授,并且發(fā)送后仍為錯誤認可狀態(tài)拣播,直到下一次發(fā)送初始化∈詹粒總線關(guān)閉狀態(tài)不允許單元對總線有任何影響贮配。
為了界定故障,在每個總線單元中都設(shè)有2個計數(shù):發(fā)送出錯計數(shù)和接收出錯計數(shù)塞赂。這些計數(shù)按照下列規(guī)則進行泪勒。
(1)接收器檢查出錯誤時,接收器錯誤計數(shù)器加1宴猾,除非所有檢測錯誤是發(fā)送活動錯誤標(biāo)志或超載標(biāo)志期間的位錯誤圆存。
(2)接收器在送出錯誤標(biāo)志后的第一位檢查出顯性位時,錯誤計數(shù)器加8仇哆。
(3)發(fā)送器送出一個錯誤標(biāo)志時沦辙,發(fā)送器錯誤計數(shù)器加8。有兩種情況例外:其一是如果發(fā)送器為錯誤認可讹剔,由于未檢測到顯性位應(yīng)答或檢測到應(yīng)答錯誤油讯,并且在送出其認可錯誤標(biāo)志時,未檢測到顯性位延欠;另外一種情況是如果仲裁器件產(chǎn)生填充錯誤陌兑,發(fā)送器送出一個隱性位錯誤標(biāo)志,而檢測到的是顯性位由捎。除以上兩種情況外兔综,發(fā)送器錯誤計數(shù)器計數(shù)不改變。
(4)發(fā)送器送出一個活動錯誤標(biāo)志或超載標(biāo)志時狞玛,檢測到位錯誤邻奠,則發(fā)送器錯誤計數(shù)器加8。
(5)在送出活動錯誤標(biāo)志为居、認可錯誤標(biāo)志或超載錯誤標(biāo)志后,任何節(jié)點都最多允許連續(xù)7個顯性位杀狡。在檢測到第11個連續(xù)顯性位后蒙畴,或緊隨認可錯誤標(biāo)志檢測到第8個連續(xù)的顯性位,以及附加的8個連續(xù)的顯性位的每個序列后,每個發(fā)送器的發(fā)送錯誤計數(shù)都加8膳凝,并且每個接收器的接收錯誤計數(shù)也加8碑隆。
(6)報文成功發(fā)送后,發(fā)送錯誤計數(shù)減1蹬音,除非計數(shù)值已經(jīng)為0上煤。
(7)報文成功發(fā)送后,如果接收錯誤計數(shù)處于1~197之間著淆,則其值減1劫狠;如果接收錯誤計數(shù)為0,則仍保持為0永部;如果大于127独泞,則將其值記為119~127之間的某個數(shù)值。
(8)當(dāng)發(fā)送錯誤計數(shù)等于或大于128苔埋,或接收錯誤汁數(shù)等于或大于128時懦砂,節(jié)點進入錯誤認,可狀態(tài),節(jié)點送出一個活動錯誤標(biāo)志组橄。
(9)當(dāng)發(fā)送錯誤計數(shù)器大于或等于256時荞膘,節(jié)點進入總線關(guān)閉狀態(tài)。
(10)當(dāng)發(fā)送錯誤計數(shù)和接收錯誤計數(shù)均小于或等于127時玉工,錯誤認可節(jié)點再次變?yōu)殄e誤激活節(jié)點羽资。
(11)在檢測到總線上11個連續(xù)的隱性位發(fā)送128次后,總線關(guān)閉節(jié)點將變?yōu)?個錯誤計數(shù)器均為0的錯誤激活節(jié)點瓮栗。
(12)當(dāng)錯誤計數(shù)器數(shù)值大于96時削罩,說明總線被嚴(yán)重干擾。
如果系統(tǒng)啟動期間僅有1個節(jié)點掛在總線上费奸,此節(jié)點發(fā)出報文后弥激,將得不到應(yīng)答,檢查出錯誤并重復(fù)該報文愿阐,此時該節(jié)點可以變?yōu)殄e誤認可節(jié)點微服,但不會因此關(guān)閉總線。