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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 方便靈活的CAN總線網(wǎng)絡(luò)及應(yīng)用

          方便靈活的CAN總線網(wǎng)絡(luò)及應(yīng)用

          作者: 時間:2013-01-12 來源:網(wǎng)絡(luò) 收藏
            現(xiàn)場總線自20世紀(jì)90年代初出現(xiàn)以來,引起了國內(nèi)外業(yè)界人士的廣泛注意和高度重視,并成為世界范圍的自動化技術(shù)發(fā)展的熱點之一,難怪有人稱之為“自動化儀表與控制系統(tǒng)的一次變革”。應(yīng)該說,現(xiàn)場總線的工業(yè)過程智能自動化儀表和現(xiàn)代總線的開放自動化系統(tǒng)構(gòu)成了新一代全開放自動化控制系統(tǒng)的體系結(jié)構(gòu)。目前國際上公認(rèn)的現(xiàn)場總線有10多種,各有其特點,并在一定范圍內(nèi)得剄應(yīng)用。而本文要分折的是控制器局域網(wǎng)CAN(Controller Area Network)方便靈活的結(jié)構(gòu)、接入、應(yīng)用,并對其拓寬的現(xiàn)場總線控制系統(tǒng)()作出介紹。
            網(wǎng)絡(luò)是炙手可熱的技術(shù)
            網(wǎng)絡(luò)的問世已超過15年,它是德國Bosch公司及幾個半導(dǎo)體集成電路制造商開發(fā),芯片由摩托羅拉、Intel等公司生產(chǎn)。起初是專門為汽車工業(yè)設(shè)計的,面向需要可預(yù)測而無錯誤通訊的汽車應(yīng)用,目的是為了節(jié)省接線的工作量,后來由于自身的特點被廣泛地應(yīng)用于各行各業(yè)。特別是近年來,由于價格不斷下降,CAN成了炙手可熱的技術(shù),并不再局限于汽車應(yīng)用領(lǐng)域。目前它正在工業(yè)網(wǎng)絡(luò)、醫(yī)療設(shè)備、軌道交通信號、樓宇控制及其它眾多系統(tǒng)中得到應(yīng)用。

          CAN總線網(wǎng)絡(luò)多主機(jī)系統(tǒng)


          圖1:CAN 總線網(wǎng)絡(luò)多主機(jī)系統(tǒng)-分布式網(wǎng)絡(luò)(圖右所示)
          與以太網(wǎng)-集中式網(wǎng)絡(luò)(圖左所示)之比較

          基于CAN總線網(wǎng)絡(luò)的光電經(jīng)緯儀通信結(jié)構(gòu)框圖


          圖2:為基于 CAN 總線網(wǎng)絡(luò)的光電經(jīng)緯儀通信結(jié)構(gòu)框圖

            牢靠而高速的通訊
            上述眾多應(yīng)用領(lǐng)城系統(tǒng)之所以采用網(wǎng)絡(luò),不僅因為其成本低廉,還由于通過這種網(wǎng)絡(luò)可進(jìn)行牢靠而高速的通訊。CAN總線可采用雙絞線、同軸電纜或光纖作為傳輸介質(zhì);它的直接通信距離最遠(yuǎn)可達(dá)10km,通信速率通信比特率可高達(dá)1Mbps(此時通信距離為40m);總線上可掛設(shè)備數(shù)主要取決于總線驅(qū)動電路,最多可達(dá)110個。
            CAN總線網(wǎng)絡(luò)是一個多主機(jī)系統(tǒng)
            CAN采用多主工作方式,節(jié)點之間不分主從,但節(jié)點之間有優(yōu)先級之分,通信方式靈活,可實現(xiàn)點對點、一點對多點及廣播方式傳輸數(shù)據(jù),無需調(diào)度。也就是說,它可向系統(tǒng)中的所有節(jié)點進(jìn)行報文發(fā)送廣播。在這種網(wǎng)絡(luò)中,每個節(jié)點均可濾除不需要的報文。
            與以太網(wǎng)之區(qū)別
            傳統(tǒng)的客戶機(jī)/服務(wù)器網(wǎng)絡(luò)(如以太網(wǎng))依賴于網(wǎng)絡(luò)尋址方式將數(shù)據(jù)發(fā)送到單一節(jié)點上,如果網(wǎng)絡(luò)中存在多個節(jié)點,則需用星形配置實現(xiàn)集中控制(見圖1左所示集中式網(wǎng)絡(luò))。這種以太網(wǎng)絡(luò)中只需較少的單片機(jī)即可執(zhí)行各種不同的任務(wù),但所使用的是MCU(多芯片單元),通常需要有較多引腳,而且功能也更加復(fù)雜,很不方便。
            與之相反,CAN系統(tǒng)中的每個節(jié)點均同時接收到同樣的數(shù)據(jù)。缺省情況下,CAN是基于報文而非地址的。系統(tǒng)采用分布式控制實現(xiàn)方法集成了多節(jié)點(見圖1右所示分布式網(wǎng)絡(luò))。這種拓?fù)浣Y(jié)構(gòu)的好處之一是,節(jié)點的增加和去除非常簡單,對軟件的影響也很小。CAN網(wǎng)絡(luò)要求每個節(jié)點均具備智能,但智能化水平可根據(jù)節(jié)點所承載的任務(wù)進(jìn)行調(diào)整。因此CAN系統(tǒng)中使用的單片機(jī)通常較簡單并且引腳數(shù)也較少。由于使用的導(dǎo)線較少并且采用分散式智能,而且CAN網(wǎng)絡(luò)還具有較高的可靠性。
            圖1進(jìn)一步顯示了在多任務(wù)網(wǎng)絡(luò)中,集中式網(wǎng)絡(luò)通常用于以太網(wǎng)系統(tǒng),如果在系統(tǒng)中增加節(jié)點,則要求對系統(tǒng)MCU(多芯片單元)作很大的變動;而CAN網(wǎng)絡(luò)可實現(xiàn)分布式網(wǎng)絡(luò),從系統(tǒng)中增加或刪除節(jié)點只需改變少量的固件。

            CAN采用的是非破壞性總線仲裁技術(shù),按優(yōu)先級發(fā)送,可以大大節(jié)省總線沖突仲裁時間
            而以太網(wǎng)在于它在發(fā)送結(jié)束前進(jìn)行沖突檢測。而CAN在發(fā)送開始時采用沖突檢測并有解決方法。當(dāng)同時發(fā)送的兩個或更多CAN節(jié)點在仲裁期間出現(xiàn)沖突時,報文優(yōu)先級較低的節(jié)點會檢測到?jīng)_突。隨后優(yōu)先級較低的節(jié)點切換到接收模式,等待下一次總線空閑才再次嘗試發(fā)送。
            仲裁成功的發(fā)送器將繼續(xù)如常發(fā)送報文,由于在報文仲裁期間,模式的變更在發(fā)送的一開始就發(fā)生了,而優(yōu)先級高的報文沒有遭到破壞,因此系統(tǒng)對沖突的仲裁結(jié)果能做出更快的回應(yīng)。報文標(biāo)志符可達(dá)2032種,而擴(kuò)展標(biāo)準(zhǔn)的報文標(biāo)志符幾乎不受限制。
            目前CAN已由ISO TC22技術(shù)委員會批準(zhǔn)為國際標(biāo)準(zhǔn),在現(xiàn)場總線中,它是唯一被國際標(biāo)準(zhǔn)化組織批準(zhǔn)的現(xiàn)場總線。CAN協(xié)議也遵循ISO/OSI模型,采用了其中的物理層、數(shù)據(jù)鏈路層與應(yīng)用層。由Bosch公司負(fù)責(zé)編寫的CAN總線網(wǎng)絡(luò)技術(shù)規(guī)范已通過ISO和SAE標(biāo)準(zhǔn)化。完整的CAN規(guī)范標(biāo)準(zhǔn)參見ISO 11898-1。ISO 11898-2包含了CAN物理層規(guī)范。

          經(jīng)緯儀相關(guān)文章:經(jīng)緯儀原理

          上一頁 1 2 下一頁

          關(guān)鍵詞: CAN總線 FCS 模擬信號

          評論


          相關(guān)推薦

          技術(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); })();