新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 一種嵌入式現(xiàn)場總線通信網(wǎng)關(guān)的設(shè)計與實現(xiàn)

一種嵌入式現(xiàn)場總線通信網(wǎng)關(guān)的設(shè)計與實現(xiàn)

作者: 時間:2013-06-14 來源:網(wǎng)絡(luò) 收藏

摘要:針對異構(gòu)總線間不兼容的問題,提出了一種異構(gòu)現(xiàn)場總線融合通信的設(shè)計實現(xiàn)方法。采用STM32F207作為主控制器,通過協(xié)議轉(zhuǎn)換的方式實現(xiàn)了兩種總線的互連互通,分別給出了軟硬件設(shè)計方案。該的創(chuàng)新點在于定義了的應(yīng)用層協(xié)議,使用該嵌入式現(xiàn)場總線通信網(wǎng)關(guān)構(gòu)建的總線融合通信網(wǎng)絡(luò)能夠完全兼容的原有功能。實踐證明現(xiàn)場總線通信網(wǎng)關(guān)能很好地實現(xiàn)2種總線間的數(shù)據(jù)傳輸,為異構(gòu)現(xiàn)場總線設(shè)備之間的通信提供了一個實用可行的方法。
關(guān)鍵詞:CANBUS;;;網(wǎng)關(guān)

現(xiàn)場總線是近年來發(fā)展迅速的一種工業(yè)數(shù)據(jù)總線,作為工廠數(shù)字通信網(wǎng)絡(luò)的基礎(chǔ),它是溝通生產(chǎn)過程現(xiàn)場及控制設(shè)備之間及其與高控制管理層次的橋梁。現(xiàn)場總線作為一項以智能傳感、控制、計算機、數(shù)字通信等技術(shù)為主要內(nèi)容的綜合技術(shù),已成受到世界范圍的關(guān)注。很多具有國際影響力的公司都先后進行了現(xiàn)場總線產(chǎn)品的開發(fā),盡管國際電工委員會(IEC)自1984年開始制定現(xiàn)場總線標準,目前仍然是多種現(xiàn)場總線并存。多種標準并存的情況造成了不同總線系統(tǒng)之間的不兼容,大大降低了總線系統(tǒng)間的互聯(lián)性和互操作性,給系統(tǒng)的升級和擴容造成了很大的困難。CANBUS和MODBUS是2種應(yīng)用廣泛的工業(yè)現(xiàn)場總線,在實際應(yīng)用中隨著這2種總線技術(shù)的不斷發(fā)展及應(yīng)用,2種總線的交集越來越多,因此彼此間的數(shù)據(jù)共享變得日漸重要。
文中設(shè)計的現(xiàn)場總線通信網(wǎng)關(guān)提供了對CANBUS和MODBUS的支持,實現(xiàn)了CANBUS與MODBUS數(shù)據(jù)的透明傳輸,為2種總線的兼容提供了可行方案。

1 網(wǎng)關(guān)模型分析
本文設(shè)計的現(xiàn)場總線通信網(wǎng)關(guān)具備MODBUS主站及MODBUS從站的功能,以下以兩種典型的應(yīng)用場景為例分析網(wǎng)關(guān)的工作方式。圖1所示的應(yīng)用場景網(wǎng)關(guān)工作在MODBUS主站模式,圖2所示的應(yīng)用場景網(wǎng)關(guān)工作在MODBUS從站模式。

本文引用地址:http://butianyuan.cn/article/148017.htm

a.JPG


1.1 網(wǎng)關(guān)的MODBUS主站模式
網(wǎng)關(guān)工作于MODBUS主站模式時,當CANBUS上的監(jiān)控主機發(fā)出一幀數(shù)據(jù)時,網(wǎng)關(guān)作為CANBUS上的設(shè)備接收到該數(shù)據(jù),根據(jù)驗收碼和屏蔽碼判斷是否處理該數(shù)據(jù)。若驗證成功,則解析收到的CAN數(shù)據(jù)幀,得到CAN數(shù)據(jù)幀中的數(shù)據(jù);將數(shù)據(jù)按照MODBUS協(xié)議逐層打包生成MODBUS幀,網(wǎng)關(guān)作為MODBUS主站向MODBUS上的從站發(fā)送這一幀數(shù)據(jù),完成了一次CANBUS到MODBUS的單向數(shù)據(jù)傳輸。協(xié)議轉(zhuǎn)換示意圖如圖3所示。
1.2 網(wǎng)關(guān)的MODBUS從站模式
網(wǎng)關(guān)工作于MODBUS從站模式時,當由MODBUS上的監(jiān)控主機發(fā)出一幀信息時,網(wǎng)關(guān)收到該MODBUS幀,檢查地址碼與功能碼,若與自身地址相符且功能碼為發(fā)送,按MODBUS協(xié)議逐層解析,得到其數(shù)據(jù);網(wǎng)關(guān)將數(shù)據(jù)按照CANBUS協(xié)議打包形成CAN的數(shù)據(jù)幀,向CANBUS發(fā)送該幀,并向MODBUS主站發(fā)送回應(yīng)幀,完成了一次MODBUS到CANBUS的單向數(shù)據(jù)傳輸。

2 硬件設(shè)計
本文設(shè)計的嵌入式現(xiàn)場總線通信網(wǎng)關(guān)包括主控制器(STM32F207),CANBUS接口單元,MODBUS接口單元用于接入MODBUS,以及3.2英寸LCD觸摸屏模塊。硬件系統(tǒng)框圖如圖4所示。

b.JPG


2.1 STM32F207微控制器
本文選用STM32F207構(gòu)建整個系統(tǒng),STM32F207是一款基于ARM Correx—M3內(nèi)核的32位微處理器,工作頻率120 MHz。STM32F207提供了豐富的接口,支持2路CAN 2.0協(xié)議的CANBUS接口,3路USART接口,2路UART接口,6路定時器,F(xiàn)SMC+SPI接口(16BITFSMc+SPI)用于接入LCD觸摸屏模塊,支持2種調(diào)試接口:串行接口和JTAG調(diào)試接口。
2.2 CANBUS接口單元
由于STM32F207內(nèi)置有bxCAN控制器,該控制器是一種在標準CAN總線基礎(chǔ)上擴展的總線接口,支持CAN總線協(xié)議2.0 A和2.0 B。能以最小的CPU負荷來高效處理收到的大量報文。它也支持報文發(fā)送的優(yōu)先級要求(優(yōu)先級特性可軟件配置)。為了滿足CAN總線協(xié)議中的標識符硬件過濾需求,bxCAN控制器提供了位寬可變的、可配置的過濾器組,用來完成只接收軟件需要的報文功能。CAN接口電路選擇SN65HVD230CANBUS收發(fā)器。SN65HVD230是一種專用于帶CAN控制器設(shè)備的CANBUS收發(fā)器,可應(yīng)用于ISO 11898標準的CANBUS串行通信的物理層中。SN65HVD230CAN BUS收發(fā)器可以向總線和CAN控制器提供不同的數(shù)據(jù)傳輸速度,最高速度為1 Mb/S。
2.3 MODBUS接口單元
MODBUS接口單元使用RS 485串行接口,接口芯片為MAX485。MAX485是用于RS 485與RS 422通信的低功耗收發(fā)器,每個器件中都具有一個驅(qū)動器和一個接收器。驅(qū)動器具有短路電流限制,并可以通過熱關(guān)斷電路將驅(qū)動器輸出置為高阻狀態(tài),防止過度的功率損耗。接收器輸入具有失效保護特性,當輸入開路時,可以確保邏輯高電平輸出。MAX485的驅(qū)動器擺率不受限制,可以實現(xiàn)最高2.5 Mb/s的傳輸速率。

3 軟件設(shè)計
3.1 CANBUS的應(yīng)用層定義
本文設(shè)計的現(xiàn)場總線通信網(wǎng)關(guān)定義了CANBUS的應(yīng)用層協(xié)議。
(1)規(guī)定網(wǎng)關(guān)收到的CAN數(shù)據(jù)幀中的第1個字節(jié)為CANBUS的功能碼,該功能碼為0x0F時,與MODBUS進行通信。
(2)規(guī)定CAN數(shù)據(jù)幀中的第2個字節(jié)的高4位為該幀的標號位,低4位為該幀中包含的數(shù)據(jù)字節(jié)數(shù),該字節(jié)數(shù)為MODBUS協(xié)議中數(shù)據(jù)域的字節(jié)數(shù)。
(3)規(guī)定CAN數(shù)據(jù)幀中的第3,第4個字節(jié)分別為MODBUS的地址碼和功能碼。
(4)規(guī)定從CAN數(shù)據(jù)幀的第5個字節(jié)開始為MODBUS的數(shù)據(jù)域,由于MODBUS的數(shù)據(jù)域一般為4個字節(jié),此時CAN數(shù)據(jù)幀的數(shù)據(jù)段恰好為8個字節(jié)。
(5)當MODBUS數(shù)據(jù)長度大于4字節(jié)時,需要從2個或者多個連續(xù)發(fā)送的標號相同的CAN數(shù)據(jù)幀中獲得完整的MODBUS數(shù)據(jù)。當獲得的數(shù)據(jù)位數(shù)與幀中給出的位數(shù)不同時丟棄該幀。
定義一個數(shù)據(jù)緩沖區(qū)A,一個數(shù)據(jù)緩沖區(qū)B,分別用于臨時存放CANBUS到MODBUS的數(shù)據(jù)和MODBUS到CANBUS的數(shù)據(jù)。
3.2 CANBUS的收發(fā)程序設(shè)計
該部分包括CAN初始化,CAN發(fā)送程序,CAN接收程序。CAN的初始化包括以下內(nèi)容:配置嵌套向量中斷控制器(NVIC),設(shè)置CAN的Rx0和TX中斷的響應(yīng)優(yōu)先級和搶占優(yōu)先級,RX0和TX中斷使能。根據(jù)硬件連接配置GPIO,本文中RX使用GPIOD0,TX使用GPIOD2。設(shè)置波特率及過濾器配置。
CANBUS數(shù)據(jù)的接收是通過接收郵箱(FIFO)中斷進行處理的,當FIFO接收到一個新的報文時,過濾器根據(jù)預(yù)設(shè)的值判斷報文的標示符是否匹配,若不匹配,直接丟棄該報文;若該報文的標示符與預(yù)設(shè)值匹配則中斷處理程序?qū)⒔邮锗]箱中的數(shù)據(jù)拷貝到數(shù)據(jù)緩沖區(qū)A,該數(shù)據(jù)將作為MODBUS主站發(fā)往MODBUS從站的數(shù)據(jù)。CANBUS數(shù)據(jù)接收程序流程如圖5所示。

c.JPG


CANBUS的數(shù)據(jù)發(fā)送同樣使用郵箱機制,網(wǎng)關(guān)從數(shù)據(jù)緩沖區(qū)B中獲得從MODBUS接收的數(shù)據(jù),設(shè)置標示符和數(shù)據(jù)長度,選擇一個發(fā)送郵箱,使能發(fā)送郵箱空中斷。因此當該郵箱為空時產(chǎn)生一個中斷,中斷處理程序?qū)?shù)據(jù)從緩沖區(qū)拷貝到發(fā)送郵箱,該郵箱狀態(tài)變?yōu)轭A(yù)定發(fā)送狀態(tài)。
當CAN總線進入空閑狀態(tài),預(yù)定發(fā)送郵箱中的報文就馬上被發(fā)送,進入發(fā)送狀態(tài)。郵箱中的報文被成功發(fā)送后,它馬上變?yōu)榭锗]箱。CAN BUS數(shù)據(jù)發(fā)送程序如圖6所示。

通信相關(guān)文章:通信原理



上一頁 1 2 下一頁

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉