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