一種嵌入式現場(chǎng)總線(xiàn)通信網(wǎng)關(guān)的設計與實(shí)現
摘要:針對異構總線(xiàn)間不兼容的問(wèn)題,提出了一種異構現場(chǎng)總線(xiàn)融合通信網(wǎng)關(guān)的設計實(shí)現方法。網(wǎng)關(guān)采用STM32F207作為主控制器,通過(guò)協(xié)議轉換的方式實(shí)現了CANBUS與MODBUS兩種總線(xiàn)的互連互通,分別給出了軟硬件設計方案。該網(wǎng)關(guān)的創(chuàng )新點(diǎn)在于定義了CANBUS的應用層協(xié)議,使用該嵌入式現場(chǎng)總線(xiàn)通信網(wǎng)關(guān)構建的總線(xiàn)融合通信網(wǎng)絡(luò )能夠完全兼容CANBUS和MODBUS的原有功能。實(shí)踐證明現場(chǎng)總線(xiàn)通信網(wǎng)關(guān)能很好地實(shí)現2種總線(xiàn)間的數據傳輸,為異構現場(chǎng)總線(xiàn)設備之間的通信提供了一個(gè)實(shí)用可行的方法。
關(guān)鍵詞:CANBUS;MODBUS;總線(xiàn)互連;網(wǎng)關(guān)
現場(chǎng)總線(xiàn)是近年來(lái)發(fā)展迅速的一種工業(yè)數據總線(xiàn),作為工廠(chǎng)數字通信網(wǎng)絡(luò )的基礎,它是溝通生產(chǎn)過(guò)程現場(chǎng)及控制設備之間及其與高控制管理層次的橋梁?,F場(chǎng)總線(xiàn)作為一項以智能傳感、控制、計算機、數字通信等技術(shù)為主要內容的綜合技術(shù),已成受到世界范圍的關(guān)注。很多具有國際影響力的公司都先后進(jìn)行了現場(chǎng)總線(xiàn)產(chǎn)品的開(kāi)發(fā),盡管?chē)H電工委員會(huì )(IEC)自1984年開(kāi)始制定現場(chǎng)總線(xiàn)標準,目前仍然是多種現場(chǎng)總線(xiàn)并存。多種標準并存的情況造成了不同總線(xiàn)系統之間的不兼容,大大降低了總線(xiàn)系統間的互聯(lián)性和互操作性,給系統的升級和擴容造成了很大的困難。CANBUS和MODBUS是2種應用廣泛的工業(yè)現場(chǎng)總線(xiàn),在實(shí)際應用中隨著(zhù)這2種總線(xiàn)技術(shù)的不斷發(fā)展及應用,2種總線(xiàn)的交集越來(lái)越多,因此彼此間的數據共享變得日漸重要。
文中設計的現場(chǎng)總線(xiàn)通信網(wǎng)關(guān)提供了對CANBUS和MODBUS的支持,實(shí)現了CANBUS與MODBUS數據的透明傳輸,為2種總線(xiàn)的兼容提供了可行方案。
1 網(wǎng)關(guān)模型分析
本文設計的現場(chǎng)總線(xiàn)通信網(wǎng)關(guān)具備MODBUS主站及MODBUS從站的功能,以下以?xún)煞N典型的應用場(chǎng)景為例分析網(wǎng)關(guān)的工作方式。圖1所示的應用場(chǎng)景網(wǎng)關(guān)工作在MODBUS主站模式,圖2所示的應用場(chǎng)景網(wǎng)關(guān)工作在MODBUS從站模式。
1.1 網(wǎng)關(guān)的MODBUS主站模式
網(wǎng)關(guān)工作于MODBUS主站模式時(shí),當CANBUS上的監控主機發(fā)出一幀數據時(shí),網(wǎng)關(guān)作為CANBUS上的設備接收到該數據,根據驗收碼和屏蔽碼判斷是否處理該數據。若驗證成功,則解析收到的CAN數據幀,得到CAN數據幀中的數據;將數據按照MODBUS協(xié)議逐層打包生成MODBUS幀,網(wǎng)關(guān)作為MODBUS主站向MODBUS上的從站發(fā)送這一幀數據,完成了一次CANBUS到MODBUS的單向數據傳輸。協(xié)議轉換示意圖如圖3所示。
1.2 網(wǎng)關(guān)的MODBUS從站模式
網(wǎng)關(guān)工作于MODBUS從站模式時(shí),當由MODBUS上的監控主機發(fā)出一幀信息時(shí),網(wǎng)關(guān)收到該MODBUS幀,檢查地址碼與功能碼,若與自身地址相符且功能碼為發(fā)送,按MODBUS協(xié)議逐層解析,得到其數據;網(wǎng)關(guān)將數據按照CANBUS協(xié)議打包形成CAN的數據幀,向CANBUS發(fā)送該幀,并向MODBUS主站發(fā)送回應幀,完成了一次MODBUS到CANBUS的單向數據傳輸。
2 硬件設計
本文設計的嵌入式現場(chǎng)總線(xiàn)通信網(wǎng)關(guān)包括主控制器(STM32F207),CANBUS接口單元,MODBUS接口單元用于接入MODBUS,以及3.2英寸LCD觸摸屏模塊。硬件系統框圖如圖4所示。
2.1 STM32F207微控制器
本文選用STM32F207構建整個(gè)系統,STM32F207是一款基于A(yíng)RM Correx—M3內核的32位微處理器,工作頻率120 MHz。STM32F207提供了豐富的接口,支持2路CAN 2.0協(xié)議的CANBUS接口,3路USART接口,2路UART接口,6路定時(shí)器,FSMC+SPI接口(16BITFSMc+SPI)用于接入LCD觸摸屏模塊,支持2種調試接口:串行接口和JTAG調試接口。
2.2 CANBUS接口單元
由于STM32F207內置有bxCAN控制器,該控制器是一種在標準CAN總線(xiàn)基礎上擴展的總線(xiàn)接口,支持CAN總線(xiàn)協(xié)議2.0 A和2.0 B。能以最小的CPU負荷來(lái)高效處理收到的大量報文。它也支持報文發(fā)送的優(yōu)先級要求(優(yōu)先級特性可軟件配置)。為了滿(mǎn)足CAN總線(xiàn)協(xié)議中的標識符硬件過(guò)濾需求,bxCAN控制器提供了位寬可變的、可配置的過(guò)濾器組,用來(lái)完成只接收軟件需要的報文功能。CAN接口電路選擇SN65HVD230CANBUS收發(fā)器。SN65HVD230是一種專(zhuān)用于帶CAN控制器設備的CANBUS收發(fā)器,可應用于ISO 11898標準的CANBUS串行通信的物理層中。SN65HVD230CAN BUS收發(fā)器可以向總線(xiàn)和CAN控制器提供不同的數據傳輸速度,最高速度為1 Mb/S。
2.3 MODBUS接口單元
MODBUS接口單元使用RS 485串行接口,接口芯片為MAX485。MAX485是用于RS 485與RS 422通信的低功耗收發(fā)器,每個(gè)器件中都具有一個(gè)驅動(dòng)器和一個(gè)接收器。驅動(dòng)器具有短路電流限制,并可以通過(guò)熱關(guān)斷電路將驅動(dòng)器輸出置為高阻狀態(tài),防止過(guò)度的功率損耗。接收器輸入具有失效保護特性,當輸入開(kāi)路時(shí),可以確保邏輯高電平輸出。MAX485的驅動(dòng)器擺率不受限制,可以實(shí)現最高2.5 Mb/s的傳輸速率。
3 軟件設計
3.1 CANBUS的應用層定義
本文設計的現場(chǎng)總線(xiàn)通信網(wǎng)關(guān)定義了CANBUS的應用層協(xié)議。
(1)規定網(wǎng)關(guān)收到的CAN數據幀中的第1個(gè)字節為CANBUS的功能碼,該功能碼為0x0F時(shí),與MODBUS進(jìn)行通信。
(2)規定CAN數據幀中的第2個(gè)字節的高4位為該幀的標號位,低4位為該幀中包含的數據字節數,該字節數為MODBUS協(xié)議中數據域的字節數。
(3)規定CAN數據幀中的第3,第4個(gè)字節分別為MODBUS的地址碼和功能碼。
(4)規定從CAN數據幀的第5個(gè)字節開(kāi)始為MODBUS的數據域,由于MODBUS的數據域一般為4個(gè)字節,此時(shí)CAN數據幀的數據段恰好為8個(gè)字節。
(5)當MODBUS數據長(cháng)度大于4字節時(shí),需要從2個(gè)或者多個(gè)連續發(fā)送的標號相同的CAN數據幀中獲得完整的MODBUS數據。當獲得的數據位數與幀中給出的位數不同時(shí)丟棄該幀。
定義一個(gè)數據緩沖區A,一個(gè)數據緩沖區B,分別用于臨時(shí)存放CANBUS到MODBUS的數據和MODBUS到CANBUS的數據。
3.2 CANBUS的收發(fā)程序設計
該部分包括CAN初始化,CAN發(fā)送程序,CAN接收程序。CAN的初始化包括以下內容:配置嵌套向量中斷控制器(NVIC),設置CAN的Rx0和TX中斷的響應優(yōu)先級和搶占優(yōu)先級,RX0和TX中斷使能。根據硬件連接配置GPIO,本文中RX使用GPIOD0,TX使用GPIOD2。設置波特率及過(guò)濾器配置。
CANBUS數據的接收是通過(guò)接收郵箱(FIFO)中斷進(jìn)行處理的,當FIFO接收到一個(gè)新的報文時(shí),過(guò)濾器根據預設的值判斷報文的標示符是否匹配,若不匹配,直接丟棄該報文;若該報文的標示符與預設值匹配則中斷處理程序將接收郵箱中的數據拷貝到數據緩沖區A,該數據將作為MODBUS主站發(fā)往MODBUS從站的數據。CANBUS數據接收程序流程如圖5所示。
CANBUS的數據發(fā)送同樣使用郵箱機制,網(wǎng)關(guān)從數據緩沖區B中獲得從MODBUS接收的數據,設置標示符和數據長(cháng)度,選擇一個(gè)發(fā)送郵箱,使能發(fā)送郵箱空中斷。因此當該郵箱為空時(shí)產(chǎn)生一個(gè)中斷,中斷處理程序將數據從緩沖區拷貝到發(fā)送郵箱,該郵箱狀態(tài)變?yōu)轭A定發(fā)送狀態(tài)。
當CAN總線(xiàn)進(jìn)入空閑狀態(tài),預定發(fā)送郵箱中的報文就馬上被發(fā)送,進(jìn)入發(fā)送狀態(tài)。郵箱中的報文被成功發(fā)送后,它馬上變?yōu)榭锗]箱。CAN BUS數據發(fā)送程序如圖6所示。
通信相關(guān)文章:通信原理
評論