基于ARM7的MVB_CAN網(wǎng)關(guān)設(shè)計
2 CAN總線與MVB總線協(xié)議轉(zhuǎn)換
CAN總線和MVB總線都屬于現(xiàn)場總線范疇,因此,它們都有自己的網(wǎng)絡(luò)分層結(jié)構(gòu)。對于大多數(shù)現(xiàn)場總線,它們都包括物理層,數(shù)據(jù)鏈路層和應用層。
MVB有過程數(shù)據(jù)和消息數(shù)據(jù)之分。基于過程數(shù)據(jù)的網(wǎng)絡(luò)分層是三層(物理層、數(shù)據(jù)鏈路層、應用層),而基于消息數(shù)據(jù)的網(wǎng)絡(luò)分層則有7層。由于消息數(shù)據(jù)比較復雜且應用場合較少,因此,本文只討論過程數(shù)據(jù)。但實際上,有時也可以將MVB視為一個三層協(xié)議的網(wǎng)絡(luò)。
CAN網(wǎng)絡(luò)分層結(jié)構(gòu)按照CAN總線協(xié)議來說,就只有兩層即物理層和數(shù)據(jù)鏈路層。但是涉及到具體的應用,它實際上也包括應用層。
為了實現(xiàn)兩種總線問的協(xié)議轉(zhuǎn)換,通常需要首先對他們的幀格式進行轉(zhuǎn)換,其主要原因是幀字節(jié)數(shù)大小不同,而幀的編碼解碼部分是由網(wǎng)卡硬件完成的;其次是對應用層的轉(zhuǎn)換,即通過一定的形式將CAN總線中表示過11位標志符的數(shù)據(jù)含義和MVB總線中過程變量的數(shù)據(jù)集對應起來,以實現(xiàn)數(shù)據(jù)之間的傳輸。
3 MVB-CAN網(wǎng)關(guān)的硬件實現(xiàn)
為了設(shè)計方便,本設(shè)計的CAN側(cè)采用三星公司生產(chǎn)的S3C4480微控制器,MVB側(cè)則采用MVBC01 ASIC專用芯片。
MVB通信控制器選用的MVBC01 ASIC專用芯片采用的是16 bit數(shù)據(jù)總線,該芯片同時可提供豐富的接口控制信號(如RDY、TMRDY等待信號),因此,可用于簡化與各種宿主CPU以及通信存儲器的接口設(shè)計。此外,MVBC01還內(nèi)嵌有完整的MVB1類設(shè)備協(xié)議,其中,MVB物理層接口采用電氣短距離介質(zhì)ESD+接口,系統(tǒng)信號通道則使用光耦來實現(xiàn)主系統(tǒng)與外界的電隔離,從而提高了系統(tǒng)的可靠性。另外,系統(tǒng)還使用RS 485芯片作為收發(fā)器,并使用過壓保護模塊來防止瞬間過壓對器件造成的損壞。MVB側(cè)的接口單元如圖4所示。本文引用地址:http://m.butianyuan.cn/article/156540.htm
MVBC01端口ICA (MVB Input Data ChannelA)和ICB(MVB Input Data Channel B)分別為MVB輸入數(shù)據(jù)通道A和輸入數(shù)據(jù)通道B,來自物理層收發(fā)器的MVB信號可由此端口送入MVBC01中。MVBC01的端口OC (MVB Output Data Channel)是MVB的數(shù)據(jù)輸出端口,數(shù)據(jù)經(jīng)此端口可發(fā)送至物理層收發(fā)器。MVBC端口SF(Send Frame)的輸出信號可作為物理層的使能信號,該信號有效時,表示一個報文正在通過MVBC端口OC(MVB Output Data Channel)輸出。
本系統(tǒng)CAN側(cè)采用的是三星公司生產(chǎn)的S3C44BOX微控制器,S3C44BOX是韓國三星公司推出的一款基于ARM7TDMI核的16/32位RISC高性價比、低功耗的嵌入式微處理器。該芯片的片上資源非常豐富,因為它本身帶有可滿足CAN2.0B協(xié)議的CAN控制器,故可省去CAN控制器和單片機之間的硬件連接。
CAN收發(fā)器采用PHILIPS公司的PCA82C250。主要提供對總線的差動發(fā)送能力和對CAN控制器的差動接收能力。當微處理器對CAN控制器進行
相應配置后,收發(fā)器即可自動完成相應的CAN總線動作。
MVBC01的引腳除在MVBC01復位時作為復位完成信號外,還可作為MVBC01接收到網(wǎng)絡(luò)數(shù)據(jù)時的通知信號。它的狀態(tài)通過s3c44b0x的傳送給S3C44BOX。S3C44BOX輪詢檢測,若檢測到跳變發(fā)生且MVBC01判斷此信號為網(wǎng)絡(luò)控制數(shù)據(jù)接收事件,則通過I2C接口讀取MVBC01的數(shù)據(jù)。MVBC01的復位可通過微控制器的PA0端口觸發(fā)。當MVBC01復位完成后,再通過/INT通知微控制器。MVBC01的控制口配置成串行方式的I2C接口,S3C44BOX通過該接口對MVBC01的寄存器進行初始化和其它控制操作。其網(wǎng)關(guān)硬件連接圖如圖5所示。
4 軟件實現(xiàn)
由于MVB-CAN網(wǎng)關(guān)兩側(cè)連接的是兩個現(xiàn)場總線,因此,它們實際的工作就是通過對信息的重新封裝以使MVB總線和CAN總線能夠讀取和傳
輸。
由于CAN數(shù)據(jù)幀包含8個字節(jié)的數(shù)據(jù),而MVB從幀最多包含256個字節(jié)的數(shù)據(jù),因此,從CAN側(cè)接收到的數(shù)據(jù)要通過MVB傳輸,就需要按照一定的格式把CAN幀中的數(shù)據(jù)組合成MVB幀的數(shù)據(jù)格式;同樣,從MVB側(cè)接收到的數(shù)據(jù)要通過CAN傳輸,也需要按照一定的格式對MVB幀中的數(shù)據(jù)進行分幀處理。另外,為了實現(xiàn)透明傳輸,還需要把MVB側(cè)的過程數(shù)據(jù)的數(shù)據(jù)集與CAN側(cè)11位標志符對應起來。
本文采用的方案是建立一種規(guī)范的方式來定義MVB端的MVB各種變量的含義,如所在端的端口地址、長度、以及變量在數(shù)據(jù)集中的偏移量
等。而后再將這些信息按照一定的規(guī)則和CAN總線側(cè)的幀的標識符等信息對應成一個表格,這樣,在CAN側(cè)的數(shù)據(jù)接收就可以借助這個表格來
完成。這樣做的優(yōu)點在于把一些必要的信息(位偏移、長度等)按照約定的形式來實現(xiàn)共享,因而不再需要在數(shù)據(jù)集中分出空間來傳輸一些(包
括長度和偏移等)信息。本文把表格定義為應用層轉(zhuǎn)換表(inbus-to-outbus或者out-to-inhus)。這里的端口指的是一種既可以被總線訪問,又可以被應用處理器訪問的存儲器,它在MVB中是用來尋址的,數(shù)據(jù)的發(fā)送是通過應用將數(shù)據(jù)放入端口,數(shù)據(jù)的接收則是從端口中取數(shù)據(jù)放到應用中去。至于端口與端口間的數(shù)據(jù)拷貝,則是通過主輪詢方式來實現(xiàn)的。當主節(jié)點輪詢到需要發(fā)送數(shù)據(jù)的端口(源端口)時,便會產(chǎn)生從源端口到宿端口(數(shù)據(jù)接收端口)的數(shù)據(jù)拷貝。數(shù)據(jù)集在MVB中其實就是一般的純數(shù)據(jù),之所以稱它為集,主要是因為MVB中一幀的數(shù)據(jù)較長,通常我們把多個變量的信息放在一個集中(一個幀中1來傳輸,這樣做較為經(jīng)濟。
評論