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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于CAN總線的多機(jī)通信中的設(shè)計應(yīng)用

          基于CAN總線的多機(jī)通信中的設(shè)計應(yīng)用

          作者: 時間:2012-02-09 來源:網(wǎng)絡(luò) 收藏

          隨著微處理器的發(fā)展,利用微處理器對工業(yè)生產(chǎn)過程進(jìn)行控制已成為趨勢。在工業(yè)控制過程中,由于大量數(shù)據(jù)信息的共享和傳輸,傳統(tǒng)的串行模式已不能滿足要求。在工業(yè)控制領(lǐng)域中,需要一種抗干擾性強(qiáng)、可靠性高、傳輸速度快和傳輸距離長的結(jié)構(gòu)。技術(shù)不僅滿足上述要求,而且還能實(shí)現(xiàn)多點(diǎn)間的信息傳遞。本文使用PCI9810-cAN適配卡上的組成局域網(wǎng)絡(luò),實(shí)現(xiàn)多微處理器間的信息傳遞和PC機(jī)對多處理器的檢控、

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

          1 總線簡介

          CAN(Controller Area Networks)總線,最早是由德國Bosch公司開發(fā)用于局域網(wǎng)控制的總線技術(shù)。CAN總線采用傳統(tǒng)的雙線串行方式,具有診斷能力,抗電磁干擾,其最陜傳輸速率可達(dá)1 Mb·s-1,最長通信距離可達(dá)10 km(此時的傳輸速率大約為40 kb·s-1)。在CAN總線組成的局域網(wǎng)絡(luò)中,通信節(jié)點(diǎn)之間不采用主從方式,而是具有總線訪問優(yōu)先權(quán),通信方式靈活,可實(shí)現(xiàn)點(diǎn)對點(diǎn),一點(diǎn)對多點(diǎn)及廣播方式傳輸數(shù)據(jù)。

          2 系統(tǒng)通信模塊的硬件

          CAN總線是由PCI9810-CAN適配卡提供,本文主要完成通信節(jié)點(diǎn)的。通信節(jié)點(diǎn)不僅可以和PC機(jī)進(jìn)行信息交換,還可獨(dú)立與其他各節(jié)點(diǎn)通信。微處理器在需要和主機(jī)或其它節(jié)點(diǎn)通信時,其通過P0口向SJA1000T的寄存器發(fā)送信息,再由PCA82C250把信息傳遞到CAN總線上。主機(jī)和其他通信節(jié)點(diǎn)判斷接收報文的標(biāo)識符,將對接收到的信息作相應(yīng)的處理,從而實(shí)現(xiàn)通信功能,如圖1所示。

          系統(tǒng)通信接點(diǎn)的原理

          圖1 系統(tǒng)通信接點(diǎn)的原理

          過程中,為了滿足多微處理器間通信的實(shí)時性和可靠性要求,結(jié)合CAN控制器的特點(diǎn),對圖1作簡單介紹:

          (1)收發(fā)器PCA82C250的引腳8(Rs)有3種工作方式:高速,斜率控制和待機(jī)。斜率控制方式具有抗射頻干擾的功能,所以采用47 kΩ的電阻連接引腳8,實(shí)現(xiàn)斜率控制方式。

          (2)圖1中應(yīng)為兩個高速光電耦合隔離器件6N137,由于6N137輸出引腳的驅(qū)動能力不夠,需要連接一個約390 Ω的上拉電阻,以增加輸出引腳的驅(qū)動能力。兩個光電耦合隔離器件6N137的電源信號采用5 V的DC-DC隔離模塊WRA0505P,以增強(qiáng)系統(tǒng)的抗干擾能力。

          (3)收發(fā)器PCA82C250的CANH和CANL引腳各自由通過一個5 Ω的電阻與CAN總線相連,電阻起到一定的限流作用,保護(hù)PCA82C250免受CAN總線上的過流沖擊。

          (4)收發(fā)器PCA82C250的CANH和CANL引腳與電源地之間分別反接一個保護(hù)二極管和30 pF的電容,可以起到CAN總線的過壓保護(hù)作用和過流沖擊。

          (5)CAN控制器SJA1000T輸入方式有2種:Intel輸入方式和Motorola輸入方式。在此采用Intel輸入方式,所以SJA1000T的MODE引腳接高電平。

          (6)設(shè)計僅用到TX0和RX0引腳,根據(jù)SJA1000T通信協(xié)議所要求的輸入/輸出邏輯電平關(guān)系,SJA1000T的TX1腳懸空,RX1引腳的電位必須維持在0.5 Vcc以上,所以在TX1引腳接上約6.8 kΩ和3.6 kΩ分壓電阻。

          (7)微處理器C51的引腳P2.7接CAN控制器SJA1000T的片選信號/CS,可知CAN控制器SJA1000T的寄存器首地址為8000H。處理器C41和CAN控制器SJA1000T共用12 MHz的晶振,以提高通信速率。

          通過上述分析,設(shè)計的電路原理圖,如圖2所示。

          通信節(jié)點(diǎn)的電路原理圖

          圖2 通信節(jié)點(diǎn)的電路原理圖

          3 系統(tǒng)通信模塊的軟件設(shè)計

          通信模塊的軟件由3部分組成:初始化程序,發(fā)送程序和接受程序。僅這3部分程序,就能完成通信節(jié)點(diǎn)間信息的傳遞。要將CAN總線于更復(fù)雜的通信系統(tǒng)中,還要考慮CAN總線的錯誤處理,超載處理等功能和節(jié)點(diǎn)間的計算方法。由于每個通信節(jié)點(diǎn)都有自己的MCU,所以它們之間可以自由通信。通過CAN收發(fā)器PCA82C250的引腳CANH和CANL對總線輸出,使總線表現(xiàn)“顯性”,這時可發(fā)送信息。判斷總線表現(xiàn)為“顯性”時,就要為接受信息做好準(zhǔn)備。

          3.1 CAN控制器SJA1000T初始化程序

          該程序首先進(jìn)入復(fù)位狀態(tài),設(shè)置SJAl000T的模式寄存器MR為Basic CAN模式,驗(yàn)收碼寄存器ACR和屏蔽碼寄存器AMR,再設(shè)置定時器0和定時器1,輸出控制寄存器OCR,重新設(shè)置控制寄存器CR,返回到正常工作模式下。初始化程序流程圖如圖3所示。

          初始化程序流程圖

          圖3 初始化程序流程圖

          3.2 發(fā)送程序

          此系統(tǒng)采用中斷方式發(fā)送信息,這樣能節(jié)省資源,提高通信效率。需要發(fā)送信息時,先將信息組合成一幀報文:數(shù)據(jù)幀或遠(yuǎn)程幀。進(jìn)入發(fā)送程序后,首先關(guān)閉中斷,保護(hù)現(xiàn)場,讀中斷寄存器是否為發(fā)送中斷,將報文寫入發(fā)送緩沖區(qū),設(shè)置命令寄存器允許發(fā)送,開中斷。發(fā)送程序流程圖,如圖4所示。

           發(fā)送程序流程圖

          圖4 發(fā)送程序流程圖

          3.3 接受程序

          此系統(tǒng)仍采用中斷方式接收信息。接收程序比較復(fù)雜,需要對錯誤報警,接收溢出等情況作進(jìn)一步的處理。信息報文通過CAN總線被送入接收緩存器中,接收中斷被置位,處理器從控制器SJA1000T的緩存器內(nèi)讀取信息,再設(shè)置新的接收標(biāo)志,開中斷。接收程序流程圖如圖5所示。

          接收程序流程圖

          圖5 接收程序流程圖

          4 結(jié)束語

          把多個通信節(jié)點(diǎn)連接到PCI9810-CAN適配卡上的CAN總線,構(gòu)成一個局部通信網(wǎng)絡(luò),從而實(shí)現(xiàn)PC機(jī)對多通信節(jié)點(diǎn)的檢控和信息傳送,通信節(jié)點(diǎn)間的高速通信。在實(shí)際中,可以實(shí)現(xiàn)約110個通信節(jié)點(diǎn)間的通信,但系統(tǒng)比較復(fù)雜,通信效率降低,就需要考慮PCI9810-CAN適配卡和通信節(jié)點(diǎn)的程序改進(jìn)和相應(yīng)算法的。在多機(jī)通信系統(tǒng)的設(shè)計過程中,主要是通過軟件的編寫,提高系統(tǒng)的高速傳輸性。



          評論


          相關(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); })();