基于嵌入式Linux的卫星气象控制与管理系统设计

2016-06-08 05:48王若珏陈苏婷
计算机应用与软件 2016年5期
关键词:气象站嵌入式北斗

王若珏 陈苏婷

(南京信息工程大学江苏省气象探测与信息处理重点实验室 江苏 南京 210044)



基于嵌入式Linux的卫星气象控制与管理系统设计

王若珏陈苏婷

(南京信息工程大学江苏省气象探测与信息处理重点实验室江苏 南京 210044)

摘要针对目前气象控制及管理平台的特点,设计基于嵌入式Linux平台的气象控制与管理系统。该系统依托北斗卫星通信实现了对各区域中各功能模块的控制操作,并采用基于Linux平台下的Qt图形用户界面开发工具设计一套操作界面,实现了对多个区域气象数据的实时采集、显示、存储等处理。通过LZW算法和固定位长算法混合编码实现自动气象站数据的无损压缩,进一步提高了对自动气象站远程管理能力和气象中心的便携性、灵活性,为建立移动气象中心提供一种思路。

关键词嵌入式系统北斗卫星LZW算法固定位长算法移动气象中心

0引言

我国是受自然灾害较为严重的国家,为提高气象服务的质量,全国大量布设自动气象站和原地面气象观测站共同组成气象观测网。但我国幅员辽阔,沙漠、山区、海岛等偏远地区电力、通信等基础设施较为薄弱。特别有些地区有线、无线通信网络还没有实现覆盖,气象数据传输问题成为布设自动气象站决定因素。随着我国自主研发的北斗卫星导航系统的发展,北斗卫星系统的短报文通信在气象数据传输领域的应用越来越广泛。它能充分利用卫星通信覆盖无盲点、全天候实时通信、数据传输成本低、可靠性和安全性高的优点[1]。然而,大多数的气象控制与管理系统都基于PC平台,体积庞大,不易携带,工作效率低。

针对上述问题,设计基于嵌入式Linux平台的气象控制与管理系统。旨在运用单个嵌入式终端远程控制并管理多个区域的自动气象站,解决整个控制管理系统便携化、小型化的问题,提供一种新型移动气象中心控制、管理系统构建的新模式。

1系统设计方案

1.1系统设计

基于嵌入式Linux平台气象控制与管理系统由嵌入式模块、卫星通信模块和数据压缩模块组成。系统框图如图1所示。嵌入式模块通过RS232串口与北斗用户机0相连,实现指令发送、数据接收、处理和管理功能;北斗用户机0与各区域所放置的北斗用户机N(N为自然数)通过北斗卫星通信,保证了气象中心与自动气象站所布区域的远程通信;数据压缩模块通过双RS232串口分别与各区域北斗用户机和区域自动气象站相连,实现气象数据的采集与压缩。系统利用各用户机的ID号不同,可实现一个嵌入式终端对全国多个已布自动气象站所在的多个区域进行控制和气象数据管理等功能。

图1 系统框图

1.2数据压缩算法模型

考虑到北斗短报文通信频度为1分钟,其电文内容单次最大字节为78.5字节[2],而自动气象站1次采集数据量为180字节左右,故接收一条完整的数据的最小周期为3分钟。为提高系统传输效率,系统需在各区域放置数据压缩模块,以提高气象数据的传输效率。

本文以一种无人值守气象站为例,自动气象站数据格式为:通信开始标志+命令+数据信息开始标记+数据内容+通信结束标志。例如:自动气象站于2014年9月9日采集的数据如下:NUISTUB 2014-09-09 13:02 258 0 201 0 258 0 13:02 313 0 217 0 13:01 0 0 244 244 13:01 234 13:01 87 87 13:02 221 9970 9974 13:01 9969 13:02 3131 79 3131 13:02 164 4 164 13:01 277 147(注:数据之间以空格作为分隔符,且数据扩大10倍)。自动气象站数据内容特点如下:数据结构“空格+小时:”和“空格+数字”(如:“ 09:”和“ 0”等)多次重复出现;数据中的数字较多,数字ASCII码值从0X30至0X39,高4位字节固定为0011。根据自动气象站数据的特点,考虑采用对连续重复出现字符串压缩率好的LZW算法和压缩率高的固定位长算法进行混合编码,从而对自动气象站数据进行无损压缩处理。

2系统模块设计

2.1卫星通信模块

本系统利用北斗卫星配合北斗用户机进行远程数据和指令传输,保证气象中心和各区域间进行数据、指令通信。卫星通信模块传输流程如图2所示。

图2 卫星通信模块传输流程图

卫星通信通信模块工作步骤为:(1) 北斗用户机0接收来自嵌入式模块的指令请求,指令遵循卫星通信协议,其格式为:北斗指令+信息类别+ID号+电文长度+电文内容+校验和,北斗用户机0通过用户ID号与不同区域的北斗用户机N通信;(2) 北斗用户机N接收到协议指令后转发给数据压缩模块,经数据压缩模块处理后,得到压缩数据,最终通过北斗卫星和用户机0返还给嵌入式终端。

2.2数据压缩模块

数据压缩模块作为整个系统的“桥梁”,不仅与嵌入式模块进行数据、指令的交换,并且将来自于北斗用户机N的协议指令进行解析,获得自动气象站的数据,并实现气象数据的无损压缩。

2.2.1压缩算法实现

图3 压缩算法流程图

混合压缩算法充分利用了对连续重复出现字符压缩率好的LZW算法和压缩率高的固定位长算法[3]。首先,先建立相应的字符串表:固定字符串“空格+时间:”用0X3A表示(需要特别说明的是,采样时间不用此表示,便于在混合算法解码过程中,数据能够完全还原);固定字符“空格+0”用0X3B表示;依次类推,用0X3F表示“空格+4”,这样得到一个新的字符串,各字符相应字节高4位也固定为0011与数字ASCII码高4位一致。接着,采用固定位长算法对新字符串的低4位进行编码,那么原来的字符串长度缩短了一半,数据量也相应减小一半,从而使压缩效率大大提高。压缩算法流程如图3所示。

2.2.2硬件实现

由于自动气象站所布区域偏远,为降低数据压缩模块功耗,延长数据压缩模块的工作寿命,数据压缩模块选用低功耗的MSP430作为主控芯片,以方便后期工作人员对设备进行维护管理。数据压缩模块结构如图4所示。

图4 数据压缩模块结构框图

图5 数据压缩模块软件流程

模块工作过程如下:(1) 北斗用户机N将接收到的协议指令通过串口通信模块1传送至控制指令提取模块,得到控制指令,控制指令只针对自动气象站有效;(2) 控制指令通过串口通信模块0发送至自动气象站,自动气象站接收到控制指令后,将原始数据返还给数据接收单元;(3) 原始数据经过数据压缩处理后,按照卫星通信协议重新打包后送至数据发送单元;(4) 压缩数据经过数据发送单元返还至北斗用户机N。数据压缩模块软件流程如图5所示。

2.3嵌入式模块

嵌入式模块作为本系统的核心,选择了一款高性能基于Cortex A8架构的SMART210嵌入式核心板[4]。通过配置编译完成Linux操作系统软件平台搭建,Linux操作系统选择Fedora14,使用目前嵌入式Linux的主流GUI系统QT作为开发工具[5]。在Linux环境中安装交叉编译器,用来完成QT库和应用程序的编译。模块主屏幕采用7寸的LCD电容屏,处理器内部集成的LCD控制器信号线经过驱动电路后即可连接到LCD模块[6]。

嵌入式模块由用户图形界面、数据处理和系统控制管理三个功能模块组成。用户图形界面为系统提供了便于操作和管理的用户界面,增加了系统的人机交互性;数据处理模块实现了对压缩数据的解析;系统控制管理一方面实现了对远程设备的控制,另一方面完成数据显示和管理的功能。嵌入式模块流程如图6所示。

图6 嵌入式模块流程图

2.3.1图形化界面GUI设计

在本设计中,为界面显示的对象定义了一个抽象类(paint)。界面的曲线图形的绘制采用QT的二维图形引擎的基础类QPainter开发。QPainter具有丰富的图形图像绘制功能函数,利用这些函数实现各种类型的气象数据曲线的绘制[7],并完成了自定义窗体部件类(QWidget)和子窗口类(QLabel、QSlider等)布局。利用信号与槽函数机制完成了一整套用户操作系统界面的设计,从而保证了个界面间快速的连接跳转,方便工作人员对终端设备的操作。

paint类的定义如下:

class paint : public paint_ui

{

Q_OBJECT

public:

paint( QWidget * parent = 0, const char * name = 0, WFlags

fl = WType_TopLevel );

virtual ~paint();

private:

void initialization();

//初始化函数

int openSerialPort();

//串口通信函数

void map_Read();

//绘制曲线函数

void Valu_Read();

//读取数值函数

protected:

virtual void paintEvent(QPaintEvent *);

private slots:

void historical_data();

//历史数据槽函数

……

}

2.3.2数据处理功能实现

数据处理模块由数据识别单元、数据预处理单元、数据解析单元组成。该模块负责处理从北斗用户机接收到的压缩数据,并将根据压缩算法将数据解析还原为原始气象数据。

数据处理模块中各子单元功能实现:

(1) 数据识别单元:判断接收数据的正确性。根据北斗通信协议判断接收数据的信息类型、ID号等信息是否正确。

(2) 数据预处理单元:当判断接收到的正确的数据后,利用QString.remove(const QString &str)函数对数据进行预处理;接着,根据北斗用户机的通信协议,提取出相应ID编号和压缩数据。

(3) 数据解析单元:根据数据压缩模块的算法,提取采样时间信息,利用QString.replace(const QString &str,const QString &str)函数分别将压缩编码过程中各字符还原成原始数据。其中各数据之间用“/”区分,如:风速和降雨两个数据之间用“/”隔开;接着,利用QString.split(const QString &str)函数,可将各个气象数据分别提取出来,数据解析部分代码如下:

QString hourt =″/″+strHex.mid(44,2)+″:″;

//提取时间信息

QString dataori = data.mid(46);

//提取压缩后的气象数据

dataori.replace(QString(″a″), QString(hourt));

//数据解析

dataori.replace(QString(″b″), QString(″/0″));

dataori.replace(QString(″c″), QString(″/1″));

dataori.replace(QString(″d″), QString(″/2″));

dataori.replace(QString(″e″), QString(″/3″));

dataori.replace(QString(″f″), QString(″/4″));

QStringList datalist = dataori.split(″/″);

根据自动气象站的协议可知,数据扩大了10倍,因此需要将各数据进行还原。各数据通过判断字符位数可以进行相应的操作,例如:若数据长度为1位,则使用QString append ( const QString &str)在字符前端插入字符串“0.”;若数据长度超过1位,则使用QString insert ( int position, const QString &str )在字符末位前插入小数点;最后将数据放入对应datalist。数据还原以风速为例,其代码如下:

int windatalen=datalist[4].length();

//获得风速的数据长度

switch(windatalen)

//判断风速的数据长度

{

//若数据长度为1位,则插入“0.”

case 1: datalist[4] =datalist[4].append(″0.″);break;

case 2:datalist[4] =datalist[4].insert(1, ′.′); break;

case 3:datalist[4] =datalist[4].insert(2, ′.′); break;

case 4:datalist[4] =datalist[4].insert(3, ′.′); break;

default: break;

//将风速存入列表datalist[4]中

}

2.3.3控制管理功能实现

系统控制管理功能分为远程控制和系统管理,完成指令请求发送、数据管理与系统调试功能。远程控制通过不同指令对自动气象站实现控制,例如:通过UB 获得当前常规要素瞬时数据。另一方面,在系统安装调试时,配置嵌入式模块的测试参数,例如:串口波特率、指令发送频度、指令发送模式、区域选择等。由此,实现对远程自动气象站的控制。

系统管理功能实现对采集数据的显示、存储和历史气象数据的读取、绘图。为实现此功能,需要配合使用QSQLite完成数据库管理操作[8]。在历史实时数据查询界面中,选择需要查询的时间区间、区域、气象数据类型后,在paint类中定义的Valu_Read()成员函数会从数据库中提取响应时间、区域、气象数据类型的值,并利用二维绘图QPaint类来绘制曲线,实现选择的气象数据在对应时间区间的曲线的绘制。

3功能展示与性能测试

将各个模块按系统框图组合连接,进行系统测试,系统运行良好,各模块间设定参数与反馈参数匹配度较好。系统设置界面如图7所示,工作人员可以在界面上进行参数配置和数据指令发送。湿度曲线图如图8所示,图中横坐标表示查询的时间,其单位为:小时;纵坐标表示相应气象数据的数值及其单位。工作人员通过操作界面选择需要查询的时间、区域和气象数据类型并通过曲线直观的反映天气情况。

图7 系统设置对话框界面

图8 历史数据查询界面

4结语

本文以Linux平台为基础设计了气象控制与管理系统,系统依托北斗卫星通信,大大减少了构建通信设备的高花费。利用MSP430低功耗的优势结合LZW算法和固定位长算法混合编码,提高了自动气象站的传输、监测和管理效率。利用嵌入式系统,实现了对多个区域自动气象站的远程控制和气象数据管理功能,形成了对地面控制和显示系统的良好补充。为建立移动气象中心提供了一种新思路,以便应用于偏远地区的气象监测领域。

参考文献

[1] 宋博宇,黄建华,王晓芳.“北斗系统”在人防信息化系统的应用[J].微型机与应用,2012,31(24):4-6.

[2] 张勇,陈苏婷,张燕.基于北斗卫星的自动气象站数据传输管理系统[J].电子技术应用,2013,40(5):21-23.

[3] 周贵宇,马宪民,李卫斌.改进的混合压缩算法在GPS数据压缩中的应用[J].计算机应用与软件,2013,30(12):167-169.

[4] 张颖,易金花,张晓玉,等.基于嵌入式Linux的上肢康复机器人用户系统研究[J].电子技术应用,2014,40(5):14-17.

[5] 陈鲲,陈云秋,刘信新.基于Qt/Embedded的嵌入式Linux应用程序的设计[J].计算机与数字工程,2009,37(1):156-161.

[6] 王润明,赵祥模,惠飞,等.基于嵌入式Linux与QT的汽车虚拟仪表设计[J].现代电子技术,2012,35(6):2-4.

[7] 邱铁,周玉,张民垒.Linux环境下Qt4图形界面与MySQL编程[M].北京:机械工业出版社,2012.

[8] 刘治国,陈新华.基于Linux和Qt的智能家居系统的设计与实现[J].电子技术应用,2012,38(4):23-26.

DESIGNING EMBEDDED LINUX PLATFORM-BASED SATELLITE METEOROLOGICAL CONTROL AND MANAGEMENT SYSTEM

Wang RuojueChen Suting

(JiangsuKeyLaboratoryofMeteorologicalObservationandInformationProcessing,NanjingUniversityofInformationScienceandTechnology,Nanjing210044,Jiangsu,China)

AbstractAiming at the characteristics of current meteorological control and management platform, we designed an embedded Linux platform-based meteorological control and management system. Relying on the Plough satellite communication, the system realises the control and operation on each functional module in every area, we also used the Linux platform-based Qt graphical user interface development tools to design a set of operation interfaces which implemented the processing of real-time collection, display and storage on meteorological data in multiple areas. In it, the system efficiently realises the lossless compression of automatic meteorological station data through the mixed code using LZW coding algorithm and fixed bit length packing coding algorithm. In this way we further improved the portability and flexibility of the remote management capability on automatic meteorological stations, and this provided a new thought for the construction of mobile meteorological centres.

KeywordsEmbedded systemThe Plough satelliteLZW coding algorithmFix bit length packing code algorithmMobile meteorological centre

收稿日期:2014-11-13。江苏省研究生培养创新工程项目(SJLX_0384)。王若珏,硕士生,主研领域:嵌入式系统设计。陈苏婷,副教授。

中图分类号TP311

文献标识码A

DOI:10.3969/j.issn.1000-386x.2016.05.055

猜你喜欢
气象站嵌入式北斗
北斗时钟盘
珠峰上架起世界最高气象站
“北斗”离我们有多远
心灵气象站
DZZ3型自动气象站一次地温数据异常的处理过程
搭建基于Qt的嵌入式开发平台
嵌入式软PLC在电镀生产流程控制系统中的应用
首个北斗全球“厘米级”定位系统开建
中国的北斗 世界的北斗
自动气象站应该注意的一些防雷问题