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