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

          新聞中心

          EEPW首頁 > 手機與無線通信 > 設計應用 > CAN總線—PROFIBUS-DP總線網關的實現(xiàn)方法

          CAN總線—PROFIBUS-DP總線網關的實現(xiàn)方法

          ——
          作者:張永德 洪錦 梁黎明 時間:2007-01-19 來源:cechina 收藏

          1  引言

          在80年代中期,為了滿足不同自動化領域的應用需求,出現(xiàn)了擁有不同技術特點的現(xiàn)場。每一種現(xiàn)場都有自己的應用領域,并且都力圖拓展其應用領域,以擴張其技術壟斷范圍。但每種現(xiàn)場都以一個或幾個大型跨國公司為背景,公司的利益與總線的發(fā)展息息相關。這些公司競爭的結果是多種總線協(xié)調共存。據不完全統(tǒng)計,目前國際上有200多種現(xiàn)場總線,而其中占據市場主流的現(xiàn)場總線有十幾種[1]?,F(xiàn)場總線的多樣性,為總線設備用戶提供了更多產品選擇的同時,也為總線用戶帶了總線設備間兼容性問題。工廠在擴建,改建等過程中很可能會選用與原先現(xiàn)場設備總線標準不同的產品,這些設備由于使用不同的現(xiàn)場總線,彼此間不能實現(xiàn)數(shù)據共享,于是就降低了設備間功能互補的優(yōu)點。因此針對多種總線共存的客觀事實,探討如何解決不同現(xiàn)場總線系統(tǒng)的互聯(lián)有著重要的現(xiàn)實意義。本文主要研究[2]與[3]兩種總線的協(xié)議轉換的原理,并設計出了一種實現(xiàn)了這兩種總線的互聯(lián)。

          2  方案設計

          對于兩個異構的現(xiàn)場總線,其數(shù)據鏈路層和應用層協(xié)議是截然不同的,要實現(xiàn)它們的互聯(lián),需要采用進行協(xié)議轉換。協(xié)議轉換在內是按分層逐次進行的。網關將現(xiàn)場總線設備1發(fā)送來的數(shù)據在不同的協(xié)議層次進行解包,最終得到報文中的用戶數(shù)據。然后再按照現(xiàn)場總線協(xié)議2逐層打包,然后發(fā)送到現(xiàn)場總線2中的設備。

          網關(gateway)是用于實現(xiàn)數(shù)據鏈路層以上層的互聯(lián)設備,它相當于一個協(xié)議轉換器,可以是雙向的,也可以是單向的,用來連接不同協(xié)議的。它不像網橋一樣要求數(shù)據鏈路層和應用層的協(xié)議完全一致。

          通常見到的現(xiàn)場總線網關是單CPU結構的,在這種結構里,CPU要完成兩種總線信息的傳輸與控制,同時還要完成兩種總線協(xié)議的轉換工作,該方案CPU負擔較重,控制復雜,軟件采用多重嵌套。這里提出了一種基于雙CPU結構的網關設計方法,系統(tǒng)中的兩個CPU對兩種總線協(xié)議的數(shù)據各自進行處理與控制,并將需要傳遞的信息放在雙口RAM內,實現(xiàn)信息共享與傳遞,這種方案容易控制,軟件簡單,同時減輕了CPU的負擔,增強了可靠性。

           3  系統(tǒng)的硬件設計

          系統(tǒng)的硬件根據功能可分為三大部分,一是總線接口電路,完成總線的數(shù)據收發(fā)與控制;二是總線接口電路,完成PROFIBUS總線數(shù)據的收發(fā)與控制;三是雙口RAM接口電路,用來完成兩種總線數(shù)據的交換。

           3.1  CAN總線接口硬件結構

          CAN總線接口的整體硬件結構如圖1。電路主要由四部分所構成,微控制器89C52(1),獨立CAN通信控制器SJA1000,CAN總線收發(fā)器82C250和高速光電耦合器6N137。

              CAN總線接口的整體硬件結構

          89C52(1)負責SJA1000 的初始化,通過控制SJA1000 實現(xiàn)數(shù)據的接收和發(fā)送等通信任務,同時還負責與PROFIBUS總線接口側的的數(shù)據交換,選擇89C52(1)作為CPU的主要是因為它不僅與CAN控制芯片SJA1000兼容,而且內部集成8k flash RAM,可以滿足系統(tǒng)的存儲要求,不需要再外擴程序存儲器。

          SJA1000為CAN總線控制器。它是一種獨立CAN 控制器,是PHILIPS公司的CA82C200 CAN控制器的替代產品,它在軟件和引腳上都保持了與PCA82C200的兼容。它具有BasicCAN和PeliCAN兩種工作方式,其中 BasicCAN是與PCA82C200兼容的方式;PeliCAN是擴展特性方式,支持具有很多新特性的CAN 2.0B協(xié)議。SJA1000的主要新功能有:標準結構和擴展結構報文的接收和發(fā)送;64 字節(jié)的接收FIFO;標準和擴展幀格式都具有單/雙接收濾波器含接收屏蔽和接收碼寄存器;可進行讀/寫訪問的錯誤計數(shù)器;可編程的錯誤報警限制;最近一次的錯誤代碼寄存器;每一個CAN 總線錯誤都可以產生錯誤中斷;具有丟失仲裁定位功能的丟失仲裁中斷;單發(fā)方式當發(fā)生錯誤或丟失仲裁時不重發(fā);只聽方式監(jiān)聽CAN 總線無應答無錯誤標志;支持熱插拔無干擾軟件驅動位速率檢測;硬件禁止CLKOUT輸出。

          SJA1000的AD0-AD7連接到89C52(1)的P0口,CS 連接到89C52(1)的P2.7, P2.7為0的CPU片外存貯器地址可選中SJA1000,CPU通過這些地址可對SJA1000執(zhí)行相應的讀寫操作SJA1000的RD,WR,ALE 分別與89C52的對應引腳相連。

          為了增強CAN總線節(jié)點的抗干擾能力,SJA1000的TX0和RX0并不是直接與82C250的TXD和RXD相連,而是通過高速光耦6N137后與82C250相連,這樣就很好的實現(xiàn)了總線上各CAN節(jié)點間的電氣隔離

          ,其中光耦部分電路所采用的兩個電源VCC和VDD完全隔離。另外82C 250與 CAN總線的接口部分也采用了一定的安全和抗干擾措施。82C250的CANH和CANL引腳各自通過一個5Ω的電阻與CAN總線相連電阻可起到一定的限流作用,保護82C250免受過流的沖擊。CANH和CANL與地之間并聯(lián)了2個30P的小電容,可以起到濾除總線上的高頻干擾和一定的防電磁輻射的能力,另外在兩根CAN總線接入端與地之間分別反接了一個保護二極管,當CAN總線有較高的負電壓時通過二極管的短路可起到一定的過壓保護作用, 82C250的Rs腳上接有一個斜率電阻。

          3.2  總線接口電路

          PROFIBUS-DP總線接口的硬件電路也由四部分所構成,微控制器89C52(2),PROFIBUS-DP通信控制器協(xié)議芯片SPC3,光耦 HCPL7101和6N137,RS485總線驅動電路。圖2為PROFIBUS-DP通信控制器到RS485總線驅動器的硬件電路圖。

          89C52(2)主要負責控制SPC3,實現(xiàn)PROFIBUS-DP總線數(shù)據的轉換與共享。

          SPC3已集成了PROFIBUS-DP物理層的數(shù)據收發(fā)功能,可獨立處理PROFIBUS DP協(xié)議,另外SPC3內部還集成有1.5k的雙口RAM,作為SPC3與用戶程序之間的接口,并且AT89C52(2)可對SPC3內部RAM訪問。

          盡管SPC3已經集成了物理層的數(shù)據傳輸功能,但它不具備RS-485的驅動接口,因此添加了RS-485的驅動電路。
            
              為PROFIBUS

          另外為了避免總線上的信號對電路的影響,在SPC3與RS485總線驅動電路之間采用光電隔離。TxD、RxD信號的隔離器件選用Hewlett Packard公司的12M高速光耦HCPL710,RTS信號的隔離器件選用了6N137。

          3.3  雙口RAM的接口電路

          兩種總線數(shù)據的共享與傳遞是通過雙口RAM實現(xiàn)的,系統(tǒng)里選用了器件IDT7130。它是高速的1K雙口靜態(tài)RAM。該器件提供兩個獨立的端口,分別有獨立的控制、地址和I/O引腳,并允許獨立的異步讀寫訪問內存的任何地址,自動的電源管理特性由CE控制,允許芯片上的每一個端口電路進入一個非常低的電源模式。IDT7130的片內總線仲裁電路具有BUSY和INT兩種總線仲裁方式?;谒捎玫膯纹瑱C型號,在系統(tǒng)里采用了中斷仲裁方案,這種方式的工作原理是一個內存地址(郵箱或者信息中心)被指派給每個端口。左端口的中斷標志被宣稱當右端口寫到內存地址3FEH時,左端口通過訪問3FE內存地址清除中斷。相似的,當左端口寫內存地址3FFH時右端口標志被宣稱,為了清除這個中斷標志,右端口必須訪問內存地址3FFH,系統(tǒng)里3FE和3FF兩個單元的內容賦予新的內涵,即定義兩個碼0FFH和00H。其中0FFH代表發(fā)送命令要求對方傳送數(shù)據,而00H代表發(fā)送的是對方所要求的數(shù)據。系統(tǒng)里兩個CPU與雙口RAM的連接如圖3。雙口RAM的剩余的存儲單元被分為四大部分,其中0000H-00FFH這256個單元用來存儲CAN總線上傳來的數(shù)據或地址,并且相鄰的兩個單元用于存儲一個CAN子站的數(shù)據信息;0100H-01F9H這250個單元用來存儲PROFIBUS總線上傳來的數(shù)據或地址,相鄰的兩個單元用于存儲一個PROFIBUS子站的信息,另外03FCH單元用于存放CAN總線設備所要讀的PROFIBUS站點的ID號,03FDH單元用于存放PROFIBUS總線設備所要讀的CAN站點的ID號。

              系統(tǒng)里兩個CPU與雙口RAM的連接
           
          由圖可知雙口RAM在負責CAN總線通信的微處理器的映射地址為0x7C00H-0x7FFFH,在負責PROFIBUS總線通信的微處理器的映射地址為0x2C00H-0x2FFFH。

          4  系統(tǒng)軟件設計

          網關的軟件可

          分為兩大部分,一部分用于負責CAN總線的數(shù)據通信,另一部分用于負責PROFIBUS總線的數(shù)據通信。

          每側的程序根據功能又可以分為三個子模塊:協(xié)議芯片初始化程序,接受數(shù)據接受子程序,數(shù)據發(fā)送子程序。其中數(shù)據接受子程序考外部中斷觸發(fā)執(zhí)行。下面以網關的CAN總線接口側程序為例,列出程序流程圖,PROFIBUS側的接口程序與之相似,就不再贅述。

          CAN總線側的初始化與發(fā)送程序流程如圖4:

              CAN總線側的初始化與發(fā)送程序流程

          因為SJA1000的初始化只有在復位模式下才可以進行,因此程序首先將SJA1000的中斷屏蔽,使它進入復位模式,然后對它進行初始化。初始化內容主要包括工作方式的設置、接受濾波方式的設置、接受屏蔽寄存器和接受代碼寄存器的設置、波特率參數(shù)設置和中斷允許寄存器的設置等。 SJA1000完成初始化設置后,再讓它返回到工作狀態(tài),進行正常的通信任務。

          在接受子程序里,系統(tǒng)以查詢的方式接受CAN子站傳送過來的數(shù)據,網關通過接受緩沖區(qū)數(shù)據區(qū)的第一個字節(jié)的內容判斷接受的是真正的數(shù)據,還是發(fā)給 PROFIBUS-DP站點的發(fā)送數(shù)據請求。如果數(shù)據區(qū)第一個字節(jié)是00H,則傳送的是數(shù)據信息,于是根據ID查表求得該站所對應的存儲單元,并將數(shù)據區(qū)的第二、三字節(jié)的內容存在該單元內,同時把ID放在7FFCH中,告訴對方發(fā)送數(shù)據的站點號;如果該字節(jié)內容是FFH,則說明是發(fā)送數(shù)據請求,數(shù)據區(qū)第二個字節(jié)存放的是被要求發(fā)送數(shù)據的站點號,將他放入7FFCH內即可。

          CAN總線接口發(fā)送數(shù)據子程序流程圖如圖5:

              CAN總線接口發(fā)送數(shù)據子程序流程圖

          上面的發(fā)送程序是由雙口RAM的中斷信號觸發(fā)的,收到中斷信號后,首先讀取7FFEH單元的內容,將中斷信號消除,然后根據該單元的內容,判斷雙口RAM內存放的是數(shù)據,還是被要求發(fā)送數(shù)據的CAN子站的ID號。如果7FFEH內容為00H,則說明所要發(fā)送到CAN子站的為正常的數(shù)據,于是將發(fā)送緩沖區(qū)的第一個字節(jié)設置為00H,告訴CAN子站發(fā)送的為數(shù)據,然后讀取7FFDH單元內容,查表求得數(shù)據在雙口RAM中的地址,并從該地址取兩個字節(jié)存到SJA1000輸出緩沖區(qū)數(shù)據區(qū)的第二、三個字節(jié),同時把7FFDH作為發(fā)送的ID號。如果7FFDH是FFH,則說明PROFIBUS- DP發(fā)送過來得是被要求發(fā)送數(shù)據的CAN子站的站點號,于是只要把它放到SJA1000發(fā)送緩沖區(qū)數(shù)據區(qū)的第二個字節(jié),并把第一個字節(jié)設為FFH,以通知 CAN站點,發(fā)送的數(shù)據為ID號。以上工作完成后,最后通過寫命令字發(fā)送數(shù)據。

          5  結束語

          實踐證明,雙CPU結構的雙向網關可以很好地完成CAN總線到PROFIBUS-DP總線協(xié)議轉換的任務,并且解決了單CPU結構網關中存在的數(shù)據傳輸速率低,數(shù)據傳輸可靠性差等問題,滿足了CAN總線與PROFIBUS-DP總線協(xié)議轉換的要求。它將CAN總線設備與PROFIBUS總線設備的連接起來,使兩種現(xiàn)場總線設備可以高效的通信,最終達到數(shù)據共享與功能互補的目的。并且工作人員在使用過程中不必關心兩種總線物理層和數(shù)據鏈路層的全部內容,給總線產品的研究開發(fā)帶來極大方便。另外這種雙CPU結構的設計方案對其他現(xiàn)場總線之間的網關設計具有借鑒意義,是一種值得推廣的方法。

          參考文獻

              [1] 鄔寬明. 現(xiàn)場總線應用選編. 北京:北京航空航天大學出版社,2004
              [2] 鄒益仁. 現(xiàn)場總線控制系統(tǒng)的設計和開發(fā). 北京:國防工業(yè)出版社,2003
              [3] 饒運濤. 現(xiàn)場總線CAN原理與應用技術. 北京:北京航空航天大學出版社,2003
              [4] SIEMENS. SPC3 and DPS2 User Description Version2.0,2002
              [5] PNO.Draft GSD Specification for PROFIBUS-DP GSD Revision2,1998

            [6] PHILIPS.Semiconductor PCA82C250 CAN controlerinter-face,1997



          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁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); })();