CAN總線百科
CAN-Bus總線特點(diǎn)
CAN總線與其他總線相比有如下特點(diǎn):
l 它是一種多主總線,即每個(gè)節(jié)點(diǎn)機(jī)均可成為主機(jī),且節(jié)點(diǎn)機(jī)之間也可進(jìn)行通信;
l 通信介質(zhì)可以是雙絞線、同軸電纜或光導(dǎo)纖維,通信速率可達(dá)1Mbps;
l CAN總線通信接口中集成了CAN協(xié)議的物理層和數(shù)據(jù)鏈路層功能,可完成對(duì)通信數(shù)據(jù)的成幀處理,包括位填充、數(shù)據(jù)塊編碼、循環(huán)冗余校驗(yàn)、優(yōu)先級(jí)判別等項(xiàng)工作;
l CAN協(xié)議的一個(gè)最大特點(diǎn)是廢除了傳統(tǒng)的站地址編碼,而代之以對(duì)通信數(shù)據(jù)塊進(jìn)行編碼。采用這種方法的優(yōu)點(diǎn)可使網(wǎng)絡(luò)內(nèi)的節(jié)點(diǎn)個(gè)數(shù)在理論上不受限制,數(shù)據(jù)塊的標(biāo)識(shí)碼可由11位或29位二進(jìn)制數(shù)組成,因此可以定義211或229個(gè)不同的數(shù)據(jù)塊,這種按數(shù)據(jù)塊編碼的方式,還可使不同的節(jié)點(diǎn)同時(shí)接受到相同的數(shù)據(jù),這一點(diǎn)在分步式控制中非常重要;
l 數(shù)據(jù)段長(zhǎng)度最多為8個(gè)字節(jié),可滿足通常工業(yè)領(lǐng)域中控制命令,工作狀態(tài)及測(cè)試數(shù)據(jù)的一般要求。同時(shí),8個(gè)字節(jié)不會(huì)占用總線時(shí)間過(guò)長(zhǎng),從而保證了通信的實(shí)時(shí)性;
l CAN協(xié)議采用CRC檢驗(yàn)并可提供相應(yīng)的錯(cuò)誤處理功能,保證了數(shù)據(jù)通信的可靠性。
l CAN總線所具有的卓越性能、極高的可靠性和獨(dú)特設(shè)計(jì),特別適合工業(yè)設(shè)備測(cè)控單元連。
因此CAN-Bus總線成為倍受工業(yè)界的重視,并已公認(rèn)為最有前途的現(xiàn)場(chǎng)總線之一。
CAN協(xié)議是一個(gè)被定義為ISO11898的國(guó)際標(biāo)準(zhǔn),除了CAN協(xié)議本身外,CAN協(xié)議的一致性測(cè)試也被定義為ISO16845標(biāo)準(zhǔn),它描述了CAN芯片的互換性。
1、數(shù)據(jù)交換原理
CAN是一種基于廣播的通訊機(jī)制,廣播通訊依靠報(bào)文(Message)的傳送機(jī)制來(lái)實(shí)現(xiàn),因此CAN并未定義站及站地址,而僅僅定義了報(bào)文,這些報(bào)文依靠報(bào)文確認(rèn)區(qū)(Identifier)來(lái)進(jìn)行識(shí)別,一個(gè)消息報(bào)文確認(rèn)區(qū)在一個(gè)網(wǎng)絡(luò)中必須是唯一的,它不但描述了某一報(bào)文的意義,而且還定義了報(bào)文的優(yōu)先級(jí),當(dāng)很多站都在訪問(wèn)總線時(shí),優(yōu)先級(jí)是很重要的,因此,CAN是通過(guò)報(bào)文的確認(rèn)區(qū)來(lái)決定報(bào)文的優(yōu)先級(jí)的。
CAN使用地址訪問(wèn)的方法,使網(wǎng)絡(luò)系統(tǒng)的配置變得非常靈活,用戶很容易可以增加一個(gè)新的站到一個(gè)已經(jīng)存在CAN網(wǎng)絡(luò)里,而不用對(duì)已經(jīng)存在的站進(jìn)行任何硬件或軟件上的修改,但必須此新增的站為完全的接收者,這樣它將不會(huì)對(duì)網(wǎng)絡(luò)上各節(jié)點(diǎn)的通訊產(chǎn)生影響。
2、實(shí)時(shí)數(shù)據(jù)傳送
在實(shí)時(shí)處理系統(tǒng)中,通過(guò)網(wǎng)絡(luò)交換緊急報(bào)文存在很大的不同:一個(gè)迅速改變的值,如發(fā)動(dòng)機(jī)負(fù)載必須頻繁的進(jìn)行傳送且要求延遲比其它的值如發(fā)動(dòng)機(jī)溫度要小。發(fā)送的報(bào)文都要和其它的不太緊急的報(bào)文進(jìn)行優(yōu)先級(jí)的比較,在系統(tǒng)設(shè)計(jì)中,報(bào)文的優(yōu)先級(jí)體現(xiàn)在寫入報(bào)文確認(rèn)區(qū)的二進(jìn)制值,這些值不能被動(dòng)態(tài)的改變。確認(rèn)區(qū)中的值越小,其報(bào)文的優(yōu)先級(jí)越高(也就是0比1的優(yōu)先級(jí)高)。
3、消息的幀格式(Frame format)
CAN協(xié)議支持兩種幀格式,它們只是在確認(rèn)區(qū)存在差異,一種被稱為CAN標(biāo)準(zhǔn)幀,在CAN2.0協(xié)議的Part A進(jìn)行定義,標(biāo)準(zhǔn)幀支持11bit的確認(rèn)區(qū)長(zhǎng)度,;另一種稱為CAN擴(kuò)展幀,在CAN2.0協(xié)議的Part B進(jìn)行定義,支持29bit的確認(rèn)區(qū)。
4、檢測(cè)和信號(hào)錯(cuò)誤
不同于其它總線系統(tǒng),當(dāng)錯(cuò)誤產(chǎn)生時(shí)CAN協(xié)議不能立即使用應(yīng)答報(bào)文來(lái)取代錯(cuò)誤信號(hào),對(duì)于錯(cuò)誤偵測(cè)CAN協(xié)議有完整的三種報(bào)文級(jí)機(jī)制:
l 循環(huán)冗余檢測(cè)(CRC)
l 幀檢測(cè)(Frame check)
l ACK錯(cuò)誤
CAN協(xié)議也提供兩種位元級(jí)的錯(cuò)誤偵測(cè)機(jī)制:
l 監(jiān)視(Monitoring)
l 位填充(Bit stuffing)
如果至少一個(gè)站使用上述機(jī)制發(fā)現(xiàn)一個(gè)或多個(gè)錯(cuò)誤,則發(fā)送“錯(cuò)誤標(biāo)志(error flag)”來(lái)取消當(dāng)前的傳送,阻止其它站繼續(xù)接收?qǐng)?bào)文,以確保通過(guò)網(wǎng)絡(luò)的數(shù)據(jù)連貫性,一個(gè)錯(cuò)誤的報(bào)文傳送被取消后,發(fā)送者自動(dòng)重新嘗試發(fā)送(自動(dòng)重發(fā)),并重新進(jìn)行總線訪問(wèn)權(quán)的競(jìng)爭(zhēng)。
CAN-Bus特點(diǎn)
作為ISO11898CAN標(biāo)準(zhǔn)的CAN-Bus(ControLLer Area Net-work Bus),是制造廠中連接現(xiàn)場(chǎng)設(shè)備(傳感器、執(zhí)行器、控制器等)、面向廣播的串行總線系統(tǒng),最初由美國(guó)通用汽車公司(GM)開發(fā)用于汽車工業(yè),后日漸增多地出現(xiàn)在制造自動(dòng)化行業(yè)中。
1、CAN-Bus系統(tǒng)組成及性能
CAN-Bus系統(tǒng)通過(guò)相應(yīng)的CAN接口連接工業(yè)設(shè)備(如限位開關(guān)、光電傳感器、管道閥門、電機(jī)啟動(dòng)器、過(guò)程傳感器、變頻器、顯示板、PLC和PCI作站等)構(gòu)成低成本網(wǎng)絡(luò)。直接連接不僅提供了設(shè)備級(jí)故障診斷方法,而且提高了通信效率和設(shè)備的互換性。CAN-Bus數(shù)據(jù)傳輸速率為1Mbit/s,線路距離lkm,基本站點(diǎn)數(shù)64,傳輸媒體是屏蔽雙絞線或光纖。
2、CAN-Bus數(shù)據(jù)鏈路控制特點(diǎn)
CAN-Bus數(shù)據(jù)鏈路層協(xié)議采用平等式(Peer to peer)通信方式,即使主機(jī)出現(xiàn)故障,系統(tǒng)其余部分仍可運(yùn)行(當(dāng)然性能受一定影響)。當(dāng)一個(gè)站點(diǎn)狀態(tài)改變時(shí),它可廣播發(fā)送信息到所有站點(diǎn)。
CAN-Bus的信息傳輸通過(guò)報(bào)文進(jìn)行,報(bào)文幀有4種類型:數(shù)據(jù)幀、遠(yuǎn)程幀、出錯(cuò)幀和超載幀,其中數(shù)據(jù)幀格式如圖8所示。CAN-Bus幀的數(shù)據(jù)場(chǎng)較短,小于8B,數(shù)據(jù)長(zhǎng)度在控制場(chǎng)中給出。短幀發(fā)送一方面降低了報(bào)文出錯(cuò)率,同時(shí)也有利于減少其他站點(diǎn)的發(fā)送延遲時(shí)間。幀發(fā)送的確認(rèn)由發(fā)送站與接收站共同完成,發(fā)送站發(fā)出的ACK場(chǎng)包含兩個(gè)“空閑”位(recessive bit),接收站在收到正確的CRC場(chǎng)后,立即發(fā)送一個(gè)“占有”位(dominant bit),給發(fā)送站一個(gè)確認(rèn)的回答。CAN-Bus還提供很強(qiáng)的錯(cuò)誤處理能力,可區(qū)分位錯(cuò)誤、填充錯(cuò)誤、CRC錯(cuò)誤、形式錯(cuò)誤和應(yīng)答錯(cuò)誤等。
CAN-Bus應(yīng)用一種面向位型的損傷仲裁方法來(lái)解決媒體多路訪問(wèn)帶來(lái)的沖突問(wèn)題。其仲裁過(guò)程是:當(dāng)總線空閑時(shí),線路表現(xiàn)為“閑置”電平(recessive level),此時(shí)任何站均可發(fā)送報(bào)文。發(fā)送站發(fā)出的幀起始字段產(chǎn)生一個(gè)“占有”電平(dominant level),標(biāo)志發(fā)送開始。所有站以首先開始發(fā)送站的幀起始前沿來(lái)同步。若有多個(gè)站同時(shí)發(fā)送,那么在發(fā)送的仲裁場(chǎng)進(jìn)行逐位比較。仲裁場(chǎng)包含標(biāo)識(shí)符ID(標(biāo)準(zhǔn)為llbit),對(duì)應(yīng)其優(yōu)先級(jí)。每個(gè)站在發(fā)送仲裁場(chǎng)時(shí),將發(fā)送位與線路電平比較,若相同則發(fā)送;若不同則得知優(yōu)先級(jí)低而退出仲裁,不再發(fā)送。系統(tǒng)響應(yīng)時(shí)間與站點(diǎn)數(shù)無(wú)關(guān),只取決于安排的優(yōu)先權(quán)。可以看出,這種媒體訪問(wèn)控制方式不像Ethetnet的CSMA/CDCA協(xié)議那樣會(huì)造成數(shù)據(jù)與信道帶寬受損。
3、CANopen協(xié)議
CAN-Bus除配置設(shè)備網(wǎng)(DeviceNet)協(xié)議外,還提供基于CAL(CANA pllicationlayer) 的CANopen協(xié)議(CiA DS-301),即支持設(shè)備參數(shù)的直接訪問(wèn),又可實(shí)現(xiàn)有苛刻時(shí)間要求的過(guò)程數(shù)據(jù)通信。
CAN-Bus的DeviceNet協(xié)議具有開放性,用戶無(wú)須購(gòu)買加入系統(tǒng)所需的硬件、軟件和允許權(quán),多廠家設(shè)備能夠在單一網(wǎng)絡(luò)上相互操作。CANhs也允許與Ethernet或其他局域網(wǎng)相連,接人控制算法組態(tài)及管理信息PC系統(tǒng),從而形成管控一體化的工業(yè)網(wǎng)絡(luò)。
CAN-Bus應(yīng)用
CAN-Bus的通訊協(xié)議建立在國(guó)際標(biāo)準(zhǔn)組織的開放系統(tǒng)互聯(lián)參考模型基礎(chǔ)上,主要工作在數(shù)據(jù)鏈路層和物理層,用戶可在其基礎(chǔ)上開發(fā)適應(yīng)系統(tǒng)實(shí)際需要的應(yīng)用層通信協(xié)議。CAN的信號(hào)傳輸采用短幀結(jié)構(gòu),每一幀的有效字節(jié)數(shù)為8個(gè),因而傳輸時(shí)間短,受干擾的概率低。當(dāng)節(jié)點(diǎn)嚴(yán)重錯(cuò)誤時(shí),具有自動(dòng)關(guān)閉的功能,以切斷該節(jié)點(diǎn)與總線的聯(lián)系,使總線上的其他節(jié)點(diǎn)及通信不受影響,故具有較強(qiáng)的抗干擾能力。
典型應(yīng)用
● 現(xiàn)有RS232設(shè)備連接CAN-Bus網(wǎng)絡(luò)
● 擴(kuò)展標(biāo)準(zhǔn)RS232網(wǎng)絡(luò)通訊長(zhǎng)度
● PLC設(shè)備連接CAN-Bus網(wǎng)絡(luò)通訊
● CAN-Bus與串行總線之間的網(wǎng)關(guān)網(wǎng)橋
● 工業(yè)現(xiàn)場(chǎng)網(wǎng)絡(luò)數(shù)據(jù)監(jiān)控
● CAN教學(xué)應(yīng)用遠(yuǎn)程通訊
● CAN工業(yè)自動(dòng)化控制系統(tǒng)
● 低速CAN網(wǎng)絡(luò)數(shù)據(jù)采集數(shù)據(jù)分析
● 智能樓宇控制數(shù)據(jù)廣播系統(tǒng)等CAN-Bus應(yīng)用系統(tǒng)。
現(xiàn)場(chǎng)總線技術(shù)以其獨(dú)有的技術(shù)優(yōu)勢(shì)和特點(diǎn),在現(xiàn)代分布式測(cè)量與控制技術(shù)領(lǐng)域中應(yīng)用已愈來(lái)愈廣泛。各種現(xiàn)場(chǎng)總線的主控制器一般都內(nèi)嵌有相當(dāng)完善的、開放式的互聯(lián)通信協(xié)議,它具有通信速度快、誤碼率低、開發(fā)設(shè)計(jì)簡(jiǎn)單及網(wǎng)絡(luò)使用維護(hù)方便等諸多特點(diǎn),是實(shí)現(xiàn)網(wǎng)絡(luò)化現(xiàn)場(chǎng)測(cè)量與控制技術(shù)的一個(gè)發(fā)展方向。但目前的許多現(xiàn)場(chǎng)已投入使用的測(cè)量與控制系統(tǒng)中,各儀器設(shè)備或裝置之間通信所使用的仍是傳統(tǒng)的RS-485或RS-422總線。在不斷投入新型現(xiàn)場(chǎng)總線系統(tǒng)的同時(shí),要在短期內(nèi)改造或淘汰那些舊系統(tǒng)是不現(xiàn)實(shí)的。況且,在許多應(yīng)用場(chǎng)合,新老系統(tǒng)中主機(jī)的控制算法及功能是相似或兼容的,所以在一定時(shí)期新老總線系統(tǒng)同時(shí)并存是客觀的現(xiàn)實(shí)需要。對(duì)此,若能將新老儀器設(shè)備或裝置通過(guò)一種透明轉(zhuǎn)換裝置而有機(jī)地揉合在一起,去掉老系統(tǒng)中重復(fù)的部分,是一種很好的選擇。
CAN總線錯(cuò)誤處理
在CAN總線中存在5種錯(cuò)誤類型,它們互相并不排斥,下面簡(jiǎn)單介紹一下它們的區(qū)別、產(chǎn)生的原因及處理方法。
位錯(cuò)誤:向總線送出一位的某個(gè)節(jié)點(diǎn)同時(shí)也在監(jiān)視總線,當(dāng)監(jiān)視到總線位的電平和送出的電平不同時(shí)9則在該位時(shí)刻檢測(cè)到一個(gè)位錯(cuò)誤。但是在仲裁區(qū)的填充位流期間或應(yīng)答間隙送出隱性位而檢測(cè)到顯性位時(shí),不認(rèn)為是錯(cuò)誤位。送出認(rèn)可錯(cuò)誤標(biāo)注的發(fā)送器,在檢測(cè)到顯性位時(shí)也不認(rèn)為是錯(cuò)誤位。
填充錯(cuò)誤:在使用位填充方法進(jìn)行編碼的報(bào)文中,出現(xiàn)了第6個(gè)連續(xù)相同的位電平時(shí),將檢 測(cè)出一個(gè)填充錯(cuò)誤。
CRC錯(cuò)誤:CRC序列是由發(fā)送器CRC計(jì)算的結(jié)果組成的。接收器以和發(fā)送器相同的方法計(jì)算CRC。如果計(jì)算的結(jié)果和接收到的CRC序列不同,則檢測(cè)出一個(gè)CRC錯(cuò)誤。
形式錯(cuò)誤: 當(dāng)固定形式的位區(qū)中出現(xiàn)一個(gè)或多個(gè)非法位時(shí),則檢測(cè)到一個(gè)形式錯(cuò)誤。
應(yīng)答錯(cuò)誤:在應(yīng)答間隙,發(fā)送器未檢測(cè)到顯性位時(shí),則由它檢測(cè)出一個(gè)應(yīng)答錯(cuò)誤。
檢測(cè)到出錯(cuò)條件的節(jié)點(diǎn)通過(guò)發(fā)送錯(cuò)誤標(biāo)志進(jìn)行標(biāo)定。當(dāng)任何節(jié)點(diǎn)檢測(cè)出位錯(cuò)誤、填充錯(cuò)誤、形式錯(cuò)誤或應(yīng)答錯(cuò)誤時(shí),由該節(jié)點(diǎn)在下一位開始發(fā)送出錯(cuò)誤標(biāo)志。
當(dāng)檢測(cè)到CRC錯(cuò)誤時(shí)。出錯(cuò)標(biāo)志在應(yīng)答界定符后面那一位開始發(fā)送.除非其他出錯(cuò)條件的錯(cuò)誤標(biāo)志已經(jīng)開始發(fā)送。
在CAN總線中,任何一個(gè)單元可能處于下列3種故障狀態(tài)之一:錯(cuò)誤激活狀態(tài)(ErrorActive)、錯(cuò)誤認(rèn)可狀態(tài)(Error Passitive)和總線關(guān)閉狀態(tài)(Bus off)。
錯(cuò)誤激活單元可以照常參和總線通信,并且當(dāng)檢測(cè)到錯(cuò)誤時(shí),送出一個(gè)活動(dòng)錯(cuò)誤標(biāo)志。錯(cuò)誤 認(rèn)可節(jié)點(diǎn)可參和總線通信,但是不允許送出活動(dòng)錯(cuò)誤標(biāo)志。當(dāng)其檢測(cè)到錯(cuò)誤時(shí),只能送出認(rèn)可錯(cuò) 誤標(biāo)志,并且發(fā)送后仍為錯(cuò)誤認(rèn)可狀態(tài),直到下一次發(fā)送初始化。總線關(guān)閉狀態(tài)不允許單元對(duì)總 線有任何影響。
為了界定故障,在每個(gè)總線單元中都設(shè)有2個(gè)計(jì)數(shù):發(fā)送出錯(cuò)計(jì)數(shù)和接收出錯(cuò)計(jì)數(shù)。這些 計(jì)數(shù)按照下列規(guī)則進(jìn)行。
(1)接收器檢查出錯(cuò)誤時(shí),接收器錯(cuò)誤計(jì)數(shù)器加1,除非所有檢測(cè)錯(cuò)誤是發(fā)送活動(dòng)錯(cuò)誤標(biāo)志或超載標(biāo)志期間的位錯(cuò)誤。
(2)接收器在送出錯(cuò)誤標(biāo)志后的第一位檢查出顯性位時(shí),錯(cuò)誤計(jì)數(shù)器加8。
(3)發(fā)送器送出一個(gè)錯(cuò)誤標(biāo)志時(shí),發(fā)送器錯(cuò)誤計(jì)數(shù)器加8。有兩種情況例外:其一是如果發(fā) 送器為錯(cuò)誤認(rèn)可,由于未檢測(cè)到顯性位應(yīng)答或檢測(cè)到應(yīng)答錯(cuò)誤,并且在送出其認(rèn)可錯(cuò)誤標(biāo)志時(shí),未檢測(cè)到顯性位;另外一種情況是如果仲裁器件產(chǎn)生填充錯(cuò)誤,發(fā)送器送出一個(gè)隱性位錯(cuò)誤標(biāo)志,而檢測(cè)到的是顯性位。除以上兩種情況外,發(fā)送器錯(cuò)誤計(jì)數(shù)器計(jì)數(shù)不改變。
(4)發(fā)送器送出一個(gè)活動(dòng)錯(cuò)誤標(biāo)志或超載標(biāo)志時(shí),檢測(cè)到位錯(cuò)誤,則發(fā)送器錯(cuò)誤計(jì)數(shù)器加8。
(5)在送出活動(dòng)鐠誤標(biāo)志、認(rèn)可錯(cuò)誤標(biāo)志或超載錯(cuò)誤標(biāo)志后,任何節(jié)點(diǎn)都最多允許連續(xù)7個(gè)顯性位。在檢測(cè)到第11個(gè)連續(xù)顯性位后,或緊隨認(rèn)可錯(cuò)誤標(biāo)志檢測(cè)到第8個(gè)連續(xù)的顯性位,以及附加的8個(gè)連續(xù)的顯性位的每個(gè)序列后,每個(gè)發(fā)送器的發(fā)送錯(cuò)誤計(jì)數(shù)都加8,并且每個(gè)接收器的接收錯(cuò)誤計(jì)數(shù)也加8。
(6)報(bào)文成功發(fā)送后,發(fā)送錯(cuò)誤計(jì)數(shù)減1,除非計(jì)數(shù)值已經(jīng)為0。
(7)報(bào)文成功發(fā)送后,如果接收錯(cuò)誤計(jì)數(shù)處于1~197之間,則其值減1;如果接收錯(cuò)誤計(jì)數(shù)為0,則仍保持為0;如果大于127,則將其值記為119~127之間的某個(gè)數(shù)值。
(8)當(dāng)發(fā)送錯(cuò)誤計(jì)數(shù)等于或大于128,或接收錯(cuò)誤汁數(shù)等于或大于128時(shí),節(jié)點(diǎn)進(jìn)人錯(cuò)誤認(rèn),可狀態(tài),節(jié)點(diǎn)送出一個(gè)活動(dòng)錯(cuò)誤標(biāo)志。
(9)當(dāng)發(fā)送錯(cuò)誤計(jì)數(shù)器大于或等于256時(shí),節(jié)點(diǎn)進(jìn)人總線關(guān)閉狀態(tài)。
(1O)當(dāng)發(fā)送錯(cuò)誤計(jì)數(shù)和接收錯(cuò)誤計(jì)數(shù)均小于或等于127時(shí),錯(cuò)誤認(rèn)可節(jié)點(diǎn)再次變?yōu)殄e(cuò)誤激活節(jié)點(diǎn)。
(11)在檢測(cè)到總線上11個(gè)連續(xù)的隱性位發(fā)送128次后,總線關(guān)閉節(jié)點(diǎn)將變?yōu)?個(gè)錯(cuò)誤計(jì)數(shù)器均為0的錯(cuò)誤激活節(jié)點(diǎn)。
(12)當(dāng)錯(cuò)誤計(jì)數(shù)器數(shù)值大于96時(shí),說(shuō)明總線被嚴(yán)重干擾。
如果系統(tǒng)啟動(dòng)期間僅有1個(gè)節(jié)點(diǎn)掛在總線上,此節(jié)點(diǎn)發(fā)出報(bào)文后,將得不到應(yīng)答,檢查出錯(cuò)誤并重復(fù)該報(bào)文,此時(shí)該節(jié)點(diǎn)可以變?yōu)殄e(cuò)誤認(rèn)可節(jié)點(diǎn),但不會(huì)因此關(guān)閉總線。
評(píng)論