胡佳宁++林福凯++刘凤++王洪涛++李军+++王孝禹
摘要:为满足偏远地区气象数据传输系统的实时性要求,设计了基于C8051F020单片机的北斗气象数据传输系统。该系统中不仅需要与自动气象站进行通信,还要向北斗模块实时传输气象数据,而传统的51单片机只有一个异步串行通信接口,为满足系统要求,利用C8051F020单片机自带两个串行口实现同时与北斗模块和自动气象站通信的功能需求。考虑北斗卫星传输网络在线状况、数据丢包、乱序等情况,从数据传输实时检测机制和北斗模块的回执机制出发,设计了一种基于北斗通信的气象数据实时传输控制软件,以保障通信系统实时、稳定、可靠地运行。
关键词:北斗;气象数据传输;C8051F020
中图分类号:TP391 文献标识码: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
随着自动气象站的发展,对气象数据传输方式的要求越来越高,尤其在未实现有线通信和无线手机信号覆盖的戈壁、沙漠、高山、海洋等偏远地区,这些偏远地区的数据通信方式基本只能选择卫星通信方式[1]。基于卫星通信的VSAT卫星通信站不受时域和地域的限制[2-5],但其设备复杂、设备价格昂贵、需要的供电功耗很大,不利于野外快速架设。随着北斗卫星通信系统的逐步完善,该系统已具备在中国及其周边地区开展定位、数字报文通信、精确授时等服务功能,使得在偏远地区大量布设基于北斗卫星通信的无人值守气象站成为可能[6-10]。本文设计的气象数据传输系统以C8051F020单片机为主控制芯片,以单片机自带UART口为通信接口,系统实现定位信息、气象要素传输功能,为现有偏远地区气象站加装北斗通信模块以实现气象数据实时传输提供参考思路。
1 系统架构
基于北斗的气象数据传输系统主要是利用北斗的短信功能,即“用户与用户”和“用户与中心控制系统”间的双向简短数字报文通信功能。加装了北斗通信终端的无人气象站将传感器获取的各种气象观测量进行整合处理,北斗传输终端通过北斗通信网络将数据传输到气象数据分析中心或并入全国气象信息网络。在气象数据分析中心,北斗中心管理型用户机将接收到各个气象站点传送来的数据,解析后送给计算机终端进行分析处理及显示。加装北斗的数据采集器通信系统框图如图1所示,包括气象数据采集和气象数据传输两部分,数据采集部的主要功能是通过各种传感器采集气象观测量并通过串口传输至单片机,数据传输部分则负责将气象观测量整合打包并通过北斗模块进行传输。本文重点对数据传输系统进行设计,包括气象数据采集接口和数据传输接口两部分,数据采集接口主要负责接收气象仪采集的分钟和整点数据,数据传输接口主要负责将数据进行整合和传输,单片机作为数据传输系统的控制核心,控制气象数据的接收和传输,通过串口0实现气象数据的接收,通过串口1实现气象数据的传输,为更好地为后期的通信设备维修与维护提供方便,同时也为通信系统调试方便,系统设置各种状态指示灯以提示判断当前的错误提高通信效率。
2 硬件实现
C8051F020单片机是系统的重要组成部分,该控制器具有高速、流水线结构,内用2.7V-3.6V的工作电压,包括5个16位的计数器/定时器、两个全双工UART、256 字节内部RAM、128字节特殊功能寄存器(SFR)地址空间及8/4个字节宽的I/O端口,可工作在-45℃-+85℃的工作温度环境中[11]。而北斗模块主要采用北斗一代一体化小型终端,具有防水、抗腐蚀、抗盐雾强的特点,在海洋渔业的监控指挥管理、水文气象监测传输、地质灾害监控传输等民用领域发挥着重要作用[12.13]。本设计选用广嘉公司基于自主研发的北斗一代射频芯片和基带芯片研制而成的模块,主要由低噪声放大器、高功率放大器、射频芯片和基带芯片四部分组成[14],可满足用户在陆地和海上对卫星导航定位和报文通信的要求。该模块每发出一条通信消息后都将在一定时间范围内应收到接收回执以防止通信系统进入死锁或阻塞状态,以自检通信命令为例,每发出自检通信命令后,北斗模块都将收到包括IC卡状态、硬件状态、电池电量、入站状态、功率状态的通信回执,为检测北斗卫星通信网络状况提供基础数据。另外,该模块还提供标准RS-232C接口,能方便与单片机串行口连接。
C8051F020内部有两个增强型全双工UART,两个串行口都完全用硬件实现,都能向CPU申请中断,因此需要很少的CPU干预。且两个串行口不“共享”定时器、中断或端口I/O等资源,所以可以使用任何一个或全部同时使用。其中UART0 是一个具有帧错误检测和地址识别硬件的增强型串行口,对串口的控制和访问是通过特殊功能寄存器即串行控制寄存器(SCON0)和串行数据缓冲器(SBUF0)来实现的。按照北斗气象数据传输系统功能需求,所设计的传输系统需要与气象仪和北斗模块进行串行通信,由于目前大部分的自动气象站都具有串行数据输出端口[15],只是在跳线、接口上存在差异,而北斗模块也提供RS-232C接口,因此单片机与气象仪和北斗之间的串行通信硬件设计简单,直接将经过转接/跳线的气息仪三线串口与单片机的UART0连接,北斗的三线串口与单片机的UART1连接。
3 软件设计
软件设计部分包括接收气象数据和北斗转发数据两部分,程序主要采用查询方式实现,主要包括时钟初始化、I/O口配置、串口初始化、接收气象数据和北斗转发数据程序模块。数据传输实时检测是保证北斗数据传输的核心内容,也是数据传输实时性和及时性最根本的保证,因此软件设计部分还考虑到通信实时性要求,建立数据传输实时检测机制,包括网络参数获取、回执机制、超时机制、数据重传机制和校验机制,以保障北斗转发数据的正确性。
3.1 初始化
初始化程序主要是对C8051F020进行I/O配置和时钟振荡频率配置两部分。C8051F020有一个内部振荡器和一个外部振荡器驱动电路,每个驱动电路都能产生系统时钟。本设计中在XTAL1/XTAL2 引脚外接一个外部谐振器、并行方式的晶体,由于复位后从内部振荡器启动,必须禁止内部振荡器,并在振荡器控制寄存器(OSCICN)配置其振荡频C8051F020的数字交叉开关可以将内部的系统资源映射到端口I/O引脚,通过设置交叉开关控制寄存器。通过配置XBR0和XBR2两个寄存器将内部资源UART0和UART1配置到相应I/O引脚上,由于每个端口引脚的输出方式都可被配置为漏极开路或推挽方式,可通过配置P0MDOUT寄存器进行完成输出方式设定。具体的配置可参考C8051F020的数据手册。
3.2 气象数据接收程序
气象数据接收程序流程图如图2(a)所示。完成串行初始化配置后,使能串口接收准备接收气象仪发送的数据,交叉开关配置的气象仪接收数据引脚P0.0上将出现串口接收数据,每接收一个数据,RI0都由低电平变成高电平等待用户处理数据,直至接收到数据的结束符。接收的气象数据分为两类,一个是整点数据一个是分钟数据,接收完的数据必须要设置相应的标志以方便数据处理。
3.3 北斗转发气象数据程序
如图2(b)所示,当接收完气象仪发送的数据,北斗主控制模块首先发送自检状况命令给北斗接收终端模块,获取北斗卫星网络参数,包括在线状况、信号强弱等。主控制模块根据当时所获取的网络参数来决定是否发送数据。如果信道通畅,则及时发送数据,否则进入数据等候重发队列,并设置网络网络故障指示灯以提示用户进行网络检查,采取重启、调整北斗天线方向等操作,重新检测网络等待网络良好后后重新传输。另外,考虑部分气象采集器捕获的气象数据可能没有经纬度、时间等信息,在传输数据之前,北斗主控制模块还将发出定位、获取时间的命令,根据获取的回执提取相应的定位和时间信息与气象数据整合成完整的数据帧,网络参数获取参数配置和定位信息获取命令可参见北斗模块的用户手册。
数据通过北斗模块传输出去后,受遇到网络信号突然变化、数据丢包乱序、数据收集中心日常维护或者其主机运行速度变慢而未及时响应数据等多种因素的影响,数据都不可能传输至中心站造成数据丢失。因此,需要在北斗主控制模块和数据收集中心站之间建立一种数据传输握手确认协议,即每帧数据/命令发送出去后,由主控制模块都将读取北斗返回的通信回执,判断通信是否成功,如果成功指示灯正常,否则指示灯示警提醒用户需要重发或者丢弃该帧数据。需要重新发送数据时,需要记录需要重传的数据,将加入到数据重传队列,并开启重传定时器。当重传定时器的时间片到达时,则首先获取网络参数,若信道通畅,发送数据后,采集核心模块与中心占进行握手确认。如此循环,直至数据全部传输完毕。
4 系统测试与分析
为验证本数据传输系统的可靠性,进行了20组基于北斗模块的通信实验,以PC串行终端模拟气象仪以不同的波特率、不同的数据格式、不同的发送频率进行测试,北斗通信发送端采用一代一体化小型终端,接收端采用手持机,将两种通信设备在距离3公里的实验室进行了测试。实验表明,在通信速率正常的情况下(1次/1分钟),通信成功率率为98%,在北斗卫星通信频度未到、信号强度弱时也能及时进行故障提示。
5 结束语
本文介绍了基于C8051F020的气象数据通信端口硬件电路设计和软件设计,利用单片机自带的两个串行口较好的解决传统基于51单片机的气象数据通信系统串行口不够用的问题,并充分利用北斗通信模块已有的回执机制和软件获取网络通信状态确保数据传输的实时性,为现有偏远地区无人气象站加装北斗通信模块提供参考思路。
参考文献:
[1] 张永恒,张建忠, 薛建军, 等. 论重大突发事件应急决策气象服务[J]. 防灾科技学院学报,2015,17(2):82-90.
[2] 刘春明, 张少刚,张少博. 极端环境下自动气象站数据远程传输方案设计[J].气象科技,2009,37(4): 469-471.
[3] 赵明,张小丽,刘佳,等.VSAT卫星通讯在气象应急服务系统中的应用[J].气象与环境科学,2010,(9:213-217.
[4] 费全海.卫星通信在青海气象观测数据传输中的应用[J].青海科技,2011(4):80-83.
[5] 祝龙双,施永新.卫星宽带在应急通信和灾害备份中的应用[J].卫星与网络,2008(7):28-33.
[6] 姚作新. 基于北斗卫星短信通信方式的无人值守自动气象站网[J].气象科技,2012,40(3):342-346.
[7] 张尚悦,郝立杰,刘晓光,等. 基于“北斗”信道的气象传真图传送研究[J].航海技术,2012(1):99-105
[8] 甘志强,陆土金,李大君,等. 北斗卫星通信在南海海洋气象观中的应用[J].气象水文海洋仪器, 2015(1):65-68.
[9] 毛炳文. 基于北斗卫星导航定位系统的气象水文信息系统[J].科学时代,2013(6):89-91.
[10] 张继光, 罗林艳, 高炉东. 北斗卫星通信在省级气象数据收集中的应用[J].安徽农业科学,2015(11):45-48.
[11] C8051f020数据手册[E].新华龙电子有限公司.
[12] 陈刚,黄宏智.遥测自动气象站及人工EN风数据的远距离传输[J].气象水文海洋仪器,2011(2):74-76.
[13] 苏禹宾, 谭龙. 自动气象站的实时数据传输控制策略[J].气象水文海洋仪器,2009(3):55-57.
[14] 北斗模块数据手册[Z].北京广嘉公司.
[15] 周晓倩,马孝义,陈磊,等.一种气象数据监测系统的设计[J].电子技术应用与设计,2014,40(5):135-139.