郭晓超,何周见,姚成勇,姚章福
(贵州省遵义市气象局,贵州 遵义 563002)
遵义新一代天气雷达监控软件的设计与实现
郭晓超,何周见,姚成勇,姚章福
(贵州省遵义市气象局,贵州 遵义 563002)
基于C/S软件结构,使用Visual Studio 2010平台、C#编程语言等技术,实现对雷达运行状态和资料传输的监控与报警。软件主要由监测模块和报警模块组成,监测模块通过读取二进制状态文件实现对雷达状态的监控,通过判断文件生成时间和计算机系统时间的差值实现对资料生成和传输的监测,同时保存故障状态用于分析故障原因。报警模块主要实现语音、短信、微信、电话等多种报警方式。自2015年3月投入业务运行以来,软件运行稳定可靠,故障提醒及时准确,极大地缩短值班人员的故障响应时间。同时,软件监测生成的故障状态信息有助于快速判断雷达故障原因,有效提高雷达故障维修效率。
雷达监控;资料管理;多种报警方式;雷达维修
近年来,遵义暴雨、冰雹等灾害性天气突发多发,新一代多普勒天气雷达作为中小尺度天气系统监测预警的工具,其重要性愈发凸显[1,2],因此,提高雷达系统的可用性,特别是保障重大天气过程中雷达的正常运行,成为雷达机务保障人员的重要职责。雷达业务软件众多,单纯依靠人工监控其运行状态,容易导致效率低下,监控往往不及时,部分小故障可能由于没有及时发现导致雷达长时间运行异常,对系统可用性产生重大影响[3]。同时,在维修雷达时,常常需要了解出现故障后的系统状态,但是雷达状态文件实时更新,只能看到当前状态,不利于故障原因的快速诊断[4]。网络暂时中断会导致雷达厂家提供的实时处理程序(下文简称“实时处理程序”)停止运行,计算机和雷达系统出现问题也可能导致上述故障产生,实时监控和网络连接状态对于判断网络问题引起的雷达故障非常重要。为提高雷达业务监控的智能化水平,及时发现故障,快速判断故障原因,保障雷达的正常运行,减轻值班人员的工作压力,开发了新一代多普勒天气雷达监控软件(下文简称“监控软件”)。软件主要实现对雷达运行和资料传输情况的自动监控,并可通过语音、短信、电话、微信等多种方式进行报警,提高雷达故障发现的及时性和维修速度,同时对雷达资料进行管理,保证雷达业务软件在无需人工干预的情况下长时间稳定运行。
2.1 软件界面
监控软件主界面如图1所示。
图1 软件界面Fig.1 The software interface
为保证软件运行稳定流畅和及时监测雷达故障,在软件界面上仅保留必要的显示项目:工具栏、故障状态显示区域和状态信息条。工具栏包括检测和配置两个按键,检测键用于设置监控软件是否检测,当软件启动时,默认为检测状态。配置键用于调用配置文档(如图2所示),需要设置的参数分为8个项目:①“基数据生成”、“基数据传输”、“产品传输”、“状态传输”和“拼图传输”等5个项目均包括“路径”、“时间”、“是否删除”和“保留文件数”等4个参数,其中“路径”为相应资料文件的路径,“时间”用于判断是否有新文件生成,“是否删除”指示是否删除该路径下的文件,“保留文件数”指定需要保留最新文件个数;②“状态文件”项目只包含一个“路径”参数,设置雷达原始状态文件路径,用于检测雷达系统运行状态;③“网络测试IP”项目只包含1个“IP”参数,设置为雷达采集机子系统的IP,用于判断雷达终端与雷达系统之间网络连接是否正常;④“Archive文件”项目包含“路径”和“是否删除”2个参数,“路径”设置为经RPG转换后的雷达基数据文件路径,“是否删除”指示是否定时删除基数据。
图2 参数设置界面Fig.2 The parameter setting interface
故障状态显示区域分为“传输”和“状态文件”两列,均以红绿灯的方式显示。“传输”列共有6个指示灯,分别表征5种资料传输情况和1个网络连接情况,正常状态为绿灯,当对应模块出现故障时,相应指示灯显示为红色。“状态文件”列有5个指示灯,正常状态为绿灯,当没有找到状态文件时,“文件”指示灯为红色;状态文件中包含“伺服”、“接收”、“发射”和“整机”4个子系统的状态,当某个子系统出现故障时,对应指示灯显示为红色。
状态信息条显示最新检测信息,包括检测时间和检测状态,其中检测状态分为“开始检查”和“检查结束”两种。该状态信息条用于值班人员判断监控软件运行是否正常,软件检测速度是否满足要求。
2.2 主要实现功能
监控软件主要实现以下功能:雷达运行状态监控、资料生成和传输的监控、网络监控、资料管理、雷达故障信息的本地化存储和多种方式报警。检测时间间隔设置为30 s,单次检测需要的时间在2 s左右,检测到故障时本地化存储,如果连续5次检测到故障,通过多种方式报警,从雷达出现故障到报警的时间差在130 s左右(包括4个检测间隔和5次检测时间)。雷达系统常常存在能自动修复的小故障,故障时间一般在2 min以内,如果检测到故障立即报警,会导致报警频繁,而大部分故障不需要处理;设置为连续5次检测到故障时报警,可使故障提醒更加准确有效。
2.3 技术方法
软件基于.NET 4.0,使用C#语言开发而成,可在Windows XP、Windows 7、Windows Server 2003等操作系统下运行。由于监控是其最重要的功能,必须满足运行稳定、状态检测快速准确、界面简洁等要求,因此采用基于C/S模式的软件体系结构,雷达故障状态和系统设置均以文本文件方式存储[5]。自2015年3月投入业务运行以来,运行稳定流畅,检测速度快,故障提醒及时准确,雷达故障记录信息有助于快速判断故障原因,提高雷达维修速度。
3.1 雷达运行状态监控
实时处理程序将各子系统的运行状态实时同步到终端显示,并以二进制形式存储于状态文件status.dat中。监控软件通过读取状态文件来监控雷达状态,监控内容具体分为伺服子系统、接收子系统、整机系统、发射子系统等,各子系统状态的判断相互独立,监控流程如图3所示。
图3 雷达运行状态监控流程Fig.3 The monitoring process of radar operation
雷达状态文件中不同子系统状态信息占用字节固定,每个位的值(0或1)表示相应雷达状态是否正常。为提高文件解析速度,首先将发射子系统、接收子系统、伺服子系统和整机系统状态分别作为整体进行检测,如果正常则不需要对每个位进行检测,只有存在故障时才对每个位进行检测,如接收报警信息占用两个字节,使用BinaryReader. ReadUInt16()函数读取并赋值给一个UInt16变量,该变量在正常情况下取值为65535(二进制为“1111111111111111”),如果存在故障时再对每个位进行检测并记录故障,如果连续5次检测均存在故障,则通过多种方式报警。
接收机位状态检测的关键代码如下:
public void receiverErrRecord(UInt16 receiver)
{
UInt16 comp = 1;
string[] statusName = new string[]{ "0", "0", "0", "0", "0", "0" ,"频综故障","0","0", "0", "接收-5V电源故障", "0","接收+24V电源故障","接收+15V电源故障", "接收+5V 3A电源", "接收+12V电源故障"};//每位对应的雷达故障状态
for (int i = 0; i < 16; i++)
{
if ((statusName[i] != "0") & (receiver & comp) == 0)
{
string text = DateTime.Now.ToString() + statusName[i] + "故障!";
RecordWrite(text);//保存雷达故障状态
}
receiver = (UInt16)(receiver >> 1);
}
}
3.2 资料传输监控
遵义新一代多普勒天气雷达体扫模式为VCP21,6 min左右生成一个基数据,软件检测最新基数据文件生成时间与计算机系统时间的时间差Td,当Td大于阈值T(默认为10 min)时,认为没有新文件生成,如果连续5次检测都没有新文件生成,则通过多种方式进行报警,并在软件界面相应位置显示红灯并记录故障信息,监控流程如图4所示。
基数据、产品、状态文件在传输之后在本地保存有备份文件,通过检测最新备份文件时间与计算机系统时间的时间差来判断文件是否正常传输,流程与基数据生成监控相同。
图4 雷达资料传输监控流程Fig.4 The monitoring process of radar data transmission
资料生成和传输监控的关键代码如下:
bool datacheck(string item, string type)
{
bool isnew = false;//指示是否有新文件生成
string filepath=ReadconfigValue(item, "路径");文件路径
if (Directory.Exists(filepath))
{
FileInfo[] files = new DirectoryInfo(filepath).GetFiles(type);//产品目录
if (files.Length > 0)
{
List
listFile.Sort(new Comparison
{
return a.CreationTime.CompareTo(b.CreationTime);
}));//文件按时间顺序排序
if(listFile.Last().CreationTime.AddMinutes(10) > DateTime.Now)
{
isnew = true;
}
}
return isnew;
}
}
3.3 网络连接监控
雷达实时处理程序停止运行在雷达故障中占有较大比例,其故障原因较多,可能是网络延迟太大或暂时中断引起,也可能是计算机软硬件故障引起,还可能是雷达系统故障引起。网络延迟太大或暂时中断这类网络问题常常在一段时间后网络会自动恢复正常,而雷达则需要重启实时处理程序之后才能恢复正常。造成网络延迟大和暂时中断的原因很多,包括某个网络节点交换机性能不稳定、计算机病毒和局域网被攻击等,此类故障的处理也较为困难。因此,实现对网络连接状态的自动监控并对网络故障实时记录和报警非常重要。雷达监控软件每隔1 s检测网络连接情况,网络不通时实时记录,当网络断开时间大于2 min时,通过多种方式进行报警。
3.4 雷达资料管理
为保证雷达业务软件的正常运行,防止大量历史资料造成软件运行速度变慢,甚至软件运行异常,需要对多余的垃圾文件及时清理。需要管理的资料主要有:原始雷达基数据、格式转换后的存档雷达基数据、基数据传输后的本地备份文件、23类雷达产品传输后的本地备份文件、雷达状态文件传输后的本地备份等,各类资料单独管理,软件可通过配置文件设置是否需要删除及需要保留的文件数。格式转换后的存档雷达基数据以“archive2.***”为文件名存储,其中“***”从001开始从低到高依次变化,当到达999之后,将不再生成格式转换后的存档基数据,导致上传不成功。由于存档基数据需要实时上传,如果删除时间太频繁会影响资料传输,因此设置为每天08时30分定时删除。为防止监控软件出现故障导致资料未能及时删除,在每个检测时段检测存档基数据文件个数,如果文件个数大于800时,删除全部存档基数据文件。对雷达原始基数据、产品和传输资料的备份文件则在每个检测时段检测文件个数,当文件数大于设置个数N时,仅保留最新的N个文件,其它文件删除。
3.5 多种报警方式
雷达业务值班人员由于精力有限,无法实时查看各部分雷达软件的运行情况,甚至不能实时通过监控软件界面查看雷达运行状态。通过多种方式报警是及时发现故障最直接、最及时、最稳妥的方式。雷达监控软件实现了语音、短信、微信、电话等多种报警方式,可确保值班人员及时掌握雷达故障。
3.5.1 语音报警 语音报警是通过调用本地计算机的音频文件来实现语音提醒功能,其好处是简单、快捷,但要求值班人员必须在现场。
3.5.2 云端与本地互相监控 利用西部数码公司的云服务器实现与业务相关的互联网服务,在云服务器上开通ftp服务,将本地的监控状态文件实时传送到ftp服务器,同时在云端对雷达状态进行监控,当没有状态文件上传到ftp服务器时,提示可能存在网络故障,从而保证在局域网出现故障时,监控仍然可用。同时,本地的监控软件实时检测与云服务器的网络连接情况,网络不通时报警。
3.5.3 电话和短信报警 传统的电话自动呼叫功能开发较为繁琐,需要实现文字到语音的转换、电话呼叫逻辑程序编写、modem与运营商线路的对接等功能,开发成本高,时间长,且无法获取通话的状态信息。即时通讯云是近年来发展较快的通讯云服务,以通信为核心,连接各个应用,与传统通讯系统无缝对接,开发者在无需部署任何通讯硬件的情况下,仅用几行代码即可实现电话、短信、视频等功能,极大地提高了开发效率。在报警内容方面,考虑到“从文本到语音”(TTS)相关软件使用费用较高,监控软件采用固定报警内容的方式,使用免费的语音词条来实现。关键代码如下:
string ret = null;
CCPRestSDK.CCPRestSDK api = new CCPRestSDK.CCPRestSDK();
bool isInit = api.init("服务地址", "服务端口号");
api.setAccount("用户名", "密码);
api.setAppId("应用编码");
if (isInit)
{
Dictionary
ret = getDictionaryData(retData);
}
else
{
ret = "初始化失败";
}
3.5.4 微信报警 微信是最为常见的手机APP之一,通过微信报警可以提高监控软件的可用性。实现微信报警功能有两个技术方案:第1个方案是通过微信公众号向值班员账号发送报警信息,该方式需要获取公众号的开发权限,并且需要通过运营服务器中转;第2个方案是在微信APP中开启“QQ邮箱提醒”功能,同时将微信与QQ邮箱关联,通过向QQ邮箱发送报警邮件的方式实现。本监控软件使用第2个方案实现,即在监测到雷达或者网络异常时,发送邮件到值班员的QQ邮箱,微信会第一时间在相关联的值班员账户上进行提醒,达到报警的目标。
关键代码:
System.Net.Mail.SmtpClient client=new System.Net.Mail.SmtpClient("smtp.163.com");//确定smtp服务器地址。实例化一个Smtp客户端
string strFrom = string.Empty;
strFrom = "发送邮件地址";//生成一个发送地址
MailAddress from = new MailAddress(strFrom, "发件人", Encoding.UTF8);//构造一个发件人地址对象
MailAddress to = new MailAddress("收件人邮箱地址", "收件人", Encoding.UTF8);//构造一个收件人地址对象
MailMessage message = new MailMessage(from, to);//构造一个Email的Message对象
//添加邮件主题和内容
message.Subject = "邮件标题";
message.SubjectEncoding = Encoding.UTF8;
message.Body = "报警内容i";
message.BodyEncoding = Encoding.UTF8;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
message.BodyEncoding = System.Text.Encoding.UTF8;//设置邮件的信息
message.IsBodyHtml = true;//如果服务器支持安全连接,则将安全连接设为true。
//gmail支持,163不支持,如果是gmail则一定要将其设为true
client.EnableSsl = false;
//设置用户名和密码。
//string userState = message.Subject;
client.UseDefaultCredentials = false;
string username = "发件人邮箱";
string passwd = "发件人邮箱密码";
NetworkCredential myCredentials = new NetworkCredential(username, passwd);//用户登陆信息client.Credentials = myCredentials;
client.Send(message);//发送邮件
MessageBox.Show("发送成功!");//提示发送成功
及时发现雷达故障并快速处理是雷达值班机务人员的重要职责,雷达业务软件众多,通过人工监控雷达运行状态的方式易导致发现故障不及时、值班人员工作压力大等问题,监控软件实现对雷达运行状态、资料传输情况和网络连接状态进行自动监控,在2015年3月投入业务运行以后,报警信息及时准确,减少了雷达故障响应时间,减轻了值班人员的工作压力。雷达和网络故障记录信息是分析故障原因的重要依据,而雷达系统生成的原始状态文件只保留最新的雷达状态信息,监控软件实时保存雷达和网络故障信息,有助于快速判断故障原因,提高雷达维修速度。雷达业务软件众多,基数据和资料传输后的本地备份文件长时间累积会造成业务软件运行速度变慢,甚至运行异常,本监控软件具有资料管理功能,实现了在没有人工干预的情况下各业务软件的长时间稳定运行。气象部门业务系统繁多,如CMACast、遵义气象手机客户端等,如何保证这些系统的正常运行,及时发现故障,本监控软件的开发可为其提供一定的参考。
[1] 张骞, 陈海燕, 吕庆利, 等. 新一代天气雷达集成监控平台开发[J]. 现代雷达, 2016, 38(8):80-83.
[2] 郭春辉, 袁微, 周彦. CINRAD雷达运行状态监控系统的设计与应用[J].广东气象, 2016, 38(3):74-76.
[3] 张玲, 周红根, 郭一飞, 等.多普勒雷达实时数据传输监控与报警系统的研究[J].气象水文海洋仪器, 2015,33(3):22-25.
[4] 陈关清,王丽,甑廷忠,等. 新一代天气雷达质量考核与故障信息共享系统[J].贵州气象, 2013, 37(6):42-44.
[5] 张玲, 周红根, 郭一飞, 等.多普勒雷达实时数据传输监控与报警系统的研究[J].气象水文海洋仪器, 2015,33(3):22-25.
Design and implementation of a new generation weatherradar monitoring system in Zunyi
GUO Xiaochao,HE Zhoujian,YAO Chengyong,YAO Zhangfu
(Zunyi Meteorological Service, Zunyi 563002, China)
In order to timely monitor and alarm the radar running and data transmission status, based on the C/S software structure, radar monitoring system was designed by using C# programming language with Microsoft Visual Studio 2010 platform. The software is mainly composed of a monitoring module and alarm module, monitoring module monitor the radar running state by reading the binary state file, monitoring the data generation and transmission by the difference of file generation time and computer system time, at the same time, fault state was saved to analyze failure cause. Alarm module mainly realizes multiple alarm of voice, SMS, WeChat, telephone. Since it was put into operation in March 2015, the operation of the software is stable and reliable, and the alarm is prompt and accurate, which greatly shortens the response time of the personnel on duty. At the same time, the fault state information generated by the software monitoring can help to judge the cause of the radar fault and improve the efficiency of radar fault maintenance.
radar monitoring; data management; multiple alarm; radar maintenance
1003-6598(2017)01-0064-05
2016-09-29
郭晓超(1983—),男,工程师,主要从事雷达机务保障和雷达产品应用工作,E-mail:gxiaochao@163.com。
雷达和雨量计联合估测降水技术研究(黔气科合KF[2015]03号)、遵义市冰雹监测预警技术研究(遵气科合KF[2016]01号)和遵义市暴雨预报物理量指标研究(遵气科合KF[2016]04号)。
TP311.52
B