风廓线雷达运行体征实时监控与管理
2015-10-21秦虹陈浩君尹春光
秦虹 陈浩君 尹春光
摘要 目前在上海各区县气象局共安装有约10部风廓线雷达,它们对上海市的天气预报和气象研究有重要作用。上海市气象信息与技术支持中心承担对这些风廓线雷达的日常维护工作,该系统通过使用Delphi6.0语言环境和多线程技术编程,将这些风廓线雷达的实时状态信息录入MySQL数据库,实现对其中4部敏视达公司生产的风廓线雷达状态信息进行统一管理和实时监控,提供研究者将其中的重要信息进行动态比较与分析,提高了管理效率。
关键词 风廓线雷达;实时监控;Delphi6.0语言;多线程编程;MySQL数据库
中图分类号 S126 文献标识码 A 文章编号 0517-6611(2015)34-337-04
随着气象预报与气象研究的深入发展,各类气象观测与探测手段也不断更新。从自动气象站到气象雷达再到气象卫星,形成了多方位、多尺度、多层次的立体观测网。风廓线雷达是通过向高空发射不同方向的电磁波束,接收并处理这些电磁波束因大气垂直结构不均匀而返回的信息进行高空风场探测的一种遥感设备。风廓线雷达利用多普勒效应能够探测其上空风向、风速等气象要素随高度的变化情况,具有探测时空分辨率高、自动化程度高等优点。在风廓线雷达基础上增加声发射装置构成无线电-声探测系统,可以遥感探测大气中温度的垂直廓线。近年来,随着我国气象事业的发展,风廓线雷达逐步被引进并国产化,对气象预报和气象研究做出了新的贡献。上海气象局从1999年至今,总共安装了10部风廓线雷达,其中既有芬兰Visala公司的产品,也有国产敏视达公司的产品,对于这些产品的维护工作就落在上海市气象信息与技术支持中心。为了实现统一管理和运维保障,需要开发一套对现有风廓线雷达运行状态进行实时监控的软件[1]。该软件需的主要功能就是要实时读取并记录风廓线雷达的运行态信息、对不同风廓线雷达信息读取相互独立、界面清晰并有一定告警功能。该程序开发采用Delphi6.0语言环境和多线程编程技术。目前仅将敏视达公司生产的松江区、奉贤区、金山区和世博园区的4部风廓线雷达的状态数据接入,今后将逐步接入所有風廓线雷达。
1 需求分析和总体设计
1.1 需求
目前对于上海气象信息与技术支持中心而言,对全市范围内10部风廓线雷达的运行维护工作非常重要也非常复杂。由于这些风廓线雷达的生产厂家和安装时间均有不同,以往对于它们的运行状态要么靠定期检修时获取,要么直到产品输出发现问题时再临时检查获取。故此,一款能实时记录和监控所有风廓线雷达工作运行状态的软件十分重要,既能从中及时发现问题,也能通过历史数据的比较与分析中预判故障,从而显著地提高工作效率[2]。
1.2 软件的预期功能
该软件预期由5大功能模块组成,分别为时钟、风廓线雷达状态文件处理、当前重要状态信息显示、日志信息查询、告警信息处理。
时钟显示功能设计,因为气象信息对时效的要求非常高,而该程序的设计主要依赖运行该程序计算机的时钟,既有利于对该程序定时获取风廓线雷达数据的监视,也有利于对远程各站点雷达状态信息计算机的时间对比。因为目前未对所有计算机的时间进行同步处理,这一步必不可少。
风廓线雷达的状态信息读取与记录都采用多线程编程,这样做的好处就是相互间隔离,一旦某个风廓线雷达的状态信息处理过程出现问题,不会影响到其他风廓线雷达状态信息的处理。状态信息文件的传输日志、状态信息文件的解码日志、状态信息入库日志需可逆向查询至少30 d,并且保留1年,如此可保证1年内对网络传输状态、程序运行状态、数据库运行状态做到有据可查。
告警功能非常重要,几乎任意一个系统程序都需要告警模块,监控系统更是如此。由于在上海市信息与技术支持中心对风廓线运行状态并非由专人进行7×24 h监控,故此声音警告功能不必加入,但面板文字警告则不可省去。面板文字告警显示实时告警信息,内容包括数据传输异常、文件处理异常、系统运行状态异常,并以显眼方式滚动显示。同时建立出错信息历史查询功能,其中数据同样可逆向查询30 d并保留数据1年。
所有这些风廓线雷达的状态数据用一个MySQL数据库支持,MySQL是个小型关系型数据库系统,拥有体积小、速度快、开放源码的特点。数据库的字段则严格按照状态数据文件中的各参数来设置,为避免今后由于时间推移而导致的数据量庞大、查询速度慢的问题,采用多表分区的方法来解决,由于敏视达公司生产的风廓线雷达状态文件是每5 min生成一个,故每年每部雷达有105 120条记录,10部雷达共1 051 200条记录,因此按年来分表即可很好地解决此问题。
1.3 数据控制及各功能模块流程
1.3.1
主程序与各功能子模块流程。主程序运行后,各功能子模块以多线程方式并行运行。提高运行速度的同时,也不会因为某一个功能模块卡死而导致其他功能模块不能运行。主程序与各线程关系流程见图1。
1.3.2
风廓线雷达状态数据处理与显示子模块数据流程示意。各个风廓线雷达状态数据处理与显示子模块数据流程都完全相同。首先读入配置文件;之后按照相应的配置文件内容进行远程状态信息文件读取;文件成功读取后进行解码;成功解码后将状态信息记录入数据库,在此期间将过程信息记录入相应日志文件,如果有异常信息则记入出错信息文件并同时触发告警程模块;最后等待下一个循环时间再次重复。具体流程见图2。
1.4.1
状态数据处理互不影响。每个风廓线雷达状态数据处理相对独立,当某个处理过程出现问题导致卡住时,不影响其他风廓线雷达处理程序运行,最大限度保证所有正常的风廓线雷达状态信息数据的正常录入。
1.4.2
可靠性高。确保各功能模块级数据资源运行可靠,将软件运行的故障率降至最低限度。软件运行需要稳定可靠,要求长时间连续运行不出错以确保今后的维护监控工作安全有效进行。
1.4.3
时钟信息处理。由于多部风廓线雷达状态信息文件需要从不同的服务器上读取,时效性要求比较高,但是各服务器的时钟并未作统一处理。确保从每一台服务器上都能取到最新的数据文件是一个非常关键的问题,如果处理不好就会导致取数据文件的重复或失败。
1.4.4
运行状态明了。清晰显示所有风廓线雷达运行状态数据处理各个模块的信息,能按照用户要求在第一时间明确获取程序运行的状态,如有故障则能快速进行处理。
1.4.5
界面清晰。各功能模块界面应简便、规范,对用户友好。避免复杂操作与显示信息的混乱而导致降低使用该软件的界面障碍。
1.4.6
告警信息明确。告警处理必须谨慎,模糊的告警非但不能起到警示作用,还会降低监控工作效率。该软件的告警信息包括数据传输异常、文件处理异常、系统运行状态异常,并滚动显示。
2 软件开发工具简介
2.1 Delphi简介
Delphi是著名的Borland(現在已和Inprise合并)公司开发的可视化软件开发工具。“真正的程序员用C语言,聪明的程序员用Delphi”,这句话是对Delphi最经典、最实在的描述。Delphi被称为第四代编程语言,它具有简单、高效、功能强大的特点。和VC相比,Delphi更简单、更易于掌握,而在功能上却丝毫不逊色;和VB(Visual Basic)相比,Delphi则功能更强大、更实用。可以说Delphi同时兼备了VC(Visual C++)功能强大和VB简单易学的特点。它一直是程序员至爱的编程工具。
Delphi具有以下的特性:基于窗体和面向对象的方法,高速的编译器,强大的数据库支持,与Windows编程紧密结合,强大而成熟的组件技术。但最重要的还是Object Pascal语言,它才是一切的根本。 Object Pascal语言是在Pascal语言的基础上发展起来的,简单易学。
Delphi提供了各种开发工具,包括集成环境、图像编辑(Image Editor),以及各种开发数据库的应用程序,如DesktopDataBase Expert等。除此之外,还允许用户挂接其他的应用程序开发工具,如Borland公司的资源编辑器(Resourse Workshop)。
2.2 MySQL数据库简介
MySQL是最受欢迎的开源SQL数据库管理系统,它由MySQL AB开发、发布和支持。它是一个快速的、多线程、多用户和健壮的SQL数据库服务器。MySQL服务器支持关键任务、重负载生产系统的使用,也可以将它嵌入到一个大配置(massdeployed)的软件中去。
MySQL是一个关系数据库管理系统,关系数据库就是把数据存放在分立的表格中,这比把所有数据存放在一个大仓库中要好得多,这样做将增加数据获取的速度和灵活性。“MySQL”中的SQL代表“Structured Query Language”(结构化查询语言)。SQL是用于访问数据库的最通用的标准语言,它是由ANSI/ISO定义的SQL标准。SQL标准发展自1986年以来,已经存在多个版本,如SQL86、SQL92、SQL:1999、SQL:2003,其中SQL:2003是该标准的当前版本。
MySQL是开源的,开源意味着任何人都可以使用和修改该软件,任何人都可以从Internet上下载和使用MySQL而不需要支付任何费用。MySQL服务器是一个快捷、可靠和易于使用的数据库服务器,尽管MySQL仍在开发中,但它已经提供一个丰富和极其有用的功能集。它的连接性、速度和安全性使MySQL非常适合访问在Internet上的数据库。
MySQL数据库服务器是一个客户/服务器系统,它由多线程SQL服务器组成,支持不同的后端、多个不同的客户程序和库、管理工具和广泛的应用程序接口(APIs)。MySQL也可以是一个嵌入的多线程库,用户可以把它连接到自己的应用中而得到一个小、快且易于管理的产品。
3 程序内容实现
3.1 主程序界面设计
主程序界面如设计原则中所提,要求界面清晰且显示内容完整。主界面中上方中间是当前时钟信息,左边栏目是监控的各风廓线站点名称和站号信息,右边是当前选择的风廓线站点当天的连接与解码状态信息,下方是滚动告警信息,如果双击运行信息框,则弹出历史信息浏览选项。主程序界面见图3。
图3 主程序界面
3.2 MySQL数据库字段设计
数据库的设计根据索要监控的要素而定,包括风廓线雷达基本数据和运行状态数据。其中基本数据有:台站代码、台站名、型号、经纬度、海拔、天线增益、馈线损耗、波束夹角、扫描波束数、发射波长、低模式脉冲重复频率、高模式脉冲重复频率、低模式脉冲宽度、高模式脉冲宽度等。而状态数据包括:发射机输入功率、发射机输出功率、发射机反射功率、发射机温度、发射机各种电源电压、发射机各类故障告警、各类速度与谱宽的标定期望与实测值、噪声、杂波抑制、灵敏度等,总共有80项指标。
3.3 编程使用的主要技术
3.3.1
Delphi Indy控件集中的 Idftp控件。INDY的全名是Internet Direct(也叫Winshoes),它是一套开放源代码的Internet控件集,它支持大部分流行的Internet协议,包括TCP、UDP、DNS、ICMP、FINGER、FTP、GOPHER、HTTP、POP3、SMTP、TELNET、WHOIS等,支持BASE64、MD2、MD4、MD5等编解码,提供INTERNET流行协议的客户端和服务器控件[2]。在该编程软件中,主要用到的是Idftp控件的Get函数与List函数,其中Get函数功能是获取文件,其原型为:
Function Get(const ASourceFile:String,Const ADest:string;Const AAppend:Boolean);overload;
而List是获取远程FTP服务器上指定目录下的文件列表[3],从而对其内容进行各种判断,其原型为:
procedure List(ADest:TStrings;Const ASpecifier:String;const ADetails:Boolean);
3.3.2
二进制文件读取。由于敏视达公司风廓线产品的运行状态是以二进制文件方式记录,所以在Delphi6.0中必须以读取记录型文件的方式进行顺序读取[1]。为了提高速度,事先按照一定数据格式自定义数据结构,然后按结构读取。其中,自定义数据结构方法为:
自定义数据结构名=record
具体数据类型
……
End;
读取二进制文件用TFileStream的方法,具体为:
TFileStream.Create(filename,fmOpenRead);
之后用数据结构读取,原型为:
DataSruct.Read(DataStruct,sizeof(DataStruct));
3.3.3
数据库语言SQL。SQL是Structured Query Language(结构化查询语言)的缩写。SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。SQL功能强大、使用方便,已经成为了数据库操作的基础,并且现在几乎所有的数据库均支持SQL[4]。该程序中主要用到的是其中的replace語句及其扩展用法。其原型为:
replace into 表名 (字段名1,字段名2,…,字段名n) values (值1,值2………,值n);
3.3.4
多线程技术。随着分布式系统的兴起,并发多任务技术变得越来越重要。在现有基于多线程的操作系统上开发并发多任务程序已经成为程序设计的热点。根据需要在应用程序中创建线程,多个线程可以并发地运行在同一个进程中,操作系统的多任务特性使得线程之间能独立运行,但彼此共享存储空间。尽管多线程能提高CPU利用率,但也不能太多,同时,在多个线程操作同一个内存地址时需处理好它们之间的同步关系[4]。
43卷34期 秦 虹等 风廓线雷达运行体征实时监控与管理
3.4 软件的测试与维护
为保证软件的可靠运行,需要针对各种情况进行测试。首先对各个功能模块进行分别测试,包括对正确数据读取测试、错误数据读取测试、容错性测试,接着将所有功能模块联合在一起做总体调试,最后在工作平台进行实际运行测试。
在实际测试的同时,该程序也已进入运行维护阶段,改正在特定使用条件下会暴露的潜在程序错误或设计缺陷。在软件使用过程中数据环境发生变化或处理环境发生变化时进行及时修改。若有工作人员提出改进意见时,及时对软件做出修正。通过一段时间的测试,未出现重大错误。
4 结语
现代气象预报制作对获取各种气象信息的要求越来越高,而风廓线雷达通过向高空发射不同方向的电磁波束,接收并处理这些电磁波束因大气垂直结构不均匀而返回的信息进行高空风场探测的一种新型遥感设备。在安装了新型设备后,对其进行有效的管理监控是当务之急。
该程序通过对4部敏视达公司生产风廓线雷达的状态数据文件进行实时解码并将关键信息及时录入数据库,从而在一个固定的时间段对其历史特征数据进行分析,作出相应的评估和应用,因此大大提高了对这些风廓线雷达的监控与运行维护的效率。
由于Visala公司的状态文件数据结构未对我国公开,故此其他几部风廓线雷达到目前为止并未纳入该程序的监控管理范围,但该程序也预留了扩展空间,一但该公司公开了相关信息,也将很方便地将其加入该研究程序监控之中。
参考文献
[1] 秦虹.气象实时数据监控程序的设计与开发[J].安徽农业科学,2014,42(27):9434-9436,9439.
[2] 邓莉,王伯民,尹新怀.地面气象资料统计分析系统的研制[J].安徽农业科学,2013,41(6):2584-2587.
[3] 张曜,张青,李彬.Delphi函数使用手册[M].北京:冶金工业出版社,2002.
[4] 张世明.Delphi程序设计基础[M].北京:电子工业出版社,2010.