一種CAN總線(xiàn)—PROFIBUS-DP總線(xiàn)網(wǎng)關(guān)的實(shí)現方法
在80年代中期,為了滿(mǎn)足不同自動(dòng)化領(lǐng)域的應用需求,出現了擁有不同技術(shù)特點(diǎn)的現場(chǎng)總線(xiàn)。每一種現場(chǎng)總線(xiàn)都有自己的應用領(lǐng)域,并且都力圖拓展其應用領(lǐng)域,以擴張其技術(shù)壟斷范圍。但每種現場(chǎng)總線(xiàn)都以一個(gè)或幾個(gè)大型跨國公司為背景,公司的利益與總線(xiàn)的發(fā)展息息相關(guān)。這些公司競爭的結果是多種總線(xiàn)協(xié)調共存。據不完全統計,目前國際上有200多種現場(chǎng)總線(xiàn),而其中占據市場(chǎng)主流的現場(chǎng)總線(xiàn)有十幾種[1]?,F場(chǎng)總線(xiàn)的多樣性,為總線(xiàn)設備用戶(hù)提供了更多產(chǎn)品選擇的同時(shí),也為總線(xiàn)用戶(hù)帶了總線(xiàn)設備間兼容性問(wèn)題。工廠(chǎng)在擴建,改建等過(guò)程中很可能會(huì )選用與原先現場(chǎng)設備總線(xiàn)標準不同的產(chǎn)品,這些設備由于使用不同的現場(chǎng)總線(xiàn),彼此間不能實(shí)現數據共享,于是就降低了設備間功能互補的優(yōu)點(diǎn)。因此針對多種總線(xiàn)共存的客觀(guān)事實(shí),探討如何解決不同現場(chǎng)總線(xiàn)系統的互聯(lián)有著(zhù)重要的現實(shí)意義。本文主要研究PROFIBUS-DP[2]與CAN[3]兩種總線(xiàn)的協(xié)議轉換的原理,并設計出了一種網(wǎng)關(guān)實(shí)現了這兩種總線(xiàn)的互聯(lián)。
2 方案設計
對于兩個(gè)異構的現場(chǎng)總線(xiàn),其數據鏈路層和應用層協(xié)議是截然不同的,要實(shí)現它們的互聯(lián),需要采用網(wǎng)關(guān)進(jìn)行協(xié)議轉換。協(xié)議轉換在網(wǎng)關(guān)內是按分層逐次進(jìn)行的。網(wǎng)關(guān)將現場(chǎng)總線(xiàn)設備1發(fā)送來(lái)的數據在不同的協(xié)議層次進(jìn)行解包,最終得到報文中的用戶(hù)數據。然后再按照現場(chǎng)總線(xiàn)協(xié)議2逐層打包,然后發(fā)送到現場(chǎng)總線(xiàn)2中的設備。
網(wǎng)關(guān)(gateway)是用于實(shí)現數據鏈路層以上層的網(wǎng)絡(luò )互聯(lián)設備,它相當于一個(gè)協(xié)議轉換器,可以是雙向的,也可以是單向的,用來(lái)連接不同協(xié)議的網(wǎng)絡(luò )。它不像網(wǎng)橋一樣要求數據鏈路層和應用層的協(xié)議完全一致。
通常見(jiàn)到的現場(chǎng)總線(xiàn)網(wǎng)關(guān)是單CPU結構的,在這種結構里,CPU要完成兩種總線(xiàn)信息的傳輸與控制,同時(shí)還要完成兩種總線(xiàn)協(xié)議的轉換工作,該方案CPU負擔較重,控制復雜,軟件采用多重嵌套。這里提出了一種基于雙CPU結構的網(wǎng)關(guān)設計方法,系統中的兩個(gè)CPU對兩種總線(xiàn)協(xié)議的數據各自進(jìn)行處理與控制,并將需要傳遞的信息放在雙口RAM內,實(shí)現信息共享與傳遞,這種方案容易控制,軟件簡(jiǎn)單,同時(shí)減輕了CPU的負擔,增強了可靠性。
3 系統的硬件設計
系統的硬件根據功能可分為三大部分,一是CAN總線(xiàn)接口電路,完成CAN總線(xiàn)的數據收發(fā)與控制;二是PROFIBUS-DP總線(xiàn)接口電路,完成PROFIBUS總線(xiàn)數據的收發(fā)與控制;三是雙口RAM接口電路,用來(lái)完成兩種總線(xiàn)數據的交換。
3.1 CAN總線(xiàn)接口硬件結構
CAN總線(xiàn)接口的整體硬件結構如圖1。電路主要由四部分所構成,微控制器89C52(1),獨立CAN通信控制器SJA1000,CAN總線(xiàn)收發(fā)器82C250和高速光電耦合器6N137。
89C52(1)負責SJA1000 的初始化,通過(guò)控制SJA1000 實(shí)現數據的接收和發(fā)送等通信任務(wù),同時(shí)還負責與PROFIBUS總線(xiàn)接口側的的數據交換,選擇89C52(1)作為CPU的主要是因為它不僅與CAN控制芯片SJA1000兼容,而且內部集成8k flash RAM,可以滿(mǎn)足系統的存儲要求,不需要再外擴程序存儲器。
SJA1000為CAN總線(xiàn)控制器。它是一種獨立CAN 控制器,是PHILIPS公司的CA82C200 CAN控制器的替代產(chǎn)品,它在軟件和引腳上都保持了與PCA82C200的兼容。它具有BasicCAN和PeliCAN兩種工作方式,其中 BasicCAN是與PCA82C200兼容的方式;PeliCAN是擴展特性方式,支持具有很多新特性的CAN 2.0B協(xié)議。SJA1000的主要新功能有:標準結構和擴展結構報文的接收和發(fā)送;64 字節的接收FIFO;標準和擴展幀格式都具有單/雙接收濾波器含接收屏蔽和接收碼寄存器;可進(jìn)行讀/寫(xiě)訪(fǎng)問(wèn)的錯誤計數器;可編程的錯誤報警限制;最近一次的錯誤代碼寄存器;每一個(gè)CAN 總線(xiàn)錯誤都可以產(chǎn)生錯誤中斷;具有丟失仲裁定位功能的丟失仲裁中斷;單發(fā)方式當發(fā)生錯誤或丟失仲裁時(shí)不重發(fā);只聽(tīng)方式監聽(tīng)CAN 總線(xiàn)無(wú)應答無(wú)錯誤標志;支持熱插拔無(wú)干擾軟件驅動(dòng)位速率檢測;硬件禁止CLKOUT輸出。 SJA1000的AD0-AD7連接到89C52(1)的P0口,CS 連接到89C52(1)的P2.7, P2.7為0的CPU片外存貯器地址可選中SJA1000,CPU通過(guò)這些地址可對SJA1000執行相應的讀寫(xiě)操作SJA1000的RD,WR,ALE 分別與89C52的對應引腳相連。
評論