宁波双偏振多普勒雷达监测预警软件的设计与实现
2020-10-14励臣儒李从初姚浩立杨豪徐振宇
励臣儒 李从初 姚浩立 杨豪 徐振宇
(宁波市气象网络与装备保障中心,浙江 宁波 315012)
0 引 言
天气雷达是监控台风、暴雨、冰雹、龙卷等突发性、灾害性强对流天气的主要工具。宁波作为东部的沿海城市,每年汛期的台风天气对雷达都是一次巨大考验。2019年年初,宁波的单偏振多普勒天气雷达通过技术升级改造为双偏振多普勒天气雷达。双偏振天气雷达提高了气象、非气象回波的识别能力,能够更好地描述目标粒子的尺寸、形状及降水分类,能够更好地识别融化层等优势。
对于宁波雷达机务人员来说,双偏振的升级还解决了他们的一大难题——硬件重启。由于宁波雷达站的偏远性和保障人员的局限性,雷达站的观测模式很早以前便以无人值守为主。以前如果出现如RDA电脑死机蓝屏无法远程重启的情况,机务人员需上山重启维护,中间耗时较长,而现在双偏振雷达的配电系统配备了一套远程控制系统,可通过软件对雷达系统实现一键开关机。
随着雷达技术的发展,日后对雷达的监控会更趋向于数据和通信两方面。如果能在远端及时了解雷达运行状态信息、产品传输等情况,就可以大大提高雷达维护人员的故障反应速度,提高雷达运行效率,从而保障和提升资料传输质量,设计出能实时监控雷达运行状态、通信情况、产品生成的技术迫在眉睫。
1 软件需求分析
1.1 雷达系统分析
如图1所示,雷达软件系统主要由RDA(Radar Data Acquisition)、RPG(Radar Products Generator)、PUP(Principal User Processor)3部分组成,所有服务器目前均使用Linux系统。
图1 雷达软件系统
RDA为雷达数据采集和监控部分,是整个系统的基础部分。雷达的所有运行参数、状态等信息都能在RDA上看到,并存有日志文件。双偏振升级以后,RDA新增流传输功能,实时传输数据到浙江省气象局(以下简称省局)。
RPG主要负责数据传输、系统总控和产品生成。目前宁波RPG数据存档有3路:当地保存,宁波市气象局(以下简称市局)资源池备份,还有一路则是通过FTP方式上传至省局。除此以外,还将雷达的状态文件进行FTP上传。
PUP主要传输和展示雷达产品。宁波现有3台注册过的PUP,直连RPG实时读取数据,一台用于气象台业务使用;一台负责直传省局考核使用;还有一台则负责产品的备份。其他PUP则可通过获取共享资源池里的数据进行使用。
虽说目前系统采用Linux系统,整体稳定性大幅提升,但仍有因各种原因,在运行过程中出现程序自动关闭或系统死机等情况,导致数据无法及时获取与上传。
1.2 用户需求分析
目前宁波针对雷达的监控主要为:
1)RDA、RPG、PUP服务器的网络通信监控,主要通过不间断的Ping功能实现。
2)雷达产品在当地数据库的监控。
3)值班员每日一次的雷达运行参数记录。
4)雷达站现场的视频监控,主要是对机房和天线罩内外部的监控。
结合日常值班情况和现状分析,目前存在的问题为:
1)上传至省局的产品传输由于省局FTP目录设置原因无法监控,负责上传省局的PUP软件曾出现过漏发一份产品的情况,由于当地备份PUP软件正常运行导致业务人员没有及时发现产品丢失。
2)缺少对雷达实时运行状态的监控。
综上所述,计划设计一个包含雷达运行状态、软件通信情况和产品传输状态的软件。通过对雷达系统的分析,雷达主要的运行参数都保存在RDA电脑上的日志文件中,雷达软件的通信则可通过Ping各个服务器IP的形式来判断通信情况,产品的传输则通过监控PUP的FTP日志,比较日志文件中各个产品的最新上传时间和当前时间的时间差来判断产品是否正常传输到省局FTP目录中。整个软件设计以白色为底,如某模块出现数据问题或者通信问题则通过改变背景颜色来凸显。
2 软件开发与实现
2.1 开发环境及框架
现状分析:
1)市局业务数据库多数采用SQL Server,需做数据库同步软件。
2)软件中的多个部分涉及文件内容的提取及编辑,如Text文件的内容提取及数据库数据对比。
3)雷达软件系统都采用Linux系统。
考虑到现状,最终采用Python作为主要开发语言,并使用Tkinter作为图形界面框架,UI如图2所示。
图2 软件UI设计
Python作为一种跨平台的计算机程序设计语言,是一种面向对象的动态类型语言,它具有以下几点优势。
1)Python的定位是“优雅”“明确”“简单”,所以Python程序看上去总是简单易懂。
2)开发效率非常高,Python有非常强大的第三方库,基本上可通过计算机实现任何功能,Python官方库里都有相应的模块进行支持,直接下载调用后,在基础库的基础上再进行开发,大大降低开发周期,避免重复造轮子。
3)高级语言。当使用Python语言编写程序的时候,无须考虑诸如如何管理你的程序使用的内存一类的底层细节。
4)可移植性。由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工作在不同平台上)。如果小心地避免使用依赖于系统的特性,那Python程序无须修改就几乎可以在市场上所有的系统平台上运行。
5)可扩展性。如果需要一段关键代码运行得更快或者希望某些算法不公开,Python支持运行由C和C+语言编写的代码。
6)可嵌入性。Python可嵌入C/C++程序,从而为程序用户提供脚本功能。
7)由于其很好的支持线程,能大幅度减少系统资源使用率,数据的分词处理能力也比较优秀,因此Python目前被大量使用于数据挖掘和数据分析中。
2.2 数据处理
2.2.1 雷达运行状态
由于RDA服务器内存有限,雷达运行的状态文件被设置为定期删除,通过Linux上的Crontab定时任务命令,将状态文件单向同步至市局存储池中。Linux的定时任务时间与Windows系统不同,需要自己手动输入,由5个*号组成,代表的意思是按照分、时、日、月、周的顺序来排列的,如果想每1 min都执行一次的话,就采用默认的* * * * *,如果想每5 min执行一次,可以用*/5* * * *,如果是每2 h执行一次的话,那就用* * /2* * * 来设置。
雷达的主要运行参数主要保存在Status的日志文件中,报警信息保存在Alarm文件中,两者均按天保存,同步主要利用Rsync工具。Rsync是Linux系统下的数据镜像备份工具,主要优势如下。
1)可以镜像保存整个目录树和文件系统。
2)可以很容易做到保持原来文件的权限、时间、软硬链接等等。
3)无须特殊权限即可安装。
4)快速:第一次同步时Rsync会复制全部内容,但在下一次只传输修改过的文件。Rsync在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽。
5)安全:可以使用SCP、SSH等方式来传输文件,当然也可以通过直接的Socket连接。
6)支持匿名传输,以方便进行网站镜像。
同步过程中,利用正则表达式从所有日志文件中单独筛选这2个文件名的文件进行同步。其次,考虑到数据的重要性,文件大小也不大,因此同步命令设置为实时同步,保证数据的准确性和实时性。
同步完成后,利用Python程序定时从存储池中提取日志文件,并对其中的内容进行切片处理,如雷达的主要运行参数:机房温度、发射机温度、雷达罩内温度和发射机功率,程序会对整个文件内容进行筛选提取并存入数据库,软件再从数据库中提取对应关键词进行展示。
雷达的数据更新频率是6 min,为确保提取的数据是最新时次,程序调用了Timer模块,通过该模块实现程序每6 min重复运行的功能。
报警信息这个模块有点特殊,日志中只有报警编码和英文解释,为了更直观地展现给维护人员,软件建立了报警编码的数据库,提供了编码所对应的中文解释,软件可以通过对数据库的筛选来输出编码的中文解释。
2.2.2 雷达连接状态
软件中判断雷达各个部分的连接状态主要通过Ping各个IP地址来实现。Python的OS库中有现成的Ping命令,能控制Ping的次数和时间,并能通过返回的状态信息是否为0来判断连接状态。
由于雷达服务器的重要性和时效性,连接状态的刷新时间设置为1 min判断一次,每次发送2个Ping命令包,这样既能保证时效性,也能确保准确性。前文提到在判断雷达运行状态时,软件设置的刷新时间为6 min,这两部分的刷新时间设置不同,逐个去运行两个函数在程序中不太合乎逻辑,因此采用Ptyhon的多线程Threading模块,在软件中采用多线程的优势如下。
1)提高响应性。
2)最小化对系统资源的使用。一个进程的多个线程,可以共享其所在进程所申请的资源如内存空间,因此使用多个线程相比于多个进程进行编程来说,可节约对系统资源的使用。
3)简化程序的结构。线程可以简化复杂应用程序的结构。
2.2.3 雷达产品状态
虽然宁波雷达已经升级为双偏振雷达,产品数量上增多了,但是由于整个浙江省大部分还是单偏振雷达,因此省里考核的产品仍为单偏振产品。该项目主要监测上传至省局的产品是否完整和及时,由于省局FTP目录是设置为实时刷新,一旦目录中有产品录入马上转移到省局的存储中,FTP目录并不保存产品,因此通过监控PUP软件上的FTP日志文件来判断产品的传输情况。
PUP的产品传输情况主要保存在名为Achieve的日志文件中,按天保存。目前共有36个产品在上传省局目录中,日志中对每个产品每个时次的上传情况都有说明。软件先是将日志文件中的每条记录通过Python切片处理后,将重要字段存入数据库:产品名称、上传时间、产品生成时间、上传情况。软件再从数据库中调取数据显示,这块的刷新时间也是6 min,因此是并入雷达运行状态的线程中的。
2.3 数据监测
1)机房温度如果超过20℃,软件页面此模块背景为红,否则为绿色正常。
2)发射机温度如果超过55℃,软件页面此模块背景为红,否则为绿色正常。
3)发射机峰值功率如果低于650 kW,软件页面此模块背景为红,否则为绿色正常。
4)如果有报警信息,软件页面此模块背景为红,否则为绿色正常。
5)连接状态方面如果Ping不通,软件页面此模块背景为红,否则为绿色正常。
6)产品的上传时间和当前时间对比,如果超过10 min,软件页面此模块背景为红,否则为绿色正常。
2.4 开发成果
最终软件效果如图3所示,基本达到预期的效果,实现该有的功能。整个软件包含雷达状态、连接状态和产品状态3个模块,数据正常模块的背景色为绿色,反之则为红色。雷达状态和产品状态模块的更新频率为6 min一次,连接状态模块的更新频率为1 min一次。目前上传考核的雷达产品数量不是很多,为直观展示每个产品的状态,软件页面直接显示所有产品。为凸显效果,PUP_气象台的IP地址临时设置为其他未使用的IP地址,因此为断线红色状态,实际情况是在线正常状态。目前软件已加入宁波气象网络运行科的日常监控使用。
图3 雷达监控最终效果
3 应用成效
该软件最终实现的软件成果基本符合预期效果,整个软件包含雷达状态信息、雷达软件系统通信情况、雷达产品情况3块信息,直观地将状态信息呈现给值班人员,协助值班人员在远端及时发现异常,实现了天气雷达运行状态监控的自动化。系统能主动和及时地发现雷达故障,大大提高雷达维护人员的故障反应速度,提高了雷达运行效率和资料传输质量。但整个项目还存在需要改进的地方。
1)将雷达硬件远程重启的功能结合进来。
2)改进软件UI,从而更加美观。
3)将视频系统结合进来,使值班人员可以看到监控截图。
4)将报警和声音、短信、微信推送等功能结合起来,扩宽预警方式的途径。