APP下载

县级自动站监控系统研究

2017-03-27彭显锋杜龙彩

中低纬山地气象 2017年1期
关键词:线程备份指令

彭显锋,王 桥,杜龙彩

(1.贵州省兴仁县气象局,贵州 兴仁 562300;2.贵州省贵阳市气象局,贵州 贵阳 550001)

县级自动站监控系统研究

彭显锋1,王 桥1,杜龙彩2

(1.贵州省兴仁县气象局,贵州 兴仁 562300;2.贵州省贵阳市气象局,贵州 贵阳 550001)

随着气象观测业务的现代化,观测设备、业务软件、网络故障以及供电系统不稳定已成为影响观测质量的主要因素。利用计算机对观测系统进行自动监控,发现异常及时通知工作人员处理,可有效提高业务质量和工作效率。该文介绍了“县级自动站监控系统”的主要功能和工作原理,并重点对多线程编程、数据库访问、GSM/GPRS Modem的使用、文件自动备份等方面用到的关键编程技巧进行了详细说明。

自动站;监控系统;工作原理;编程技巧

1 引言

随着气象综合观测业务的现代化,人工观测已基本被自动观测代替。但自动观测系统结构复杂,出现故障的概率较大。当系统出现故障后,一般工作人员很难第一时间找出原因,并及时排除故障。据统计,设备、软件、网络故障以及供电不稳定对业务质量的影响,已超过人为原因,成为影响观测质量的主要因素。

县级自动站监控系统能对影响综合观测质量的主要因素进行自动监控,发现异常及时报警,以便故障得到及时处理,在网络主通道中断时,自动连接3G、Vpn从辅通道上传数据,能有效提高业务质量和工作效率。

2 系统主要功能及工作原理

为了实现系统的快速开发和应用,并适用于所有自动站业务计算机系统,本软件在Vs2012平台上基于 .NET Framework 4 开发。

设备功能及布局如“图1”:

图1 设备功能及布局图Fig.1 Equipment function and layout

2.1 系统功能概述

本系统适用于所有气象台站地面气象自动站业务平台。能对自动站计算机、自动站软件、采集器是否正常工作,网络、市电是否中断,长Z文件数据是否有缺测、是否进行人工质控、上传是否及时等进行判断。发现异常后,根据情况的紧急程度,通过文字、音箱、发送短信或拨打电话报警。还能通过短信远程获取系统监控情况、查询部分观测数据。当网络主通道中断时,能自动连接3G、Vpn从辅通道上传数据。系统还具有自动站数据自动备份、分发省局告警信息功能。

2.2 工作原理

2.2.1 判断市电、自动站计算机工作状态 利用两台计算机(一台为使用UPS供电的自动站主机,一台为直接连接市电的其它计算机)互相监测,不仅能达到设计目标,还能使该系统运行更为可靠:

通过端口扫描(139号端口)的方式,自动站主机通过检测另一台计算机是否在线来确定市电是否中断,另一台计算机以同样的方式判断自动站主机是否正常工作;

两台计算机通过参数传递,确定对方计算机上的综合监测程序是否都已启动运行。

2.2.2 判断网络是否连通、自动站软件以及采集器是否正常工作

①通过扫描服务器端口,检测“自动站”计算机与“报文上传服务器(IP:10.203.72.30)”的连通状态,确定网络是否正常。

②通过检查业务软件(采集、传输、业务软件)是否在进程列表中、分钟数据文件是否得到更新,综合判断自动气象站软件及采集器工作状态。如业务软件未运行,通过Process.Start命令将其启动。

2.2.3 监测长Z文件是否上传、是否进行质控、数据是否有缺测。

①定时检查传输日志,判断长Z文件是否已及时上传;

②通过长Z文件第1行的“质控码”,判断需要人工质控时段的长Z文件是否经过人工质控;

③根据台站观测项目设置情况,判断长Z文件中的当前时次应该观测的项目数据是否有缺测。

2.2.4 大风监测 目前,当出现大风时,新型自动站不会自动报警。为避免迟发、漏发重要天气报,本系统通过分析分钟数据,判断是否有大风出现,如发现某日风速第1次达到17 m/s、24 m/s,会立即报警。

2.2.5 自动站数据实时自动备份 利用文件系统监视控件,对指定的目录进行监视,当发现被监视的目录中新增文件、文件属性(大小、修改时间等)发生变化时,就把相关文件复制到目标磁盘,实现有选择的自动站数据实时备份。

2.2.6 自动连接3G无线网络和Vpn 通过Shell、Process.Start指令调用已有的网络连接,实现自动连接与断开3G和Vpn。

2.2.7 手机报警、远程短信获取系统监控状态和观测数据 为了确保在网络中断的情况下,能发出短信和拨打电话报警,需采用独立、可靠的通信设备。本系统采用了使用“TC35i”芯片的GSM/GPRS Modem(简称短信猫,下同)通过USB接口与计算机连接,通过AT指令实现自动收发送短信和拨打电话。

通过手机向短信猫发送短信(即事先约定的指令),自动站主机读取该短信后按要求进行相关统计,并通过AT指令将统计结果以短信方式发送给手机。

3 关键编程技巧诠释

3.1 多线程编程

本系统实现的功能较多,且大多数功能需同时执行,网络状态检查、手机通信、网络通信、文件上传、数据自动备份等功能耗时较多,使用单一的线程无法实现。因此,本系统采用多线程技术,耗时较多的功能分别另开线程实现,主程序只需按一定周期获取运行结果并开启线程完成相关任务,不仅系统运行的可靠性得到了保证,系统运行也会很流畅。

在线程的使用过程中,需注意以下两点:

①当一个线程未结束时,不能再次开启该线程,不然会出现同一线程的多个副本同时访问同一数据或设备的情况,导致数据访问或设备使用冲突的现象。因此,需判断线程运行状态再决定下一步执行的功能。

②退出或重新启动系统时,应安全关闭已开启的所有线程,以释放内存资源,并可避免同一线程多次启动。

3.2 SyncLock 语句的使用

为简化系统结构,本系统所有相关数据,如系统参数、待备份文件信息、报警信息、报警日志等,均保存在同一个Mdb数据库中。程序采用多线程实现不同的功能,因此可能出现多个线程同时访问数据库同一数据表而产生异常。

使用SyncLock语句可确保多个线程不在同一时间执行相同的语句块,避免数据库访问冲突。下面以访问Basedata.mdb数据库为例说明其使用方法:

Imports System.Data.OleDb '引用对象

Private DataBaseLock As New Object'声明变量

Private Sub AddOrSaveRecord(ByVal SqlStr As String)'SqlStr为SQL语句字符串

SyncLock DataBaseLock

Try

Conn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source= "D:Basedata.mdb")

Conn.Open()

Dim SqlCmd As OleDbCommand

SqlCmd = New OleDbCommand(SqlStr, Conn)

SqlCmd.ExecuteNonQuery()

Catch ex As Exception

MsgBox(ex.Message.ToString)

Finally

Conn.Close()

End Try

End SyncLock

End Sub

当一个线程调用AddOrSaveRecord过程后, SyncLock就会防止其它线程进入SyncLock与End SyncLock之间的语句块,直到当前线程执行完该语句,其它线程才能使用该语句块。

3.3 运行异常处理

该系统程序需24 h不间断稳定运行,但任何一个异常都可能导致程序停止工作。由于系统功能较为复杂,难免出现异常情况。因此,除了认真检查调试程序,主动消除程序的逻辑错误外,还必须在程序中进行异常处理,捕获并处理运行时可能产生的各种错误,保证程序在任何情况下都能正常运行。

3.4 使用短信猫的注意事项

短信猫工作是否正常,是手机报警和远程短信获取监控信息成败的关键。计算机通过AT指令控制短信猫收发短信和拨打电话,但指令使用不当、设备连接异常或设备使用环境信号差,常常会导致通信失败。为保证短信猫的正常工作,需注意以下几点:

①部分AT指令的执行耗时较多(如打开设备、读取短消息、清除缓冲区等),如果连续执行多条指令,即使指令正确,也可能会得到错误的结果。因此,使用AT指令得不到正确的结果时,应考虑指令执行时间不足的问题,在执行一条指令后,进行适当的延时等待,再执行后面的指令。举例如下:

SerialPort1.Open()'打开设备端口

System.Threading.Thread.Sleep(200)'延时0.2 s

SerialPort1.WriteLine("AT+CMGL=ALL" & vbCrLf)'读取所有短消息

System.Threading.Thread.Sleep(5000)'延时5 s

Dim Txt As String = SerialPort1.ReadExisting.ToString()'得到短消息内容

上述程序在执行SerialPort1.Open后,如不延时,则后面的语句均可能无法正常执行。在执行SerialPort1.WriteLine("AT+CMGL=ALL" & vbCrLf)后,如等待时间过短,则读取的短消息内容可能不完整。

②短信存储空间管理

短信猫接收信息的条数有限,不同生产批次的短信猫信息的存储位置也不尽相同,通信运营商还会不定时发送一些短信给短信猫。因此,要保证软件的通用性并能准确接收和读取短信,程序必须对短信的存储位置进行设置,并定时删除已经读取的信息。

可以用AT+CPMS指令设置、读取短信存储位置。

可以用AT+CMGD指令删除短信。该指令可以删除一条指定的短信,也可以按已读取、未读取、全部信息等分类删除短信。但不是所有短信猫都支持全部删除方式,应针对不同的短信猫分别测试。

③短信猫的使用环境通信信号差或设备连接不当,可能导致通信失败。因此,有必要定时对设备连接状态、信号强度进行检查,发现通信设备故障及时提醒值班员处理。方法如下:

发送任意At指令到短信猫所在端口,如返回值中包含字符“OK”,说明通信设备连接正常;

通过"AT+CSQ"指令获取信号强度,执行 SerialPort1.WriteLine("AT+CSQ" & vbCrLf)的返回值“SerialPort1.ReadExisting.ToString()”即包含信号强度信息。

3.5 自动备份自动站数据

使用FileSystemWatcher控件对文件进行监视,可以找到发生变化(新增文件、大小或修改时间发生变化)的文件,实现有选择的备份文件,减少数据备份所需的时间。

在实际业务中,有时业务软件会几乎同时生成或更新多个文件,个别文件还比较大(达数百兆)的情况,同时复制多个文件将会降低复制的效率,并可能导致备份失败。为实现可靠备份,本系统先将需要备份的文件名登记到数据库表,再由专门的文件复制线程逐个备份。

4 系统使用现状

通过近半年的业务试运行,并对存在的问题进行了修正和完善,本系统于2016年6月30日正式投入业务运行。2016年9月1日截止,贵州省已有42个气象台站安装使用。据各台站使用后反馈的情况分析,系统运行稳定,各项功能均能正常使用,效果良好,达到了预期研究目标。

5 结束语

县级自动站监控系统的开发和应用,能对影响综合观测质量的主要因素,如自动站计算机、自动气象站软硬件、网络、市电等工作情况进行较为全面的监控。还提供了数据自动备份、自动连接备用网络上传数据等功能。有效地减少了业务人员工作量,提高了业务质量。但系统尚有改进和优化的空间,研发小组将努力探索,根据业务发展需要,不断改进和完善。

[1] 李黄.自动气象站实用手册(第1版)[M].北京:气象出版社,2007.

[2] Bill Sheldon,Billy Hollis,Rob Windsor,David McCarter等.NET 4.5与Visual Basic 2012 高级编程(第7版)[M].北京:清华大学出版社,2014.

[3] 钟静,李赟,陈海涛,等.基于SMS技术的气象报文监控设计与实现[J].贵州气象,2011,35(4):42-43.

[4] 汤宁,方斌,王娟.贵州省气象局实时业务管理及监控平台简介[J].贵州气象,2012,36(4):42-43.

[5] Zhang jianlou上传.TC35 TC35i AT指令手册. http://wenku.baidu.com/view/22efb7f4f61fb7360b4c652f.html(上传日期:2011年3月19日)

Research on monitoring system of automatic station at county level

PENG Xianfeng1,WANG Qiao1,DU Longcai2

(1.Xingren Meteorological Bureau of Guizhou Province,Xingren 562300, China;2.Guiyang Meteorological Bureau of Guizhou Province, Guiyang 550001, China)

With the modernization of meteorological observation, observation apparatus, business software, network fault and power supply system instability have become the major factors affecting the quality of observation. Using the computer to observe the system for automatic monitoring, and timely notice to the staff to deal with abnormity, can effectively improve the service quality and efficiency. This paper introduces the main functions and working principle of the "automatic station monitoring system ", and focus on discussing the key programming techniques multi thread programming, database access, using of GSM/GPRS Modem and file automatic backup in detail.

automatic station monitoring system; working principle; programming skills

1003-6598(2017)01-0081-04

2016-10-26

彭显锋(1975—),男,副高,主要从事综合气象业务工作,E-mail:780398175@qq.com。

贵州省气象局气象科技开放研究基金项目(黔气科合KF[2016]04号)。

TP311.52

B

猜你喜欢

线程备份指令
VSAT卫星通信备份技术研究
基于C#线程实验探究
《单一形状固定循环指令G90车外圆仿真》教案设计
创建vSphere 备份任务
基于国产化环境的线程池模型研究与实现
Windows10应用信息备份与恢复
线程池调度对服务器性能影响的研究*
旧瓶装新酒天宫二号从备份变实验室
中断与跳转操作对指令串的影响
一种基于滑窗的余度指令判别算法