<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 探討CAN總線的抗干擾能力

          探討CAN總線的抗干擾能力

          作者: 時間:2016-12-14 來源:網(wǎng)絡(luò) 收藏
            CAN總線經(jīng)近20年的發(fā)展已步入壯年期,它不僅在汽車領(lǐng)域的應(yīng)用占據(jù)一定優(yōu)勢,在其他工業(yè)應(yīng)用上也生機(jī)勃勃、枝繁葉茂。究竟是什么原因使它這么成功?當(dāng)人們發(fā)現(xiàn)它的局限性,又面臨新的總線(例如FlexRay)的挑戰(zhàn)時,它的地位還能維持多久?這些問題都離不開對通信技術(shù)本質(zhì)和CAN總線特性的分析與理解。通信技術(shù)的不斷進(jìn)步離不開應(yīng)用對帶寬與抗干擾的追求,又要快又要正確,當(dāng)然關(guān)鍵點是適合當(dāng)前需求的性價比最佳的技術(shù)。沒有這些追求,可能我們會一直停留在RS232的標(biāo)準(zhǔn)上。當(dāng)今CAN總線的競爭對手包括以RS485為物理層的總線和FlexRay總線,這種形勢下CAN總線的生命力在于其優(yōu)越的抗干擾能力和性價比,這些都來源于它獨特的物理層與數(shù)據(jù)鏈路層的設(shè)計。

          1 物理層[13]

          本文引用地址:http://www.ex-cimer.com/article/201612/329613.htm

          1.1 信號狀態(tài)

            CAN總線的信號狀態(tài)為2種:隱位與顯位。當(dāng)總線上出現(xiàn)隱位與顯位發(fā)送的競爭時,總線上的最終結(jié)果是顯位。這種二值特性對CAN總線的可靠性與其他特性有很大貢獻(xiàn)。CAN總線信號的二值且“單穩(wěn)態(tài)”的特性為它的數(shù)據(jù)鏈路層創(chuàng)造了條件,即CAN總線上可以容許多主發(fā)送、競爭占線的方式。這極大簡化了消息的調(diào)度。為使總線上的節(jié)點均有機(jī)會發(fā)送,有些總線采用“主從方式”,這種方法使總線的利用率較低,且從節(jié)點消息發(fā)送的等待時間較長。有些總線采用“令牌方式”,但令牌的丟失和重復(fù)需要特別的處理機(jī)制。

            許多總線是不容許總線上有沖突的,因為沖突發(fā)生后,不同的接收節(jié)點得到的電平結(jié)果是不同的。這使它們對總線上發(fā)生的事件在時間上與內(nèi)容上產(chǎn)生不同的解釋,退出沖突就會有時間的先后,從而導(dǎo)致節(jié)點間狀態(tài)的不同步。但是由于干擾的存在,節(jié)點可能會有誤動作,發(fā)生不希望的沖突。為此,要增加需多輔助的設(shè)備來防止沖突,例如在時間觸發(fā)協(xié)議中經(jīng)常采用的總線監(jiān)守。在CAN總線里,沖突的處理由于該信號的二值且“單穩(wěn)態(tài)”的特性變得簡單,報錯幀可以使所有節(jié)點(包括發(fā)生沖突的節(jié)點)容易地取得數(shù)據(jù)的一致性和節(jié)點狀態(tài)的同步。

            FlexRay總線的狀態(tài)有低功耗閑置、閑置、“0”、“1”四種。在正常工作模式時,總線接收部分只認(rèn)可后3種狀態(tài)。與RS485總線不同的是,F(xiàn)lexRay收發(fā)器有一個判斷閑置狀態(tài)的機(jī)制。當(dāng)總線電平差處于某范圍內(nèi)——uBusActiveLow(最低-450 mV)~uBusActiveHigh(最高450 mV)一段時間(dIdleDetection,最小50 ns,最大250 ns)后,它就將RxEN引腳置”1”,并將RxD置”1”。當(dāng)總線電平超出該范圍一段時間(dActivityDetection,最小100 ns,最大300 ns)后,就退出閑置狀態(tài)。因此它不會在閑置狀態(tài)受干擾而輕易地誤判為新幀的開始。而總線上因干擾而引起沖突的情形可由另設(shè)的總線監(jiān)守加以防止。當(dāng)然,這些功能的添加意味著成本的增加。

          1.2 信號電平與共模電壓

            信號電平的高低有兩層影響: 一是閑置時有干擾被誤認(rèn)為是傳送的啟動信號;二是傳送邏輯信號時因干擾而產(chǎn)生誤碼。

            RS485接收器的閾值很小,總線電壓差小于-200 mV時為“0”,大于200 mV時為“1”。因此,200 mV幅度的干擾就可能引起誤啟動,而造成誤碼的干擾幅度為400 mV。RS485總線的共模電壓為-7~+12 V。

            CAN只有2種狀態(tài): 當(dāng)總線電壓差小于0.5 V時,接收為隱位(即邏輯“1”);大于0.9 V時,為顯位(即邏輯“0”)。0.5~0.9 V為變化的過渡區(qū)??偩€隱位電壓差的正常值為0 V,因此可能引起誤啟動的最小干擾為0.5 V;顯位電壓差的正常值為2.0 V,合格的網(wǎng)絡(luò)顯位電壓差的最小值為1.2 V,引起誤碼的最小干擾為0.3 V。CAN總線的共模電壓為-2~+7 V。

            前面已介紹了FlexRay總線在總線閑置與正常通信的過渡情況,不再重復(fù)。它的接收器邏輯“1”電平為uData1(最低150 mV,最高300 mV),邏輯“0”電平為uData0(最低-300 mV,最高-150 mV)。因此引起誤碼的最小干擾為0.3 V。FlexRay總線的共模電壓為-10~+15 V。

          1.3 采樣

            采用RS485收發(fā)器的總線往往與UART相連,它們一般在啟動電平負(fù)跳變后的1/2位處對總線的邏輯值作采樣判斷。因此,當(dāng)總線閑置時,若干擾的幅度足夠大,且持續(xù)時間大于1/2位,就可能產(chǎn)生誤啟動。

            CAN總線的位值一般在80%~90%位處采樣[4],因此它能容忍的誤啟動干擾不但幅度大,而且時間長。正常傳送時,高速CAN的位采樣為1次,低速時可以有3次(例如TJA1000中由SAM位控制)。這意味著可以抵御1次干擾引起的錯誤,因為沒有看到這3次采樣的間隔有多大,只能估計它是以Tq為單位。高速時實現(xiàn)3次采樣的可能性在于廠家產(chǎn)品的設(shè)計,與CAN標(biāo)準(zhǔn)無關(guān),如果以1 Mbps計算,每位分為25個Tq,那么在3次采樣下,可以抵御的干擾持續(xù)時間為40 ns。

            FlexRay總線容許的誤啟動時間與位采樣點位置無關(guān),由dActivityDetection決定,最小為100 ns。正常傳送時,根據(jù)FlexRay數(shù)據(jù)鏈路層3.2.2的規(guī)定,每一位采樣cSamplesPerBit(=8)次,將最近的cVotingSamples(=5)次按多數(shù)進(jìn)行表決,即可得到當(dāng)時的總線接收值(zVotedVal)。因此這種方法可以抵御1/4位長度的干擾,按FlexRay 10 Mbps計算,抵御的干擾持續(xù)時間為25 ns。

          2 媒體存取與邏輯鏈路層[2,5]

          2.1 位填充

            CAN總線的位填充是在以前的位填充做法的基礎(chǔ)上發(fā)展起來的。在高級數(shù)據(jù)鏈路控制規(guī)程(HDLC)中用01111110作報頭與報尾的標(biāo)志位;在其他部分為了不致引起誤解,采用每連續(xù)5個“1”之后填入一個“0”的辦法,接收后將填入的0去掉。CAN總線不僅在連續(xù)5個“1“之后填入一個“0“,而且在5個“0“之后填入一個“1”,接收后將填入位丟掉。CAN總線這樣做不僅為報錯機(jī)制(報錯幀)創(chuàng)造了條件,而且還有2個對信號傳遞有利的方面:一是為CAN總線的位同步創(chuàng)造了較短的同步間隔,有利于提高同步精確度;二是有利于在總線上引入適時的反向放電,減少因總線長期同一極性充電造成的物理層誤判。

            但是位填充方法減弱了CAN總線的CRC防止錯誤漏檢的能力[6]。發(fā)生在填充位的錯誤會改變位流的相位,只要有2次填充位錯就會使原來的部分位流提前或推后1位,而此時仍有CRC檢查通過的可能。通過仿真方法注入位錯,求出CRC檢查漏檢出錯的概率為1.3×10-7,而不是CAN總線聲稱的所有5位以下的錯誤均能檢出。位填充的另一個缺點是造成數(shù)據(jù)輸送率的下降以及幀長度的不確定性。FlexRay總線沒有用位填充的方法,使用其他方法實現(xiàn)位同步。

          2.2 幀編碼與解碼

            關(guān)于CAN總線的幀已有大量文獻(xiàn)介紹,這里不再贅述。FlexRay總線則復(fù)雜得多,其中對用戶安排帶寬起關(guān)鍵作用的是擴(kuò)展字節(jié)的概念。根據(jù)FlexRay總線數(shù)據(jù)鏈路層3.2.1.1.3的規(guī)定,每一個字節(jié)開始處要有一個由“1”和“0”組成的字節(jié)開始序列(Byte Start Sequence,BSS),然后才是要傳送的8位數(shù)據(jù)。FlexRay容許的最大時鐘變化cClockDeviationMax為1 500×10-6(0.15%),因此收發(fā)之間可能差0.3%,每333次就可能差1次采樣。如前所述,1位要采樣8次,那么不到44位就會差1次采樣,因此除了時鐘本身的偏移與速率要校正外,F(xiàn)lexRay中也有位同步的機(jī)制。

            位同步有2個條件:同步機(jī)制已使能;zVotedVal由高到低的跳變。正常傳送時,同步機(jī)制的使能發(fā)生在BSS的zVotedVal為高時。當(dāng)同步時,將保存zVotedVal的cSamplesPerBit位循環(huán)計數(shù)器置2;當(dāng)循環(huán)計數(shù)器計數(shù)為cStrobeOffset(=5)時,將該zVotedVal取作真正送到協(xié)議其他部分的位置。考慮到實現(xiàn)位同步必須有BSS這個因素,一個FlexRay信道即使不算其他開銷,至多只能傳送8 Mbps的實際數(shù)據(jù);再加上其他的開銷,例如發(fā)送幀之間的間隔cChannelIdleDelimiter(=11位)等,有效的負(fù)載更小。

          2.3 回讀

            CAN總線發(fā)送節(jié)點能夠在送出1位時又把它從總線上讀回來,其他總線沒有這個功能。這個功能提供了無損位仲裁的基礎(chǔ),讓優(yōu)先級高的消息獲得在總線上繼續(xù)傳送的權(quán)力;同時,增強(qiáng)了發(fā)送節(jié)點早一點檢測出錯誤的能力,一旦有錯就可發(fā)送報錯幀并停止原來幀的傳送,節(jié)省了出錯后無用部分的繼續(xù)傳送帶寬。

          2.4 錯誤約束

            CAN總線對錯誤的檢測主要是編碼與解碼的過程,例如bit錯、填充錯、ACK錯、CRC錯和格式錯。對于時間同步,并未將其視為重要問題。例如當(dāng)重同步誤差大于重同步跳躍寬度時,肯定會出現(xiàn)位同步的失敗,造成數(shù)據(jù)傳送的錯誤。這種錯誤會被誤認(rèn)為是由其他原因引起,而不能及時發(fā)現(xiàn)。有時候它也成為Babbling idiot失效的原因。CAN總線對瞬態(tài)故障與永久性故障采用分類的約束辦法。有錯時收發(fā)錯計數(shù)器增加快,正常時收發(fā)錯計數(shù)器減少慢,按收發(fā)錯計數(shù)器的值把節(jié)點分為主動報錯狀態(tài)、消極報錯狀態(tài)和離線狀態(tài)。處于消極報錯狀態(tài)的節(jié)點有可能無法正確接收到幀。出錯過于頻繁時把有永久性故障傾向的節(jié)點從總線上切除,雖然被切除的節(jié)點失去了通信能力,但其他節(jié)點間的通信可能免除了騷擾,這不失為一種有效的故障時性能逐步退化的策略(scalable degradation)。

            FlexRay 總線的檢錯包括解碼過程中的錯以及時間同步過程中的錯,例如數(shù)據(jù)幀接收時是否有格式錯、CRC錯,符號(symbol)傳送時高、低的時間長度是否在范圍內(nèi)。由于是時間觸發(fā)協(xié)議,通過各分散的節(jié)點預(yù)定發(fā)送時間與實際發(fā)送時間的差進(jìn)行修正,建立同步時基,對發(fā)送時間的超限要求更嚴(yán)。它對時間同步中產(chǎn)生的問題也采取了一種逐步退化的策略。它有一個協(xié)議運(yùn)行控制的機(jī)制(POC),POC有3個狀態(tài),為POC: normal active(積極),POC: normal passive(消極)和POC: halt(停止)。其中,積極狀態(tài)下,同步處于容許界限內(nèi),不會破壞其他節(jié)點的同步;消極狀態(tài)下,同步已惡化到不能再發(fā)送的地步,若再發(fā)送就有可能超出它的窗口而與其他節(jié)點沖突,但它容許接收,以取得足夠的同步重返積極狀態(tài)。在自檢或完好性檢查(sanity check)未通過,或POC與其他核心機(jī)制發(fā)現(xiàn)嚴(yán)重錯,或host檢查到錯誤給出命令的情況下,POC會進(jìn)入停止?fàn)顟B(tài),此時只有重新初始化了。

            從上面的簡述可見,在保證所有節(jié)點數(shù)據(jù)的一致性上,二者都是要靠其他措施的,而這些可能的措施(例如組籍算法,membership algorithm)都有待討論,對錯誤的約束僅限于逐步退化的策略。

          2.5 幀出錯率

            總線傳送中的出錯來源于各種干擾,除了前面分析的信號電平、采樣過程、共模電壓以外,來自電源的傳導(dǎo)干擾也可能使通信控制器工作異常而通信失效,所以不能僅以物理層的一些指標(biāo)作完整的判斷。幀的出錯概率對應(yīng)用有很大影響,它涉及出錯以后該怎么辦的問題。幀的出錯概率與幀長成比例關(guān)系,CAN2.0A的最大幀長為133位,F(xiàn)lexRay的最大幀長為2 625位(254字節(jié)數(shù)據(jù)+8字節(jié)開銷+5個起始/停止位,這里1字節(jié)=10位)。假設(shè)二者的誤碼率相同,那么FlexRay的幀出錯率PF約為CAN(PC)的20倍。雖然FlexRay幀可傳送的數(shù)據(jù)多得多,但是一個幀錯了,其中的消息便全部不能利用,這種消息捆綁在一起的特性,大大增加了出錯的機(jī)會。如果將FlexRay像CAN那樣傳送短幀,那么幀的效率會比CAN還低,存放靜態(tài)段調(diào)度表的硬件部分更大。如果將來由于ECU內(nèi)處理器更強(qiáng)大,一個節(jié)點發(fā)送的消息更多,那么這種長幀有用途,但是出錯概率的增大仍是缺點。另外,用長幀傳短消息涉及消息在幀內(nèi)的編排方法,這種靈活性必然要求有高級通信層的統(tǒng)一約束,否則會帶來修理、供貨、管理上的不便與成本的增加。這可能是漫長的路,在統(tǒng)一之前仍然是各汽車廠專用的封閉的高層協(xié)議,幾乎沒有留給外人插足的空間。

          3 與FlexRay總線的比較

          3.1 單信道應(yīng)用

            出錯自動重發(fā)是CAN總線的一大特點。FlexRay協(xié)議的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)包括總線方式,但是用2個信道還是1個與性能和成本關(guān)系很大。FlexRay的設(shè)計是用2個信道同時傳送來保證傳送的正確性,因為它不像CAN有出錯重發(fā)的功能。2個通道同時出錯的概率比較小,不考慮出錯重發(fā)時丟幀也不多。如果考慮2個信道同時出錯而要求重發(fā),則必須在應(yīng)用層處理,而在動態(tài)時隙中傳送請求與重發(fā),不是一件容易的事,也推遲了送達(dá)時間。如果FlexRay只用一個信道來完成,出錯概率較大,為了簡化應(yīng)用可以采用重復(fù)傳送的方法(即時間冗余),在2次或多次傳送中只要有1次成功便可。但是這樣做相當(dāng)于把FlexRay的帶寬降了下來,例如減為1/2或1/3。這并不意味著2個信道時吞吐量僅為10 Mbps或更小,因為可以在其中一個信道安排較多的動態(tài)段,用于出錯消息的重發(fā)請求與重發(fā),即僅傳送出錯的部分。

          3.2 安全攸關(guān)應(yīng)用的額外要求

            對FlexRay這樣的時間觸發(fā)通信協(xié)議,其錯誤約束機(jī)制中已盡量考慮了各種可能的出錯情況,防止一個節(jié)點的發(fā)送超出預(yù)定給它的時間窗口。為了提高防錯的能力,另外設(shè)計了總線監(jiān)守。總線監(jiān)守有自己的時鐘線路和與節(jié)點發(fā)送的調(diào)度表,它控制該節(jié)點的總線驅(qū)動器,僅在容許的時間窗口里讓總線驅(qū)動器工作。這種機(jī)制給防止沖突構(gòu)成了雙保險,但是增加了系統(tǒng)的成本,所以把它作為選件。在FlexRay中有2種總線監(jiān)守: 一種是本地總線監(jiān)守,即與節(jié)點靠近的地方,甚至是可以做在同一硅片上的總線監(jiān)守;另一種是遠(yuǎn)方的星型耦合器中的集中式總線監(jiān)守。在總線式應(yīng)用中有關(guān)的是本地總線監(jiān)守。雖然總線監(jiān)守要做的事少一些,但是它也要有時間同步的相關(guān)機(jī)制,以及啟動和從休眠中喚醒的算法。為實現(xiàn)這些功能,從總線上接收數(shù)據(jù)的部分就是必不可少的。由于僅少了發(fā)送部分,F(xiàn)lexRay甚至提到過一種可能:將控制芯片設(shè)計成可組態(tài)的,既可用作通信控制器,又可以用作總線監(jiān)守。這就說明了總線監(jiān)守的結(jié)構(gòu)是復(fù)雜的、高成本的。有的FlexRay文獻(xiàn)中提到,可以將安全攸關(guān)的節(jié)點與要求稍低的節(jié)點連在同一總線上,要求低的節(jié)點可以不配總線監(jiān)守。這種講法是不正確的,因為根據(jù)木桶原理,一段總線上通信的沖突可能性由最有可能引起沖突的節(jié)點決定,安全要求低的節(jié)點發(fā)送超時會引起總線上的沖突,影響安全攸關(guān)消息的傳送。

          4 小結(jié)

            目前在車內(nèi)總線技術(shù)的競爭方面,CAN總線的主要對手是FlexRay總線,因此與FlexRay總線在單信道應(yīng)用上的比較是不可避免的。因為在一個信道上傳送FlexRay 的幀出錯率高很多,又沒有出錯自動重發(fā)的機(jī)制,所以FlexRay總線要減少出錯就必須重復(fù)發(fā)送,以時間備份的方式糾錯。經(jīng)過FlexRay擴(kuò)展字節(jié)與時間備份的折扣,有效的數(shù)據(jù)傳送速率已降到4 Mbps;再加上其他開銷,帶寬還會減小。另一方面,時間觸發(fā)協(xié)議的調(diào)度表的求解在負(fù)載越大時越困難,不可能用足4 Mbps。FlexRay總線的通道長度最長為24 m[3],如果CAN總線也限于24 m,則根據(jù)每米信號傳送遲后約5 ns計算,CAN位時間中傳送段的通道傳送部分為240 ns。若設(shè)計驅(qū)動器的響應(yīng)時間為40 ns左右(如SJA1000),那么CAN總線的數(shù)據(jù)傳輸速率達(dá)到2~3 Mbps也是可能的,雖然ISO118981限定1 Mbps為上限,但它并非技術(shù)的極限。

            FlexRay總線在抗共模干擾上比CAN總線強(qiáng),但是出錯并不僅由共模干擾引起,例如來自電源的傳導(dǎo)干擾也會引起包括比較器在內(nèi)的的所有電路出錯,所以并不能確定FlexRay總線的硬件可靠性高于CAN總線。在保證傳送數(shù)據(jù)的一致性方面,2種協(xié)議都要有應(yīng)用層的解決辦法,F(xiàn)lexRay總線并未提供直接可用的機(jī)制。作為通信的下層,它們都采取的是性能逐步退化的策略。也有人在研究冗余通道、星形拓?fù)?/strong>等措施在CAN總線中如何實現(xiàn),并非不可能。

            就CAN總線而言,F(xiàn)lexRay總線是一種挑戰(zhàn),但是在單信道的總線拓?fù)鋺?yīng)用中FlexRay總線并不構(gòu)成威脅。由于目前高檔車內(nèi)已經(jīng)用了不止一個CAN總線系統(tǒng),用雙信道的FlexRay取代多個CAN總線系統(tǒng)有可能在性價比上取得進(jìn)展,但是與現(xiàn)在生產(chǎn)的應(yīng)用CAN總線的ECU存在兼容問題,且成本較高,這些問題的解決還有待時日。盡管CAN總線有一定局限,甚至還有漏洞,但對CAN總線的改進(jìn)還在繼續(xù),在未來的5~10年里CAN總線仍然有很大的性價比優(yōu)勢。



          關(guān)鍵詞: CAN總線抗干擾能

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();