何敬上,何劍鋒,3,袁兆林,3,汪雪元,3,陽 深
(1.江西省放射性地學(xué)大數(shù)據(jù)技術(shù)工程實(shí)驗(yàn)室,江西南昌 330013;2.東華理工大學(xué)信息工程學(xué)院,江西南昌 330013;3.江西省核地學(xué)數(shù)據(jù)科學(xué)與系統(tǒng)工程技術(shù)研究中心,江西南昌 330013)
隨著核科學(xué)技術(shù)的快速發(fā)展,核輻射防護(hù)和安全問題深受民眾關(guān)注[1]。但現(xiàn)有的輻射監(jiān)測儀集成平臺(tái)缺乏,采集的氡、γ等輻射數(shù)據(jù)格式不同;并且大多核探測器只具有串行接口,不能夠接入網(wǎng)絡(luò),傳輸距離及速率還不能滿足核儀器設(shè)備的要求。針對以上問題,本文設(shè)計(jì)并實(shí)現(xiàn)多串口轉(zhuǎn)以太網(wǎng)輻射數(shù)據(jù)傳輸系統(tǒng);由于以太網(wǎng)能全雙工通信[2],因此也實(shí)現(xiàn)了對γ劑量儀、氡采集儀命令傳輸,提高系統(tǒng)的及時(shí)性和遠(yuǎn)程可控性。
系統(tǒng)的整體結(jié)構(gòu)如圖1所示。當(dāng)核探測器采集到輻射數(shù)據(jù)時(shí),立即通過串口傳輸至隊(duì)列緩沖區(qū),當(dāng)單個(gè)周期數(shù)據(jù)傳輸結(jié)束時(shí),STM32F407立即讀取暫存在緩沖區(qū)中的數(shù)據(jù)。對于多個(gè)串口緩沖區(qū)讀取數(shù)據(jù)采用輪詢的方法,且輪詢的時(shí)間要遠(yuǎn)小于采集儀傳輸數(shù)據(jù)的周期。為了能夠區(qū)分?jǐn)?shù)據(jù)源,首先對讀取出的輻射數(shù)據(jù)進(jìn)行統(tǒng)一的串口幀格式封裝,然后將封裝好的串口幀作為以太網(wǎng)用戶層數(shù)據(jù),逐層封裝通過網(wǎng)絡(luò)將數(shù)據(jù)傳輸至監(jiān)控中心。
圖1 系統(tǒng)結(jié)構(gòu)圖
系統(tǒng)主要實(shí)現(xiàn)多串口與以太網(wǎng)輻射數(shù)據(jù)的交換。主控芯片采用STM32F407,主頻可達(dá)168MHz[3]。運(yùn)用其中的兩路USART通道,分別與兩個(gè)MAX3232串口芯片相連??刂破髋c以太網(wǎng)芯片間采用RMII模式相連,支持IEEE802.3規(guī)范的所有特性。系統(tǒng)硬件結(jié)構(gòu)框圖如圖2所示。
圖2 系統(tǒng)硬件結(jié)構(gòu)框圖
串行接口比較簡單,性能良好,現(xiàn)今核探測器上均支持RS232標(biāo)準(zhǔn)通信[4]。采用RS232協(xié)議接收核探測器采集的數(shù)據(jù),并將數(shù)據(jù)形式轉(zhuǎn)化成TTL電平傳至控制器。硬件由9針D型插頭和MAX3232芯片構(gòu)成,其原理圖如圖3所示。
圖3 MAX3232串口原理圖
以太網(wǎng)芯片選擇SMSC的10/100M的物理層收發(fā)芯片LAN8720A。該芯片保持IEEE802.3規(guī)范標(biāo)準(zhǔn),支持 RMII模式連接[5]??梢酝瑫r(shí)實(shí)現(xiàn)發(fā)送和接收,本文配置100M的速率。網(wǎng)口主要由物理層接口(PHY)與MAC控制器構(gòu)成[6]。STM32F407內(nèi)部包含了以太網(wǎng)MAC控制,選擇LAN8720A作為物理層芯片,使用RMII模式與STM32F407相連,具體原理圖見圖4,左側(cè)為LAN8720A芯片,右側(cè)為RJ45網(wǎng)口。
圖4 網(wǎng)口原理圖
本系統(tǒng)的軟件設(shè)計(jì)主要包括基于多串口輻射數(shù)據(jù)采集和網(wǎng)絡(luò)化傳輸程序。程序在KEIL Uvision5下編譯調(diào)試。
系統(tǒng)軟件架構(gòu)如圖5所示。流程如下,兩路的串口分別接收輻射數(shù)據(jù),數(shù)據(jù)會(huì)首先暫存到隊(duì)列緩沖區(qū)中,待本周期數(shù)據(jù)傳輸完畢,再全部讀取出隊(duì)列緩沖區(qū)中的數(shù)據(jù),隨后對輻射數(shù)據(jù)進(jìn)行串口標(biāo)識(shí)封裝,將標(biāo)識(shí)好的串口數(shù)據(jù)作為TCP/IP應(yīng)用層數(shù)據(jù),逐層封裝直至通過網(wǎng)口傳輸出去。
圖5 多串口轉(zhuǎn)網(wǎng)口系統(tǒng)軟件整體架構(gòu)
LwIP是Adam Dunkels等開發(fā)的適用于嵌入式網(wǎng)絡(luò)的輕型TCP/IP協(xié)議棧。其具有開源、代碼量少、占用內(nèi)存較小、支持較全面的TCP/IP協(xié)議等優(yōu)點(diǎn),LwIP適用于嵌入式系統(tǒng)中[7-8]。將協(xié)議棧中每個(gè)協(xié)議作為單個(gè)進(jìn)程,并且指定進(jìn)程間的通信點(diǎn)。該通信方式具有占用系統(tǒng)資源較少、結(jié)構(gòu)清晰等優(yōu)點(diǎn),代碼易懂,也容易調(diào)試[8]。移植并優(yōu)化LwIP協(xié)議棧到STM32F407中。
3.2.1 基本初始化
通電后,對LwIP、系統(tǒng)時(shí)鐘、基本定時(shí)器、緩沖區(qū)、GPIO初始化操作。
3.2.2 串口配置
在STM32固件庫中,USART_InitTypeDef中包含了串口的字長、波特率、奇偶校驗(yàn)位、停止位等屬性信息。配置該結(jié)構(gòu)體,調(diào)用USART_Init函數(shù)后串口屬性配置生效。
3.2.3 UDP實(shí)現(xiàn)數(shù)據(jù)傳輸
在LwIP中,udp_pcb稱為UDP控制塊,包含以太網(wǎng)各種重要屬性,例如如本地端口號(hào)、目的端口號(hào)、IP地址、網(wǎng)關(guān)、子網(wǎng)掩碼等。創(chuàng)建好UDP控制塊之后,調(diào)用udp_bind用于給UDP控制塊綁定本地IP和端口,使udp數(shù)據(jù)單元屬性生效。同時(shí)設(shè)置基本定時(shí)器用于LwIP_Periodic_Handle,用于以太網(wǎng)讀寫超時(shí),配置udp后,由udp_send寫封裝好的串口幀,然后發(fā)送出去。遠(yuǎn)程監(jiān)測中心對氡和γ探測器的監(jiān)測在監(jiān)聽線程udp_receive_callback中完成的,將收到的命令信息反饋至STM32F407,其根據(jù)命令要求,打開或關(guān)閉輻射檢測儀。
3.2.4 數(shù)據(jù)幀的整合
輪詢監(jiān)聽每個(gè)串口的隊(duì)列緩沖區(qū),當(dāng)存在數(shù)據(jù)時(shí)則全部讀取出該緩沖區(qū)中的數(shù)據(jù),并清空該緩沖區(qū)。設(shè)置輪詢讀取數(shù)據(jù)的時(shí)間遠(yuǎn)小于輻射檢測儀發(fā)送數(shù)據(jù)周期。為了能夠區(qū)分?jǐn)?shù)據(jù)源,制訂了統(tǒng)一的串口幀格式,將封裝好的串口幀作為以太網(wǎng)中應(yīng)用層的數(shù)據(jù),逐層封裝發(fā)送至遠(yuǎn)程監(jiān)測點(diǎn)。完整的數(shù)據(jù)封裝格式如圖6所示,其中串口號(hào)字段用來區(qū)分?jǐn)?shù)據(jù)源;幀頭幀尾作為一個(gè)串口幀的起始分界(可自定義);數(shù)據(jù)部分是來自串口的原始核輻射數(shù)據(jù)。
圖6 數(shù)據(jù)封裝完整圖
將系統(tǒng)的兩個(gè)串口通過USB轉(zhuǎn)串口線分別與電腦相連,網(wǎng)口通過網(wǎng)線與電腦的網(wǎng)口相連。系統(tǒng)程序中設(shè)置UDP端口號(hào)49153、IP地址192.168.1.122、子網(wǎng)掩碼為255.255.255.1、網(wǎng)關(guān)為192.168.1.1、本地IP地址為192.168.1.102。接著打開電腦串口調(diào)試助手,串口和網(wǎng)口分別建立好連接。
假設(shè)核輻射傳感器采集數(shù)據(jù)長度為400字節(jié),電腦通過串口1和串口2分別發(fā)送預(yù)先收集400字節(jié)的輻射數(shù)據(jù),輻射數(shù)據(jù)在多串口網(wǎng)絡(luò)化系統(tǒng)中,依次經(jīng)過隊(duì)列緩存、串口標(biāo)識(shí)封裝、網(wǎng)絡(luò)封裝,最后輻射數(shù)據(jù)通過網(wǎng)口傳輸?shù)诫娔X上位機(jī)顯示,如圖7所示。
圖7 實(shí)驗(yàn)設(shè)計(jì)圖
按照實(shí)驗(yàn)安排,實(shí)驗(yàn)結(jié)果見圖8。右上部分為網(wǎng)絡(luò)調(diào)試助手界面:左邊為電腦本地發(fā)送輻射數(shù)據(jù)的串口1(COM5),右邊為系統(tǒng)通過網(wǎng)線發(fā)送給電腦的接收數(shù)據(jù)窗口,首部0x26為串口幀起始標(biāo)志,其后面的1代表串口標(biāo)號(hào),尾部0x0b為串口幀結(jié)束標(biāo)志,其余的中間部分為原始串口輻射數(shù)據(jù)。圖片的左下部分為串口2(COM8)發(fā)送窗口。由于串口幀封裝每次增加10個(gè)字符,顯示網(wǎng)絡(luò)接收窗口為820字符。表明多串口網(wǎng)絡(luò)化輻射數(shù)據(jù)傳輸已經(jīng)成功。該系統(tǒng)可同時(shí)完成氡氣和γ濃度采集。
圖8 串口轉(zhuǎn)網(wǎng)絡(luò)數(shù)據(jù)
設(shè)置傳輸周期為500ms、100ms來模擬采集間隔。經(jīng)5 min運(yùn)行,比較串口發(fā)送字節(jié)數(shù)和網(wǎng)口接受字節(jié)數(shù)衡量系統(tǒng)性能。同時(shí)分別以串口1、2收發(fā)的傳輸方式對誤碼數(shù)對比測試。實(shí)際發(fā)送和接收字符數(shù)可讀取到,用讀取到的發(fā)送字符數(shù)除以400得發(fā)送次數(shù),理論接收字符數(shù)等于發(fā)送字符數(shù)加上10倍的發(fā)送次數(shù),通過與實(shí)際的接收字符數(shù)來算誤碼數(shù)。得出結(jié)果如表1所示。
表1 傳輸方式對比測試圖
由表1測試可知,在同樣的條件下:以太網(wǎng)傳輸速率是串口14.03倍,以太網(wǎng)在傳輸大量數(shù)據(jù)的情形下占有優(yōu)勢;由誤碼數(shù)統(tǒng)計(jì)結(jié)果得,以太網(wǎng)傳輸更加可靠。圖9、圖10為兩張測試?yán)龍D,以太網(wǎng)在發(fā)送間隔為100 ms無誤碼(圖9),串口2在發(fā)送間隔100 ms誤碼為2(圖10)。
圖9 串口轉(zhuǎn)網(wǎng)絡(luò)數(shù)據(jù)傳輸
圖10 串口2收發(fā)數(shù)據(jù)傳輸
傳統(tǒng)核輻射探測儀存在輻射探測不全面、傳輸距離受限制、不能夠接入網(wǎng)絡(luò)、傳輸速率和可靠性較差等問題。本文研究了多串口網(wǎng)絡(luò)化用于輻射數(shù)據(jù)采集與傳輸,該方法具體內(nèi)容如下:通過為每個(gè)串口設(shè)計(jì)隊(duì)列緩沖區(qū),并同時(shí)采集與傳輸兩種輻射數(shù)據(jù),實(shí)現(xiàn)統(tǒng)一封裝數(shù)據(jù)格式,監(jiān)測體系更加健全;通過將多個(gè)串口數(shù)據(jù)轉(zhuǎn)為以太網(wǎng)傳輸,解決了傳統(tǒng)串口接入以太網(wǎng)的需求,使得多種輻射數(shù)據(jù)能夠更快、更可靠的傳輸?shù)降谋O(jiān)測中心,特別是傳輸大量數(shù)據(jù)方面更具有優(yōu)勢。實(shí)驗(yàn)結(jié)果證明,多串口網(wǎng)絡(luò)化異構(gòu)輻射數(shù)據(jù)采集與實(shí)時(shí)傳輸系統(tǒng)達(dá)到了設(shè)計(jì)的要求。