新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 一種CAN總線―PROFIBUS-DP總線網關的實現方法

        一種CAN總線―PROFIBUS-DP總線網關的實現方法

        作者: 時間:2012-11-07 來源:網絡 收藏
        1 引言

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

        2 方案設計

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

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

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

        3 系統的硬件設計

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

        3.1 接口硬件結構

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




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

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

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

        為了增強CAN總線節點的抗干擾能力,SJA1000的TX0和RX0并不是直接與82C250的TXD和RXD相連,而是通過高速光耦6N137后與82C250相連,這樣就很好的實現了總線上各CAN節點間的電氣隔離其中光耦部分電路所采用的兩個電源VCC和VDD完全隔離。另外82C 250與 CAN總線的接口部分也采用了一定的安全和抗干擾措施。82C250的CANH和CANL引腳各自通過一個5Ω的電阻與CAN總線相連電阻可起到一定的限流作用,保護82C250免受過流的沖擊。CANH和CANL與地之間并聯了2個30P的小電容,可以起到濾除總線上的高頻干擾和一定的防電磁輻射的能力,另外在兩根CAN總線接入端與地之間分別反接了一個保護二極管,當CAN總線有較高的負電壓時通過二極管的短路可起到一定的過壓保護作用, 82C250的Rs腳上接有一個斜率電阻。

        3.2 總線接口電路

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

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

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

        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 泾源县| 沂南县| 商洛市| 连城县| 南华县| 湖北省| 绥江县| 房产| 昌乐县| 兴宁市| 新竹县| 芮城县| 公主岭市| 武宁县| 通化市| 农安县| 伊金霍洛旗| 长汀县| 远安县| 临沂市| 壶关县| 城步| 桐梓县| 清远市| 万载县| 土默特右旗| 广平县| 股票| 申扎县| 武平县| 东乡族自治县| 墨竹工卡县| 济源市| 澎湖县| 微山县| 鹤山市| 镇坪县| 历史| 克东县| 哈尔滨市| 新化县|