符凤平,冯新建,叶 帮
(贵州省安顺市气象局,贵州 安顺 561000)
地(市)级地面自动站资料异地备份监控系统
符凤平,冯新建,叶 帮
(贵州省安顺市气象局,贵州 安顺 561000)
系统采用C/S软件体系结构、Visual Basic 6.0编程语言、API函数等技术,实现对地面自动站资料异地备份情况的实时监控、报表输出及自动补传功能。充分利用已建成的省、地、县光纤通信网络,实现对所属地面自动站资料的异地备份情况进行多级实时监控,并将监控结果中未正常备份的自动站资料信息分类进行报表输出。自动监测分钟数据文件存放资料的最新时刻,输出监测信息报表。台站业务人员根据报表信息,对未正常或未及时备份的自动站资料,可按照分时段或按日期选择,及时进行缺误资料的自动补传。系统应业务需求而设计,操作简便,运行稳定,在Windows XP和Windows Server 2003操作系统环境下均运行正常。自投入业务运行以来,有效提高了地面自动站资料异地备份完整率和及时率。
异地备份;实时监控;API函数;Excel报表
自地面自动站在各级气象台站投入业务运行以来,为天气预报业务、气象服务提供了丰富实时的观测资料。为了更好地利用地面自动站系统资源,充分发挥地面自动站的现代化效益,相关技术人员在这方面作了大量的开发工作,如由贵州省气象局与黔西南州气象局联合开发的《地面自动气象站资料自动备份及处理系统》,系统充分利用已建成的省、地、县光纤通信网络,采用FTP文件传输方式,分别在省、地、县三级建立相应的处理程序及FTP服务器,实现地面自动站资料的异地备份。自该系统投入业务运行以来,在对地面自动站气象资料的管理、完整性、准确性和安全性等方面发挥了重要作用,为天气预报服务和气象科研提供了准确可靠的气象数据。
为了更好地完善自动站资料的管理,使自动站资料异地备份更加完整与及时,开发了适合地市级以下气象部门使用的《市(县)级地面自动站资料异地备份监控系统》(以下简称《异地备份监控系统》),系统主要包括地(市)级地面自动站资料异地备份监控子系统和县级地面自动站资料异地备份监控子系统,充分利用已建成的省、地、县光纤通信网络,实现对所属地面自动站资料的异地备份情况进行多级实时监控,并将监控结果中未正常备份的自动站资料信息以Excel表格形式分类进行报表输出。自动监测分钟数据文件存放资料的最新时刻,将相关信息输出到报表中,以便补传。对未正常或未及时备份的自动站资料,实现分时段或按日期选择进行补传。地县级业务人员可根据报表信息,及时进行缺误资料的自动补传,大大简化繁琐的人工操作。业务管理部门可及时掌握自动站资料备份情况,根据该表提供信息,督促资料补传,确保地面自动站资料备份更加及时与完整。系统按照业务需求设计,具有一定的实用性。
《异地备份与处理系统》全名为《地面自动气象站资料自动备份及处理系统》,2009年3月在贵州省各级气象台站投入业务运行。该系统主要由县级、地(市)级、省级3部分的多个程序组成。县级主要包括地面自动气象站资料自动备份及报警程序、气象自记纸扫描备份程序,地(市级)主要包括地面自动气象站资料自动处理及报警程序、FTP服务器软件,省级主要包括地面自动气象站资料监测报警程序、FTP服务器软件。
利用已建成的省、地、县光纤通信网络,采取FTP文件传输方式进行地面自动站资料的异地备份。各县级气象台站使用自动备份程序和气象自记纸扫描备份程序,将地面自动站资料自动备份到市级FTP服务器。在市级服务器端,每个县级地面自动站拥有一个和本地相同的目录,目录结构和各自动站主目录结构相同。市级气象台站通过使用自动处理传输程序,将地面自动站资料自动备份到省级FTP服务器。在省级服务器端,目录结构按照地面自动站资料类型建立,与市、县两级不同,如自记纸文件目录为paper,即所有台站的自记纸文件需传输到该目录;分钟数据Z文件目录为Z,即所有台站的Z分钟数据传输到该目录。
县级地面自动站资料异地备份的资料几乎包括自动站主目录下的所有内容,即OSSMO 2004(自动站默认安装目录)目录下所有子目录AwsSource、BaseData、ErrorTxt、Log、Paper、ReportFile、SYNOP、SysConfig、temp、辐射 H、辐射 R 等。
市级地面自动站资料异地备份资料主要包括市属各县自动站的所有资料,主要包括分钟数据、自记纸、A、J、B、辐射H和辐射R、系统日志等,市级服务器和县级自动站存放资料的目录结构及文件名相同,但省、市两级服务器存放自动站资料的目录结构不同,少数资料文件名有所改变,如log目录下的 NF和 OSSMO文件,如原文件名分别为“NF20110527.log”和“OSSMO-201105.log”,备份到省级服务器后,文件分别更名为“NF20110527-57806.log”和“OSSMO-201105-57806.log”。
在局域网和省、地、县光纤通信网络保持畅通的前提下,采取C/S软件结构,以Visual Basic 6.0语言为开发工具,利用VB网络通信技术和API函数编制而成。经过业务测试,在 Windows XP和Windows Server 2003操作系统环境下均运行正常。
系统主要包括地(市)级异地备份监控子系统和县级异地备份监控子系统。图1为对市级服务器异地备份资料的监控信息表,图2为系统输出的分钟数据信息监控表。
系统主要包含地(市)级、县级两个监控子系统。县级监控子系统实现对本地备份到市级服务器上的资料进行实时监控,对未正常备份的资料信息进行报表输出,提供资料补传功能。地(市)级监控子系统实现对所属各自动站资料的备份情况进行两级实时监控,将监控结果中未正常备份的自动站资料以报表形式输出。自动监测分钟数据文件存放资料的最新时刻,将监测信息输出到报表中,以便补传。同时对未正常或及时备份的自动站资料,实现分时段或按照选择日期进行补传。两级实时监控主要包括本地监控和远程监控,本地监控指对所属各自动站备份到地(市)级FTP服务器的资料进行监控,远程监控指对所属各自动站备份到省级FTP服务器的资料进行监控。地(市)级监控子系统主要实现功能见图3所示:
图3 地(市)级监控子系统主要实现功能
对于地(市)级和县级两个子系统,在实现各个功能相同的模块时,采用技术方法相同,如对于县级子系统,资料监控部分主要实现对本站异地备份到地(市)级服务器上的所有资料进行实时监控,但由于各级目录结构和文件名不同,造成编程代码有所不同。这里主要以地(市)级监控子系统为例,简述各模块的实现方法。
3.4.1 资料监控 对于地(市)级监控子系统,主要实现对各县备份到地(市)级的地面自动站资料以及地(市)级备份到省局服务器的地面自动站资料进行实时监控,即实现两级监控:本地监控和远程监控。监控结果分别以红、黄、绿3种颜色的圆形按钮清晰地显示于系统界面,其中红颜色表示文件未备份成功,黄颜色表示文件存在但其长度为零,绿颜色表示文件备份正常。
由于资料类型不同,更新时间不同,部分资料每月一份文件,如A、J、B等,部分资料每日有更新,如自记纸、分钟数据等文件。为缩短程序运行时间或对网络资源的占据时间,对日变化资料可单独实现监控。
3.4.1.1 本地监控 本地监控主要实现对各县备份到地(市)级服务器的资料进行监控。利用局域网络,将各县备份到地(市)服务器的地面自动站资料目录进行只读共享,只要本系统运行于局域网内任何一台计算机上,即可实现对自动站资料备份情况进行监控。
在进行此部分的程序设计时,首先建立一个存放自动站站号的文本文件zm.txt,每行一个站号,然后编制函数,实现对各圆形按钮颜色的判断与定义。使用循环语句读取文件zm.txt,每读取一行,即读取一个站号,就对属于该站的所有资料备份情况进行判断。当资料文件不存在时,读取相应圆形按钮的红颜色函数。当资料文件长度为零时,读取相应圆形按钮的黄颜色函数。当资料文件存在且长度不为零时,读取相应圆形按钮的绿颜色函数。读完文件,即实现对所有台站资料的监控。颜色读取函数主要根据资料和颜色类别而建立,使用选择判断语句Select Case,根据站号设置按钮颜色,从而得出监控结果。
3.4.1.2 远程监控 远程监控模块主要实现对地(市)级备份到省级FTP服务器上的自动站资料备份情况进行实时监控,此部分功能主要使用API函数实现。首先使用InternetOpen设置网络连接环境,然后使用InternetConnect与省级FTP异地备份服务器进行连接,再使用循环语句读取站号文本文件,每读取一个站号,就分别运用FtpSetCurrentDirectory和 FtpFindFirstFile 2个API函数,对与该站有关的所有资料进行监控判断。当改变监控目录时,需事先利用API函数InternetCloseHandle关闭FtpFindFirstFile函数创建的句柄 。
3.4.2 报表输出 分别对本地和远程服务器上的自动站异地备份资料按时段输出有误信息报表,自动监控分钟数据文件最新时次的相关信息并写入报表。报表输出格式为Excel文件,这里的有误信息主要指文件未上传、文件存在但其长度为零的自动站资料相关信息,报表分为为5栏,分别为日期、站名、文件类型、文件名、监控情况等。
本地监控基于局域网,实现对自动站目录各类资料的监控统计。远程监控基于省、地、县光纤通信网络,实现对远程FTP异地备份服务器存放资料的监控统计。此模块在程序设计时,主要采取以下技术方法:
①自动生成Excel报表文件名。
②设置变量j作为报表行参数,赋初值为3,表示从表格的第3行开始填写信息。
③建立excel_1函数,首先创建excel对象,打开excel文件,设置活动工作表,然后填写监控信息。每当读取一个站号,就对其所有自动站资料进行判断,当有文件未上传、文件存在但其长度为零时,调用该函数写入相应的自动站资料相关信息。
④建立baobiao函数,设置报表初始状态,如单元格的列宽、颜色、标题、列名等,并根据报表行参数j值添加表格的网格线。
⑤使用双层循环语句。外层循环使用For…Next语句,设定日期变量i,其值表示从选择当前日期所属月的1号到当前日期。内层循环使用Do While…Loop语句,读取站号文本文件,每当读取一行文件内容,即读取一个站号,就对其所有自动站资料进行判断,读完文件,即对i值所在当天所有站资料监控完毕,然后监控下一天的信息。
⑥在实现远程监控信息报表输出时,建立一函数自动调用执行DOS下的FTP命令,避免使用shell函数调用FTP命令时带来异步执行问题[2]。
3.4.3 资料补传
分为当天资料上传和时段内资料上传两部分。选择系统界面中的“当天资料上传”按钮,将自动上传当前选择日期下所有自动站资料到省级服务器相应目录。选择“时段内资料上传”按钮,将自动上传从当前选择日期所在月的1号到当前日期的所有自动站资料到省级服务器相应目录。此模块主要采用以下技术方法:
①调用DOS下的FTP命令
调用MS-DOS方式下的FTP命令,连接远程服务器成功后,利用PUT命令进行各类资料的补传。当上传的资料需要更换文件名时,采用“PUT sfile dfile”的命令形式,其中sfile表示本地文件名,dfile表示上传后更改的文件名。将所有操作命令写入一个文本文档中,然后通过调用自定义的函数,即可执行所有DOS命令操作。
②使用多层循环语句
对于时段内资料上传,其实现方法也使用双层循环语句。外层循环使用For…Next语句,设定日期变量i,其值表示从选择当前日期所属月的1号到当前日期。内层循环使用Do While…Loop语句,每当读取站号文件一行内容,即读取一个站号,可补传该站所有资料,读完文件,即对i值所在当天所有站资料上传完毕,然后补传下一天的信息。
3.4.4 分钟数据监控
自动站分钟数据一共分为6类,如W、Z、P、R、T、U等文件,位于AwsSource子目录下,每类分钟数据每个月形成一个文件,其内容每小时更新一次。为了使分钟数据备份完整,系统实现对分钟数据信息最新时次的自动监控,并将监控信息输出到报表中。此模块主要采取以下技术方法:读取站号文件zm.txt,每读取一站,即分别读取该站6个分钟数据文件。读取每个分钟数据文件时,需要分别打开文件,从文件内容中查找120个“-”字符的起始位置,如果查找结果为5,则说明资料备份不完整,读取相关信息如日期、时次、站名、文件名等,将其写入Excel报表文件。如果结果不为5,则不读取任何信息。
系统本着业务需要而设计,安装操作较为简便,运行安全稳定。自投入业务运行半年以来,经过多次检验,均能准确成功地实现各部分功能如资料监控、报表输出、自动补传等,提高了地面自动站资料的异地备份完整率和及时率,为各项气象业务服务和气象科研开发提供及时、准确、可靠的资料,有效改善资料缺失给各项工作带来的不便。
各地面气象自动站所处地理位置比较分散,为使地面自动站资料异地备份更加完整与及时,提高资料备份效率,不仅需要各有关部门之间的相互配合,而且在软件开发方面也需要不断完善,使其自动化程度更高,操作和维护更为简便。
[1] 卞志强.Visual Basic网络程序设计[M].北京:人民邮电出版社,2003:352.
[2] 罗刚君.Excel VBA程序开发[M].北京:电子工业出版社,2009:205.
P415.1+2
B
1003-6598(2011)06-0040-04
2011-11-17
符凤平(1969-),女,高工,主要从事信息网络与技术保障工作。