賀春艷 ,庹先國 ,,劉 勇 ,,李懷良
(1.成都理工大學(xué) 地質(zhì)災(zāi)害防治與地質(zhì)環(huán)境保護(hù)國家重點(diǎn)實(shí)驗(yàn)室,成都 610059;2.西南科技大學(xué) 核廢物與環(huán)境安全國防重點(diǎn)學(xué)科實(shí)驗(yàn)室,綿陽 621010)
網(wǎng)絡(luò)互聯(lián)設(shè)備一直是分布式數(shù)據(jù)采集的核心構(gòu)件之一。隨著電子技術(shù)的發(fā)展,包括路由器在內(nèi)的通用網(wǎng)絡(luò)互聯(lián)設(shè)備技術(shù)已經(jīng)非常成熟,但在一些特殊應(yīng)用領(lǐng)域,如地震勘探,設(shè)計(jì)出能滿足實(shí)際需求的網(wǎng)絡(luò)設(shè)備,仍然是一項(xiàng)挑戰(zhàn)。特別是三維地震勘探中,由于以太網(wǎng)在多節(jié)點(diǎn)通信條件下實(shí)時(shí)能力較差[1],在考慮儀器體積、施工效率的基礎(chǔ)上,單一采集鏈普遍采用RS485等串行總線網(wǎng)絡(luò)[2],這與上層數(shù)據(jù)傳輸以太網(wǎng)不能直接兼容,極大降低了儀器的擴(kuò)展能力和應(yīng)用效果[3]。由于數(shù)據(jù)采集鏈與以太網(wǎng)不能直接互聯(lián)而導(dǎo)致的系統(tǒng)勘探效率低下等問題已成為嚴(yán)重制約三維分布式地震勘探廣泛應(yīng)用的技術(shù)瓶頸之一。
如圖1所示為分布式地震勘探系統(tǒng)示意圖,數(shù)據(jù)中心、同步器、控制主機(jī)、遠(yuǎn)程終端以及網(wǎng)關(guān)組成地震數(shù)據(jù)采集局域網(wǎng),各采集節(jié)點(diǎn)獲取的地震數(shù)據(jù)通過RS485總線(采集鏈)傳送到網(wǎng)關(guān)處理后,由局域網(wǎng)發(fā)送到控制主機(jī)。局域網(wǎng)硬件主要由以太網(wǎng)設(shè)備構(gòu)成,相關(guān)產(chǎn)品已經(jīng)非常成熟,限制系統(tǒng)性能的主要因素在網(wǎng)關(guān)上,需要其同時(shí)具備高速以太網(wǎng)和RS485兩種網(wǎng)絡(luò)接入能力,以及協(xié)議轉(zhuǎn)換功能[4]。目前市面上還沒有相關(guān)產(chǎn)品,參考設(shè)計(jì)也較少。因此,本文介紹一種采用DP83848和STM32等集成芯片設(shè)計(jì)的低成本高性能以太網(wǎng)—RS485網(wǎng)關(guān),應(yīng)用于三維分布式地震勘探中,可極大提高儀器擴(kuò)展能力和施工效率。
圖1 分布式地震數(shù)據(jù)采集系統(tǒng)示意圖Fig.1 Distributed seismic data acquisition system diagram
網(wǎng)關(guān)由以太網(wǎng)控制器、網(wǎng)口、RS485控制器、主控CPU、系統(tǒng)電源等模塊組成。主控CPU采用STM32F407RG,它是一款基于ARM Cortex M4內(nèi)核的高性能低功耗微控制器,運(yùn)算能力可達(dá)210 DMIPS;以太網(wǎng)控制器采用DP83848V,支持IEEE802.3全雙工流量控制以及自動(dòng)極性翻轉(zhuǎn)功能,提供10 M/100 M以太網(wǎng)收發(fā)能力,其MAC控制器集成在主控CPU中,利用MII/RMII接口與其通信,可減少電路板上連接走線,提高抗干擾能力。同時(shí),采用內(nèi)部集成網(wǎng)絡(luò)變壓器的RJ45網(wǎng)口HR911105與其配合,可最大限度提高100 M以太網(wǎng)通信的穩(wěn)定性;RS485收發(fā)器采用內(nèi)部集成了三通道隔離器、三態(tài)差分線路驅(qū)動(dòng)器、差分輸入接收機(jī)和隔離式DC/DC轉(zhuǎn)換器的單芯片ADM2582,其能提供最高16 Mb/s通信速率,滿足高速數(shù)據(jù)采集鏈的網(wǎng)絡(luò)通信需求。
如圖2所示,以太網(wǎng)收發(fā)芯片利用其RMII接口與主控CPU的MAC控制器外設(shè)連接,包括數(shù)據(jù)通信引腳 TXD [1..0]、RXD[1..0]、TX_EN、CRS_DV以及管理通信引腳MDIO、MDC。以太網(wǎng)物理收發(fā)芯片和MAC控制器時(shí)鐘均采用外部50 MHz高精度有源晶振提供。為增強(qiáng)系統(tǒng)抗干擾能力,減少PCB高頻布線長度,本設(shè)計(jì)采用帶網(wǎng)絡(luò)變壓器芯片的RJ45接口,將高速模擬差分信號(hào)線完全集成在網(wǎng)口芯片內(nèi)部,在PCB板上僅需要將以太網(wǎng)收發(fā)芯片的TD+、TD-、RD+、RD-四根高頻差分?jǐn)?shù)據(jù)引腳, 分別通過49.9 Ω精密上拉電阻與RJ45接口 (網(wǎng)口變壓器)對應(yīng)引腳連接,在實(shí)際布線過程中,盡量將這4根高頻線布設(shè)為最短等長直線,以便降低電磁干擾,提高通信質(zhì)量。RS485收發(fā)芯片的TXD、RXD引腳分別與主控CPU串口外設(shè)對應(yīng)引腳連接,同時(shí)為控制RS485通信方向,將其RE、DE引腳分別與CPU輸出口引腳連接,當(dāng)RE和DE為高電平時(shí),收發(fā)器處于發(fā)送模式。為降低RS485總線上的反射干擾,在其差分輸出引腳處接入120 Ω匹配電阻,用于吸收總線上的高頻反射,同時(shí)接入保護(hù)二極管,避免因意外高壓產(chǎn)生的危險(xiǎn)。
圖2 網(wǎng)關(guān)硬件電路Fig.2 Gateway hardware circuit
系統(tǒng)軟件按照功能可分為初始化代碼段、后臺(tái)程序代碼段、前臺(tái)程序代碼段3部分。如圖3所示為軟件運(yùn)行主流程。初始化代碼段在系統(tǒng)上電復(fù)位后只運(yùn)行一次,包括系統(tǒng)資源初始化、協(xié)議棧初始化、應(yīng)用程序初始化。其中系統(tǒng)資源初始化主要完成對系統(tǒng)時(shí)鐘、定時(shí)器、中斷向量寄存器等系統(tǒng)資源進(jìn)行配置,提供程序運(yùn)行的基本環(huán)境;在系統(tǒng)資源初始化完成后,系統(tǒng)依次進(jìn)行RS485和TCP/IP協(xié)議棧初始化;協(xié)議棧啟動(dòng)后,便可運(yùn)行RS485客戶端應(yīng)用程序和TCP/IP服務(wù)器應(yīng)用程序。整個(gè)初始化段代碼運(yùn)行完成后,便一直循環(huán)運(yùn)行后臺(tái)程序代碼段,依次實(shí)現(xiàn)對兩種協(xié)議棧和外部事件的循環(huán)處理。串口、網(wǎng)口中斷程序位于前臺(tái)程序代碼段,平時(shí)處于休眠狀態(tài),只有產(chǎn)生相應(yīng)事件后,后臺(tái)程序才進(jìn)入暫停狀態(tài),系統(tǒng)轉(zhuǎn)去執(zhí)行前臺(tái)中斷程序。
圖3 軟件運(yùn)行主流程Fig.3 Main process software running
后臺(tái)程序在運(yùn)行過程中,依次查詢是否有未處理的各種通信事件和外部事件產(chǎn)生,并根據(jù)查詢結(jié)果,執(zhí)行相應(yīng)指令。主要通信事件有:RS485幀收到、RS485幀發(fā)送、以太網(wǎng)幀收到、以太網(wǎng)幀發(fā)送、外部觸發(fā)中斷等。所有事件均在前臺(tái)中斷程序中進(jìn)行預(yù)處理并置相應(yīng)標(biāo)志位,但不做實(shí)際具體處理,而將具體事件處理過程放在后臺(tái)程序中依次查詢執(zhí)行。
TCP/IP協(xié)議棧、RS485協(xié)議棧和外部事件處理代碼段各自分配一個(gè)非固定時(shí)間片,按順序輪換執(zhí)行,其長度根據(jù)當(dāng)前協(xié)議棧所需處理事件的多少和優(yōu)先級來決定,一旦該代碼段事件處理完成,便立即進(jìn)入下一個(gè)代碼段,代碼段切換資源耗費(fèi)幾乎為零,這種“分時(shí)切換”和“前后臺(tái)程序”配合的程序運(yùn)行機(jī)制,可避免2種協(xié)議在高速運(yùn)行過程中產(chǎn)生相互干擾而導(dǎo)致的系統(tǒng)混亂問題,而且運(yùn)行效率也比較高。
在后臺(tái)程序循環(huán)中,當(dāng)查詢到有RS485事件時(shí),便進(jìn)入RS485主處理函數(shù),依次判斷“是否有幀發(fā)送請求”、“是否收到完整數(shù)據(jù)幀”、“是否幀發(fā)送完成”等標(biāo)志位,并根據(jù)判斷結(jié)果調(diào)用相應(yīng)處理程序,包括產(chǎn)生發(fā)送幀數(shù)據(jù)、幀數(shù)據(jù)解析、調(diào)用應(yīng)用程序處理、置相應(yīng)標(biāo)志位等。協(xié)議棧在運(yùn)行過程中,將需要用戶處理的數(shù)據(jù)統(tǒng)一放置在全局幀數(shù)據(jù)緩沖中,并在適當(dāng)時(shí)候調(diào)用用戶程序進(jìn)行處理,用戶將需要發(fā)送的幀數(shù)據(jù)放置回全局發(fā)送緩沖幀中,由協(xié)議棧進(jìn)行發(fā)送。如圖4所示為RS485協(xié)議棧主處理流程。
圖4 RS485協(xié)議棧主處理流程Fig.4 Main process of protocol stack
考慮數(shù)據(jù)采集節(jié)點(diǎn)CPU系統(tǒng)資源限制及總線大數(shù)據(jù)量和多種控制指令傳輸需求,各采集節(jié)點(diǎn)和網(wǎng)關(guān)之間采用面向串行通信的精簡的點(diǎn)對點(diǎn)鏈路層通信協(xié)議(PPP),如圖5所示為改進(jìn)后的PPP幀格式及應(yīng)用報(bào)文組織形式。
圖5 改進(jìn)后的PPP幀結(jié)構(gòu)及應(yīng)用報(bào)文組織形式Fig.5 PPP frame structure and application packets organization improved
改進(jìn)的幀由6部分組成:幀頭定界符(0x7E)、幀頭(目地地址、源地址)、數(shù)據(jù)協(xié)議類型、數(shù)據(jù)、校驗(yàn)、幀尾定界符(0x7E)。其中數(shù)據(jù)協(xié)議類型根據(jù)地震數(shù)據(jù)采集需求,包括動(dòng)態(tài)網(wǎng)絡(luò)配置數(shù)據(jù)報(bào)文(DNCP)和用戶網(wǎng)絡(luò)數(shù)據(jù)報(bào)文(CNDP),DNCP 報(bào)文主要包含動(dòng)態(tài)地址配置信息及網(wǎng)絡(luò)環(huán)境監(jiān)測信息,CNDP數(shù)據(jù)段又封裝了用戶實(shí)際發(fā)送的用戶數(shù)據(jù)。
由于TCP/IP是一個(gè)具有4層體系結(jié)構(gòu)模型的大型互聯(lián)網(wǎng)協(xié)議族,直接實(shí)現(xiàn)需要較多的系統(tǒng)資源開銷,且其大部分協(xié)議對本網(wǎng)關(guān)實(shí)際應(yīng)用聯(lián)系不大,可對其進(jìn)行簡化,僅保留IP/TCP/ICMP/ARP/UDP等網(wǎng)絡(luò)層和傳輸層協(xié)議[5],在保證其代碼通用性和結(jié)構(gòu)的穩(wěn)定性的同時(shí),最大限度降低了系統(tǒng)資源消耗。具體實(shí)現(xiàn)流程如圖6所示。
圖6 TCP/IP協(xié)議棧實(shí)現(xiàn)Fig.6 TCP/IP protocol stack implementation
同RS485協(xié)議棧實(shí)現(xiàn)類似,當(dāng)進(jìn)入TCP/IP主處理函數(shù)后,首先讀取以太網(wǎng)數(shù)據(jù)幀,并依次判斷“是否收到完整數(shù)據(jù)幀”、“是否定時(shí)事件到”、“是否有幀發(fā)送完成”等標(biāo)志位,并根據(jù)判斷結(jié)果,調(diào)用相應(yīng)處理程序。其中,當(dāng)收到完整的以太網(wǎng)數(shù)據(jù)包后,首先判斷其是ARP、ICMP、IP中的哪一種,如果是IP數(shù)據(jù)包,還需判斷是UDP還是TCP數(shù)據(jù)包,并再調(diào)用用戶應(yīng)用程序(服務(wù)器應(yīng)用程序)。
由分布式地震勘探應(yīng)用需求可知,各采集節(jié)點(diǎn)獲取的地震數(shù)據(jù)通過RS485總線傳輸?shù)骄W(wǎng)關(guān)后,由網(wǎng)關(guān)中的RS485協(xié)議棧接收,必須通過某種協(xié)議轉(zhuǎn)換機(jī)制,轉(zhuǎn)換成以太網(wǎng)數(shù)據(jù)幀后才能通過數(shù)據(jù)采集局域網(wǎng)傳輸?shù)奖O(jiān)控主機(jī)。在前面介紹的2個(gè)協(xié)議棧實(shí)現(xiàn)過程中,進(jìn)入各自協(xié)議棧主處理函數(shù)后都首先判斷是否有需要發(fā)送的數(shù)據(jù)幀,該幀發(fā)送需求便是另外一協(xié)議棧產(chǎn)生的需要轉(zhuǎn)換的數(shù)據(jù)包,同時(shí)在各自協(xié)議棧主處理流程最后,也都有ACK事件處理操作,也可用于完成協(xié)議棧的相互轉(zhuǎn)換功能。
網(wǎng)關(guān)在2種不同網(wǎng)絡(luò)結(jié)構(gòu)中分別充當(dāng)不同的網(wǎng)絡(luò)角色:監(jiān)控主機(jī)通過以太網(wǎng)與網(wǎng)關(guān)進(jìn)行連接,在此,網(wǎng)關(guān)作為服務(wù)器,運(yùn)行TCP/IP服務(wù)器應(yīng)用程序,而監(jiān)控主機(jī)位于客戶端,當(dāng)服務(wù)器收到監(jiān)控主機(jī)的數(shù)據(jù)訪問請求后,通過協(xié)議轉(zhuǎn)換,將以太網(wǎng)數(shù)據(jù)請求轉(zhuǎn)換成RS485協(xié)議請求,此后,網(wǎng)關(guān)便作為客戶端,將RS485請求發(fā)送到各數(shù)據(jù)采集節(jié)點(diǎn)服務(wù)器,各采集節(jié)點(diǎn)收到網(wǎng)關(guān)的數(shù)據(jù)請求后,產(chǎn)生回復(fù)數(shù)據(jù),通過RS485發(fā)送給網(wǎng)關(guān);由網(wǎng)關(guān)的RS485客戶端收到數(shù)據(jù)后,轉(zhuǎn)換成以太網(wǎng)數(shù)據(jù)包,并通過TCP/IP服務(wù)器和以太網(wǎng)返回給監(jiān)控主機(jī)。
為確定該網(wǎng)關(guān)的網(wǎng)絡(luò)通信能力,對設(shè)計(jì)的網(wǎng)關(guān)進(jìn)行實(shí)際現(xiàn)場測試,具體測試條件如下:單網(wǎng)關(guān)連接48道采集節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)內(nèi)部采樣緩存填充固定數(shù)據(jù),循環(huán)發(fā)送相同數(shù)據(jù),依次測試RS485通信速率、距離、誤碼率間的關(guān)系,具體測試數(shù)據(jù)如表1所示。
表1說明,該網(wǎng)關(guān)在外接48道采集節(jié)點(diǎn)情況下,最適合的工作速率是2.0 Mb/s,其采集鏈總長可達(dá)48×5=240 m。隨著采集節(jié)點(diǎn)距離和通信速率的增加,誤碼率急劇上升。在實(shí)際勘探過程中,當(dāng)采集節(jié)點(diǎn)AD采樣率為1 k,精度為24位時(shí),如果通信速率設(shè)置為2 Mb/s,則單網(wǎng)關(guān)可連接采集道數(shù)超過100道,基本實(shí)現(xiàn)了以太網(wǎng)和RS485采集鏈的高速數(shù)據(jù)連接。
表1 測試數(shù)據(jù)Tab.1 Test data
本文采用物理層以太網(wǎng)集成芯片DP83848和STM32微控制器,設(shè)計(jì)了一種低成本以太網(wǎng)-RS485網(wǎng)關(guān),實(shí)現(xiàn)以太網(wǎng)和RS485采集鏈的高速連接。利用“分時(shí)切換”和“前后臺(tái)程序”配合的方法,對網(wǎng)關(guān)RS485和TCP/IP協(xié)議棧進(jìn)行優(yōu)化,避免2種協(xié)議在高速運(yùn)行過程中產(chǎn)生相互干擾而導(dǎo)致的系統(tǒng)混亂,提高了運(yùn)行效率,同時(shí)也為系統(tǒng)擴(kuò)展提供了較多資源余量。測試表明,該網(wǎng)關(guān)網(wǎng)絡(luò)通信能力穩(wěn)定,單網(wǎng)關(guān)可掛接采集節(jié)點(diǎn)通道數(shù)超過100道,目前已應(yīng)用到某套試驗(yàn)樣機(jī)系統(tǒng)上。
[1] 陸其鵠,彭克中,易碧金.我國地球物理儀器的發(fā)展[J].地球物理學(xué)進(jìn)展,2007,22(4):1332-1337.
[2] 張林行,林君,陳祖斌.RS-485通信協(xié)議在分布式地震儀中的應(yīng)用[J].石油儀器,2001,15(6):32-33,38.
[3] 張林行,林君,陳祖斌.基于嵌入式以太網(wǎng)的分布式地震數(shù)據(jù)采集系統(tǒng)[J].計(jì)算機(jī)應(yīng)用,2006,26(9):2258-2260.
[4] 郭戎瀟,王洪強(qiáng),李彥.一種小型嵌入式Internet終端的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)與數(shù)字工程,2005,33(12):99-101.
[5] 黃鐘鳴,葉進(jìn),黃建華,等.獨(dú)立于操作系統(tǒng)的嵌入式TCP/IP實(shí)現(xiàn)[J].桂林電子科技大學(xué)學(xué)報(bào),2011,31(6):473-476. ■