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

          新聞中心

          EEPW首頁 > 手機(jī)與無線通信 > 設(shè)計應(yīng)用 > 數(shù)字繼電保護(hù)系統(tǒng)中CAN總線通信的實現(xiàn)

          數(shù)字繼電保護(hù)系統(tǒng)中CAN總線通信的實現(xiàn)

          作者: 時間:2009-08-24 來源:網(wǎng)絡(luò) 收藏
          是德國BOSCH公司在上世紀(jì)80年代初為解決現(xiàn)代汽車中眾多的控制與測試儀器之間的數(shù)據(jù)交換而開發(fā)的一種串行數(shù)據(jù)協(xié)議。由于的高可靠性和獨特的設(shè)計,目前在電力、移動設(shè)備、醫(yī)療和測試儀器中得到廣泛應(yīng)用,被公認(rèn)為最有前途的現(xiàn)場之一。1993年11月國際標(biāo)準(zhǔn)化組織(ISO)正式頒布了高速控制器局部網(wǎng)()國際標(biāo)準(zhǔn)ISO11898[2],為CAN總線標(biāo)準(zhǔn)化、規(guī)范化推廣鋪平了道路。

          1 CAN總線在中應(yīng)用的可行性分析

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

            CAN總線是一種多主總線,即每個節(jié)點機(jī)均可成為主機(jī),且節(jié)點機(jī)之間也可進(jìn)行,總線上各個節(jié)點共享通信介質(zhì),因此必須解決各節(jié)點競爭使用總線而引起的沖突問題。CAN總線采用了一種獨特的基于報文靜態(tài)優(yōu)先級的非破壞性帶沖突檢測的載波偵聽多路訪問(Nondestructive CSMA/CD)總線仲裁技術(shù)[3]。

            報文的頭部識別符定義一個靜態(tài)的報文優(yōu)先級。只要總線空閑,任何節(jié)點都可以開始發(fā)送報文。如果2個或2個以上的節(jié)點同時開始傳送報文,此時就會出現(xiàn)總線訪問沖突。通過識別符的按位仲裁可以解決這個沖突。仲裁期間,每一個發(fā)送器都對發(fā)送位的電平與被偵聽的總線電平進(jìn)行比較。如果電平相同,則這個節(jié)點可以繼續(xù)發(fā)送;如果不同,退出發(fā)送。

            CAN總線上電平用“顯性”(邏輯“0”)和“隱性”(邏輯“1”)來表示,當(dāng)同時出現(xiàn)“顯性”和“隱性”時,其結(jié)果是總線電平呈“顯性”。如果節(jié)點1發(fā)送的是“隱性”電平而節(jié)點2發(fā)送的是“顯性”電平,兩節(jié)點偵聽到的總線電平則是“顯性”,這樣節(jié)點1就失去了仲裁,必須退出發(fā)送狀態(tài),而節(jié)點2贏得仲裁可以繼續(xù)不受影響地發(fā)送報文。CAN總線這種非破壞性總線仲裁機(jī)制確保了報文和時間均不損失。

            除了上述非破壞性總線仲裁機(jī)制的特點,CAN總線還具有如下顯著的特點[4]:① CAN總線具有完善的錯誤處理機(jī)制,包括偵聽、CRC校驗、位填充技術(shù)、幀格式檢查等以及一些相應(yīng)的準(zhǔn)則。CAN總線上,任何檢測到錯誤的節(jié)點都會發(fā)出一串稱為“錯誤標(biāo)志”的位流,標(biāo)記出已損壞的報文。此報文會失效并將自動地開始重新傳送。 因此,它的可靠性很高。

           ?、?數(shù)據(jù)段長度最多為8個字節(jié),不會占用總線時間過長,從而保證了通信的實時性。如MCP2510 CAN控制器的串行速率為1M,最長報文發(fā)送時延為64µs(8×8/1=64)。但這同時也反映了其不適于傳輸長報文的局限性。

            考慮到中的開關(guān)量信號,包括斷路器位置狀態(tài)信號、投入信號、分合閘與報警信號等,都是幾個字節(jié)的小數(shù)據(jù)量信息,但是對實時性和可靠性要求很高,在保護(hù)系統(tǒng)中應(yīng)用CAN總線傳輸開關(guān)量信號,可以充分發(fā)揮CAN總線的技術(shù)優(yōu)勢。

          2 DSP的McBSP與CAN控制器接口的設(shè)計

            CAN總線通信模塊由MICROCHIP公司的CAN總線控制器MCP2510[5]和TI公司CAN總線收發(fā)器SN65HVD232[6]組成,如圖1所示。MCP2510是帶SPI接口的CAN控制器,與CAN2.0A/B協(xié)議兼容,支持CAN1.2、CAN2.0A、CAN2.0B的被動/主動版本協(xié)議,CAN總線的邏輯鏈路控制和介質(zhì)訪問控制,能夠發(fā)送、接收標(biāo)準(zhǔn)和擴(kuò)展報文,位速率可達(dá)1Mbps,它還具有驗收過濾和消息管理的功能,包括3個發(fā)送緩沖器和2個接收緩沖器,減少了微控制器(MCU)管理的負(fù)擔(dān)。SN65HVD232是CAN協(xié)議控制器和物理總線的驅(qū)動接口,為總線提供不同的發(fā)送能力和對CAN控制器提供不同的接收能力,與ISO11898標(biāo)準(zhǔn)兼容。


          圖1 CAN通信的硬件電路

            本文選用TI公司高性能C54系列的DSP作為控制核心,型號為TMS320VC5410A,工作主頻160MHz。TMS320VC5410A提供高速、雙向、多通道帶緩沖串行接口McBSP與MCP2510的SPI(工業(yè)標(biāo)準(zhǔn)串行外圍接口)接口,兩者連接關(guān)系如圖2所示。

            McBSP功能強(qiáng)大,結(jié)構(gòu)復(fù)雜,要二者的通信,關(guān)鍵要對McBSP的各寄存器進(jìn)行合理配置,包括主從方式選擇,時鐘信號、幀同步信號的產(chǎn)生,數(shù)據(jù)收發(fā)的沿邊選擇,時序配合等,下面分別加以論述。


          圖2 DSP的McBSP與MCP251連接關(guān)系

            時鐘與幀同步信號的連接關(guān)系表明McBSP工作在主(Master)方式,MCP2510 工作在從(Slave)方式。McBSP的發(fā)送時鐘由DSP內(nèi)部采樣率發(fā)生器產(chǎn)生(發(fā)送時鐘模式位CLKXM=1),采樣率發(fā)生器時鐘由DSP內(nèi)部時鐘產(chǎn)生(采樣率發(fā)生器時鐘模式位CLKSM=1),McBSP的接收時鐘由發(fā)送時鐘驅(qū)動(接收時鐘模式位CLKRM=0),MCP2510的時鐘由McBSP給出,總之,所有的時鐘源頭是DSP的內(nèi)部時鐘;同時,發(fā)送幀同步信號FSX由McBSP內(nèi)部寄存器DXR向XSR的數(shù)據(jù)拷貝動作產(chǎn)生(發(fā)送幀同步模式位FSXM=1,采樣率發(fā)生器發(fā)送幀同步模式位FSGM=0),接收幀同步信號由發(fā)送幀同步信號驅(qū)動(接收幀同步模式位FSRM=0)。

            根據(jù)如圖3所示的內(nèi)部連接圖中時鐘和同步信號流程分析,McBSP內(nèi)部時鐘信號(Internal CLKX、Internal CLKR)、幀同步信號(Internal FSX、Internal FSR)與MCP2510的時鐘信號、片選信號同步產(chǎn)生與停止。McBSP內(nèi)部發(fā)送幀同步信號Internal FSX是從低電平跳到高電平,而與之相連的MCP2510片選信號是高電平跳到低電平有效,相位相反,故McBSP內(nèi)部寄存器的發(fā)送幀同步信號極性位FSXP=1,而McBSP內(nèi)部幀同步信號Internal FSR與Internal FSX必須一致,故Internal FSR也必須和MCP2510片選信號反相,接收幀同步信號極性位FSRP=1。


          上一頁 1 2 下一頁

          評論


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