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