胡佳寧++林福凱++劉鳳++王洪濤++李軍+++王孝禹
摘要:為滿足偏遠地區(qū)氣象數(shù)據(jù)傳輸系統(tǒng)的實時性要求,設(shè)計了基于C8051F020單片機的北斗氣象數(shù)據(jù)傳輸系統(tǒng)。該系統(tǒng)中不僅需要與自動氣象站進行通信,還要向北斗模塊實時傳輸氣象數(shù)據(jù),而傳統(tǒng)的51單片機只有一個異步串行通信接口,為滿足系統(tǒng)要求,利用C8051F020單片機自帶兩個串行口實現(xiàn)同時與北斗模塊和自動氣象站通信的功能需求。考慮北斗衛(wèi)星傳輸網(wǎng)絡(luò)在線狀況、數(shù)據(jù)丟包、亂序等情況,從數(shù)據(jù)傳輸實時檢測機制和北斗模塊的回執(zhí)機制出發(fā),設(shè)計了一種基于北斗通信的氣象數(shù)據(jù)實時傳輸控制軟件,以保障通信系統(tǒng)實時、穩(wěn)定、可靠地運行。
關(guān)鍵詞:北斗;氣象數(shù)據(jù)傳輸;C8051F020
中圖分類號:TP391 文獻標(biāo)識碼:A 文章編號:1009-3044(2015)33-0057-03
The Design of Meteorological Data Transmission System Based on C8051F020
HU Jia-ning1, LIN Fu-kai2, LIU Feng3, WANG Hong-tao3, LI Jun3,WANG Xiao-yu2
(1. No. 92538 Unit of PLA, Dalian 116041, China; 2. No. 65521 Unit of PLA, Liaoyang 111000, China; 3. PLA University of Science and Technology,Nanjing 211101, China)
Abstract:In order to satisfy the demand of real-time in meteorological data transmission system based on beidou navigation satellite system, the system is designed based on C8051F020. The meteorological data transmission system is not only to communicate with automated weather stations,but also transfer meteorological data. The MCU-51 has only one UART, C8051F020s UARTs are suggested to satisfy the demonds. Considering the state of online of beidou networks,data packet loss,out-of-order data,a software with realtime data transmission detection is given to making meteorological data transmission system run steady.
Key words:Beidou Navigation Satellite System; meteorological data transmission; C8051F020
隨著自動氣象站的發(fā)展,對氣象數(shù)據(jù)傳輸方式的要求越來越高,尤其在未實現(xiàn)有線通信和無線手機信號覆蓋的戈壁、沙漠、高山、海洋等偏遠地區(qū),這些偏遠地區(qū)的數(shù)據(jù)通信方式基本只能選擇衛(wèi)星通信方式[1]?;谛l(wèi)星通信的VSAT衛(wèi)星通信站不受時域和地域的限制[2-5],但其設(shè)備復(fù)雜、設(shè)備價格昂貴、需要的供電功耗很大,不利于野外快速架設(shè)。隨著北斗衛(wèi)星通信系統(tǒng)的逐步完善,該系統(tǒng)已具備在中國及其周邊地區(qū)開展定位、數(shù)字報文通信、精確授時等服務(wù)功能,使得在偏遠地區(qū)大量布設(shè)基于北斗衛(wèi)星通信的無人值守氣象站成為可能[6-10]。本文設(shè)計的氣象數(shù)據(jù)傳輸系統(tǒng)以C8051F020單片機為主控制芯片,以單片機自帶UART口為通信接口,系統(tǒng)實現(xiàn)定位信息、氣象要素傳輸功能,為現(xiàn)有偏遠地區(qū)氣象站加裝北斗通信模塊以實現(xiàn)氣象數(shù)據(jù)實時傳輸提供參考思路。
1 系統(tǒng)架構(gòu)
基于北斗的氣象數(shù)據(jù)傳輸系統(tǒng)主要是利用北斗的短信功能,即“用戶與用戶”和“用戶與中心控制系統(tǒng)”間的雙向簡短數(shù)字報文通信功能。加裝了北斗通信終端的無人氣象站將傳感器獲取的各種氣象觀測量進行整合處理,北斗傳輸終端通過北斗通信網(wǎng)絡(luò)將數(shù)據(jù)傳輸?shù)綒庀髷?shù)據(jù)分析中心或并入全國氣象信息網(wǎng)絡(luò)。在氣象數(shù)據(jù)分析中心,北斗中心管理型用戶機將接收到各個氣象站點傳送來的數(shù)據(jù),解析后送給計算機終端進行分析處理及顯示。加裝北斗的數(shù)據(jù)采集器通信系統(tǒng)框圖如圖1所示,包括氣象數(shù)據(jù)采集和氣象數(shù)據(jù)傳輸兩部分,數(shù)據(jù)采集部的主要功能是通過各種傳感器采集氣象觀測量并通過串口傳輸至單片機,數(shù)據(jù)傳輸部分則負責(zé)將氣象觀測量整合打包并通過北斗模塊進行傳輸。本文重點對數(shù)據(jù)傳輸系統(tǒng)進行設(shè)計,包括氣象數(shù)據(jù)采集接口和數(shù)據(jù)傳輸接口兩部分,數(shù)據(jù)采集接口主要負責(zé)接收氣象儀采集的分鐘和整點數(shù)據(jù),數(shù)據(jù)傳輸接口主要負責(zé)將數(shù)據(jù)進行整合和傳輸,單片機作為數(shù)據(jù)傳輸系統(tǒng)的控制核心,控制氣象數(shù)據(jù)的接收和傳輸,通過串口0實現(xiàn)氣象數(shù)據(jù)的接收,通過串口1實現(xiàn)氣象數(shù)據(jù)的傳輸,為更好地為后期的通信設(shè)備維修與維護提供方便,同時也為通信系統(tǒng)調(diào)試方便,系統(tǒng)設(shè)置各種狀態(tài)指示燈以提示判斷當(dāng)前的錯誤提高通信效率。
2 硬件實現(xiàn)
C8051F020單片機是系統(tǒng)的重要組成部分,該控制器具有高速、流水線結(jié)構(gòu),內(nèi)用2.7V-3.6V的工作電壓,包括5個16位的計數(shù)器/定時器、兩個全雙工UART、256 字節(jié)內(nèi)部RAM、128字節(jié)特殊功能寄存器(SFR)地址空間及8/4個字節(jié)寬的I/O端口,可工作在-45℃-+85℃的工作溫度環(huán)境中[11]。而北斗模塊主要采用北斗一代一體化小型終端,具有防水、抗腐蝕、抗鹽霧強的特點,在海洋漁業(yè)的監(jiān)控指揮管理、水文氣象監(jiān)測傳輸、地質(zhì)災(zāi)害監(jiān)控傳輸?shù)让裼妙I(lǐng)域發(fā)揮著重要作用[12.13]。本設(shè)計選用廣嘉公司基于自主研發(fā)的北斗一代射頻芯片和基帶芯片研制而成的模塊,主要由低噪聲放大器、高功率放大器、射頻芯片和基帶芯片四部分組成[14],可滿足用戶在陸地和海上對衛(wèi)星導(dǎo)航定位和報文通信的要求。該模塊每發(fā)出一條通信消息后都將在一定時間范圍內(nèi)應(yīng)收到接收回執(zhí)以防止通信系統(tǒng)進入死鎖或阻塞狀態(tài),以自檢通信命令為例,每發(fā)出自檢通信命令后,北斗模塊都將收到包括IC卡狀態(tài)、硬件狀態(tài)、電池電量、入站狀態(tài)、功率狀態(tài)的通信回執(zhí),為檢測北斗衛(wèi)星通信網(wǎng)絡(luò)狀況提供基礎(chǔ)數(shù)據(jù)。另外,該模塊還提供標(biāo)準(zhǔn)RS-232C接口,能方便與單片機串行口連接。
C8051F020內(nèi)部有兩個增強型全雙工UART,兩個串行口都完全用硬件實現(xiàn),都能向CPU申請中斷,因此需要很少的CPU干預(yù)。且兩個串行口不“共享”定時器、中斷或端口I/O等資源,所以可以使用任何一個或全部同時使用。其中UART0 是一個具有幀錯誤檢測和地址識別硬件的增強型串行口,對串口的控制和訪問是通過特殊功能寄存器即串行控制寄存器(SCON0)和串行數(shù)據(jù)緩沖器(SBUF0)來實現(xiàn)的。按照北斗氣象數(shù)據(jù)傳輸系統(tǒng)功能需求,所設(shè)計的傳輸系統(tǒng)需要與氣象儀和北斗模塊進行串行通信,由于目前大部分的自動氣象站都具有串行數(shù)據(jù)輸出端口[15],只是在跳線、接口上存在差異,而北斗模塊也提供RS-232C接口,因此單片機與氣象儀和北斗之間的串行通信硬件設(shè)計簡單,直接將經(jīng)過轉(zhuǎn)接/跳線的氣息儀三線串口與單片機的UART0連接,北斗的三線串口與單片機的UART1連接。
3 軟件設(shè)計
軟件設(shè)計部分包括接收氣象數(shù)據(jù)和北斗轉(zhuǎn)發(fā)數(shù)據(jù)兩部分,程序主要采用查詢方式實現(xiàn),主要包括時鐘初始化、I/O口配置、串口初始化、接收氣象數(shù)據(jù)和北斗轉(zhuǎn)發(fā)數(shù)據(jù)程序模塊。數(shù)據(jù)傳輸實時檢測是保證北斗數(shù)據(jù)傳輸?shù)暮诵膬?nèi)容,也是數(shù)據(jù)傳輸實時性和及時性最根本的保證,因此軟件設(shè)計部分還考慮到通信實時性要求,建立數(shù)據(jù)傳輸實時檢測機制,包括網(wǎng)絡(luò)參數(shù)獲取、回執(zhí)機制、超時機制、數(shù)據(jù)重傳機制和校驗機制,以保障北斗轉(zhuǎn)發(fā)數(shù)據(jù)的正確性。
3.1 初始化
初始化程序主要是對C8051F020進行I/O配置和時鐘振蕩頻率配置兩部分。C8051F020有一個內(nèi)部振蕩器和一個外部振蕩器驅(qū)動電路,每個驅(qū)動電路都能產(chǎn)生系統(tǒng)時鐘。本設(shè)計中在XTAL1/XTAL2 引腳外接一個外部諧振器、并行方式的晶體,由于復(fù)位后從內(nèi)部振蕩器啟動,必須禁止內(nèi)部振蕩器,并在振蕩器控制寄存器(OSCICN)配置其振蕩頻C8051F020的數(shù)字交叉開關(guān)可以將內(nèi)部的系統(tǒng)資源映射到端口I/O引腳,通過設(shè)置交叉開關(guān)控制寄存器。通過配置XBR0和XBR2兩個寄存器將內(nèi)部資源UART0和UART1配置到相應(yīng)I/O引腳上,由于每個端口引腳的輸出方式都可被配置為漏極開路或推挽方式,可通過配置P0MDOUT寄存器進行完成輸出方式設(shè)定。具體的配置可參考C8051F020的數(shù)據(jù)手冊。
3.2 氣象數(shù)據(jù)接收程序
氣象數(shù)據(jù)接收程序流程圖如圖2(a)所示。完成串行初始化配置后,使能串口接收準(zhǔn)備接收氣象儀發(fā)送的數(shù)據(jù),交叉開關(guān)配置的氣象儀接收數(shù)據(jù)引腳P0.0上將出現(xiàn)串口接收數(shù)據(jù),每接收一個數(shù)據(jù),RI0都由低電平變成高電平等待用戶處理數(shù)據(jù),直至接收到數(shù)據(jù)的結(jié)束符。接收的氣象數(shù)據(jù)分為兩類,一個是整點數(shù)據(jù)一個是分鐘數(shù)據(jù),接收完的數(shù)據(jù)必須要設(shè)置相應(yīng)的標(biāo)志以方便數(shù)據(jù)處理。
3.3 北斗轉(zhuǎn)發(fā)氣象數(shù)據(jù)程序
如圖2(b)所示,當(dāng)接收完氣象儀發(fā)送的數(shù)據(jù),北斗主控制模塊首先發(fā)送自檢狀況命令給北斗接收終端模塊,獲取北斗衛(wèi)星網(wǎng)絡(luò)參數(shù),包括在線狀況、信號強弱等。主控制模塊根據(jù)當(dāng)時所獲取的網(wǎng)絡(luò)參數(shù)來決定是否發(fā)送數(shù)據(jù)。如果信道通暢,則及時發(fā)送數(shù)據(jù),否則進入數(shù)據(jù)等候重發(fā)隊列,并設(shè)置網(wǎng)絡(luò)網(wǎng)絡(luò)故障指示燈以提示用戶進行網(wǎng)絡(luò)檢查,采取重啟、調(diào)整北斗天線方向等操作,重新檢測網(wǎng)絡(luò)等待網(wǎng)絡(luò)良好后后重新傳輸。另外,考慮部分氣象采集器捕獲的氣象數(shù)據(jù)可能沒有經(jīng)緯度、時間等信息,在傳輸數(shù)據(jù)之前,北斗主控制模塊還將發(fā)出定位、獲取時間的命令,根據(jù)獲取的回執(zhí)提取相應(yīng)的定位和時間信息與氣象數(shù)據(jù)整合成完整的數(shù)據(jù)幀,網(wǎng)絡(luò)參數(shù)獲取參數(shù)配置和定位信息獲取命令可參見北斗模塊的用戶手冊。
數(shù)據(jù)通過北斗模塊傳輸出去后,受遇到網(wǎng)絡(luò)信號突然變化、數(shù)據(jù)丟包亂序、數(shù)據(jù)收集中心日常維護或者其主機運行速度變慢而未及時響應(yīng)數(shù)據(jù)等多種因素的影響,數(shù)據(jù)都不可能傳輸至中心站造成數(shù)據(jù)丟失。因此,需要在北斗主控制模塊和數(shù)據(jù)收集中心站之間建立一種數(shù)據(jù)傳輸握手確認協(xié)議,即每幀數(shù)據(jù)/命令發(fā)送出去后,由主控制模塊都將讀取北斗返回的通信回執(zhí),判斷通信是否成功,如果成功指示燈正常,否則指示燈示警提醒用戶需要重發(fā)或者丟棄該幀數(shù)據(jù)。需要重新發(fā)送數(shù)據(jù)時,需要記錄需要重傳的數(shù)據(jù),將加入到數(shù)據(jù)重傳隊列,并開啟重傳定時器。當(dāng)重傳定時器的時間片到達時,則首先獲取網(wǎng)絡(luò)參數(shù),若信道通暢,發(fā)送數(shù)據(jù)后,采集核心模塊與中心占進行握手確認。如此循環(huán),直至數(shù)據(jù)全部傳輸完畢。
4 系統(tǒng)測試與分析
為驗證本數(shù)據(jù)傳輸系統(tǒng)的可靠性,進行了20組基于北斗模塊的通信實驗,以PC串行終端模擬氣象儀以不同的波特率、不同的數(shù)據(jù)格式、不同的發(fā)送頻率進行測試,北斗通信發(fā)送端采用一代一體化小型終端,接收端采用手持機,將兩種通信設(shè)備在距離3公里的實驗室進行了測試。實驗表明,在通信速率正常的情況下(1次/1分鐘),通信成功率率為98%,在北斗衛(wèi)星通信頻度未到、信號強度弱時也能及時進行故障提示。
5 結(jié)束語
本文介紹了基于C8051F020的氣象數(shù)據(jù)通信端口硬件電路設(shè)計和軟件設(shè)計,利用單片機自帶的兩個串行口較好的解決傳統(tǒng)基于51單片機的氣象數(shù)據(jù)通信系統(tǒng)串行口不夠用的問題,并充分利用北斗通信模塊已有的回執(zhí)機制和軟件獲取網(wǎng)絡(luò)通信狀態(tài)確保數(shù)據(jù)傳輸?shù)膶崟r性,為現(xiàn)有偏遠地區(qū)無人氣象站加裝北斗通信模塊提供參考思路。
參考文獻:
[1] 張永恒,張建忠, 薛建軍, 等. 論重大突發(fā)事件應(yīng)急決策氣象服務(wù)[J]. 防災(zāi)科技學(xué)院學(xué)報,2015,17(2):82-90.
[2] 劉春明, 張少剛,張少博. 極端環(huán)境下自動氣象站數(shù)據(jù)遠程傳輸方案設(shè)計[J].氣象科技,2009,37(4): 469-471.
[3] 趙明,張小麗,劉佳,等.VSAT衛(wèi)星通訊在氣象應(yīng)急服務(wù)系統(tǒng)中的應(yīng)用[J].氣象與環(huán)境科學(xué),2010,(9:213-217.
[4] 費全海.衛(wèi)星通信在青海氣象觀測數(shù)據(jù)傳輸中的應(yīng)用[J].青??萍迹?011(4):80-83.
[5] 祝龍雙,施永新.衛(wèi)星寬帶在應(yīng)急通信和災(zāi)害備份中的應(yīng)用[J].衛(wèi)星與網(wǎng)絡(luò),2008(7):28-33.
[6] 姚作新. 基于北斗衛(wèi)星短信通信方式的無人值守自動氣象站網(wǎng)[J].氣象科技,2012,40(3):342-346.
[7] 張尚悅,郝立杰,劉曉光,等. 基于“北斗”信道的氣象傳真圖傳送研究[J].航海技術(shù),2012(1):99-105
[8] 甘志強,陸土金,李大君,等. 北斗衛(wèi)星通信在南海海洋氣象觀中的應(yīng)用[J].氣象水文海洋儀器, 2015(1):65-68.
[9] 毛炳文. 基于北斗衛(wèi)星導(dǎo)航定位系統(tǒng)的氣象水文信息系統(tǒng)[J].科學(xué)時代,2013(6):89-91.
[10] 張繼光, 羅林艷, 高爐東. 北斗衛(wèi)星通信在省級氣象數(shù)據(jù)收集中的應(yīng)用[J].安徽農(nóng)業(yè)科學(xué),2015(11):45-48.
[11] C8051f020數(shù)據(jù)手冊[E].新華龍電子有限公司.
[12] 陳剛,黃宏智.遙測自動氣象站及人工EN風(fēng)數(shù)據(jù)的遠距離傳輸[J].氣象水文海洋儀器,2011(2):74-76.
[13] 蘇禹賓, 譚龍. 自動氣象站的實時數(shù)據(jù)傳輸控制策略[J].氣象水文海洋儀器,2009(3):55-57.
[14] 北斗模塊數(shù)據(jù)手冊[Z].北京廣嘉公司.
[15] 周曉倩,馬孝義,陳磊,等.一種氣象數(shù)據(jù)監(jiān)測系統(tǒng)的設(shè)計[J].電子技術(shù)應(yīng)用與設(shè)計,2014,40(5):135-139.