基于.NET框架的桥梁健康监测系统自诊断功能的实现

2012-10-22 07:24王鸣辉
关键词:诊断系统工控机网络设备

王鸣辉

(中铁大桥局集团武汉桥梁科学研究院有限公司,湖北 武汉 430034)

0 引言

桥梁健康监测系统是对桥梁的状态进行长期不间断地监测,并对桥梁的整体状态进行评估和分析,及时预报桥梁结构的安全隐患,以便为桥梁的维护和保养提供相应的数据和依据的一套系统。由于大部分系统都是采用Windows操作系统,因此本文所阐述的自诊断系统也仅限于Win⁃dows操作系统。一般的桥梁健康监测系统的组成结构如图1所示。

图1 桥梁健康监测系统结构图

由图1可以看出,桥梁健康监测系统是由各种数据的采集子系统与数据处理子系统的集成,不同的桥梁健康监测系统会根据需要设计不同的数据采集系统和数据处理系统。而这些系统的集成主要是通过相应的工控机、服务器组成的局域网以及具有相应功能的软件来实现的。桥梁健康监测系统运行的稳定性直接关系到桥梁维护和保养的决策。因此在桥梁健康监测系统中有必要增加一个系统自诊断功能,以此来判断系统本身的运行是否正常。

1 系统自诊断所包含的主要功能及主要技术

由图1可知在健康监测系统中包含多个采集工控机和服务器,这些工控机和服务器是系统的核心,系统自诊断程序的主要作用是监测这些设备是否工作正常。因此系统自诊断程序主要监测以下几个项目:

1)各个工控机、服务器和网络设备是否在线(Ping各个网络设备的IP来判断是否在线);

2)各个工控机和服务器上的指定程序是否在运行;

3)各个工控机和服务器上的存储空间是否足够;

4)各个采集子系统的采集数据量是否正常。

1.1 网络设备的在线监测

监测各个网络设备是否在线,实际上就是按照一定的时间周期来Ping各个网络设备的IP地址。如果各网络设备都能够Ping成功,则不发出报警信息;否则就将Ping失败的IP通过短信或者其他形式发送给维护人员。

NetCommunication.dll中封装了Ping IP地址的功能。在Visual Studio建立的Windows应用的项目中添加NetCommunication.dll引用,然后在代码中添加命名空间,最后调用类CPing类中的静态方法CmdPing(),并将要Ping的IP作为字符串类型的参数带入到该方法即可。如果Ping成功则返回true,否则返回false。具体代码如下:

1.2 各个工控机和服务器上的指定程序的监测

监测各机器上指定的程序是否在运行,实际上是在指定的网络设备都在线的基础上,对各个设备中指定的进程进行监测。如果指定进程存在,则不发出报警信息;否则,通过短信或者其他形式将信息发送给维护人员。

在System.Management的命名空间中,提供对大量管理信息和管理事件集合的访问,这些信息和事件是与根据Windows管理规范(WMI)结构对系统、设备和应用程序设置检测点有关的。应用程序和服务可以使用从 ManagementObject⁃Searcher和ManagementQuery派生的类,查询感兴趣的管理信息,例如有哪些进程在运行、在磁盘上还剩多少可用空间等等[1]。

使用ManagementObjectSearcher派生类查询指定机器上的进程可按照以下步骤进行:

1)初始化ConnectionOptions类,并设置User⁃name和Password属性为指定机器的用户名和密码。设置Authority属性为ntlmdomain:DOMAIN,使用NTLM身份验证。NTLM是Windows NT早期版本的标准安全协议,Windows 2000支持NTLM是为了保持向后兼容,因此也可用于XP系统[2]。NTLM是Windows 2000内置3种基本安全协议之一。具体代码如下:

2)初始化ManagementScope类,并将目标IP作为参数带入构造函数,代码如下:

3)调用派生类ManagementObjectSearcher中的Get()方法获得想要得到的信息,如想要得到所有的进程名,则在初始化ObjectQuery类的时候带入参数”SELECT*FROM Win32_Process”即可。具体代码如下:

经过以上3个步骤,可以得到指定的机器中运行的全部进程的信息。这些信息都存储在实例queryCollection中。将queryCollection强制转换成ManagementObject后,读取 queryCollection[“name”]集合中的各个元素即可得到进程名称。

1.3 各个工控机和服务器上的存储空间的监测

监测各机器上的存储空间,实际上是在指定网络设备都在线的基础上,对各个设备中磁盘的剩余空间进行监测。如果剩余空间足够,则不发出报警信息,否则就通过短信或者其他形式将信息发送给维护人员。

在System.Management的命名空间中,也可通过 ManagementObjectSearcher和 ManagementQue⁃ry派生的类获取磁盘的各种信息,方法同1.2节中所介绍的大致相同,只是在第三步中,将初始化ObjectQuery类时带入的参数改为”select FreeSpace,Size,Name from Win32_LogicalDisk where DriveType=3”即可。最后分别将代表驱动器名称、驱动器存储总容量和驱动器剩余容量的queryCollection[“name”]、queryCollection[“Size”]和 queryCollection[“FreeSpace”]集合中的元素分别读取即可。

1.4 各个采集子系统的采集数据量监测

桥梁健康监测系统需要测量桥梁的各种状态数据,如主梁位移、温度、塔偏、应力、索力、振动等。每种数据根据分析的需要会设置不同的采集频率,如主梁位移的频率一般是1 Hz,温度数据的频率为0.017 Hz,也就是1 min一次,动应变的频率一般是20 Hz或者更高[3]。因此在单位时间内每种数据的数据量是不同的。当健康监测系统的某个采集子系统发生故障的时候,往往会引起数据量的不足,因此通过对单位时间内数据量的统计,也可作为判断监测系统是否正常运行的一个依据。

以主梁位移数据为例。主梁位移数据的采样频率是1 Hz,因此1个小时内的数据量应该是3600条。系统自诊断程序将利用SQL语句中模糊查询的功能,获得原始数据库中指定的一个小时内的所有记录的条数,然后与3600相比,如果比值大于规定的一个值(如95%或者更高),则证明主梁位移采集系统正常。

2 系统自诊断的实现方法

2.1 开发平台

整个系统在Windows操作系统下,采用Visu⁃al Studio.NET 2008进行开发。数据库采用SQL 2005。

2.2 实现方法

为了使自诊断程序有一个良好的人机交互界面,使用了TreeView控件,用于编辑相应的信息,使用了ListView控件来显示自诊断的结果。系统界面如图2所示。

用户通过界面对树状菜单上的各个节点进行添加、删除、编辑等操作。点击左下角的开始按钮,自诊断系统便开始运行各个诊断功能,并将诊断的结果显示在右边的ListView控件中。如果需要定时进行自诊断,则可使用Timer控件调用这些功能。

图2 系统界面图

如果自诊断系统检测到某些问题,则会将报警信息写入数据库的指定表中(见图3)。

图3 报警信息存储界面

报警信息写入数据后,则可以通过报警界面或者短信、或者其他方式通知维护人员进行维修。

3 结语

系统自诊断是一个较复杂的系统。本文针对桥梁健康监测系统的自诊断功能,阐述了系统自诊断的基本内容和实现方法。随着桥梁健康监测系统的不断发展,其地位在桥梁的管养中越来越重要。自诊断系统作为健康监测系统的一部分,并不独立于健康监测系统之外,其功能是保障健康监测系统的正常运行。一个成功的自诊断系统,可以使系统的维护工作有的放矢,提高效率。目前系统的自诊断功能还处在起步阶段,随着新技术和新方法的应用,系统的自诊断功能会越来越完善。

[1]Ferguson J,Patterson B.C#宝典[M].盖江南,朱海绫,王勇,等译.北京:电子工业出版社,2002.

[2]汤涛..NET企业级应用程序开发教程[M].北京:清华大学出版社,2005:312.

[3]范立础.桥梁工程[M].北京:人民邮电出版社,1979.

猜你喜欢
诊断系统工控机网络设备
网络设备的安装与调试课程思政整体设计
一种基于C# 的网络设备自动化登录工具的研制
定制工控机在老旧线路计算机联锁设备中的应用
区间轨道电路智能诊断系统的探讨
中压电子束焊工控机Windows NT系统文件丢失故障的修复方法
设备在线诊断系统在唐钢的建设与应用
连铸板坯质量在线诊断系统的应用
基于OPC跨平台通信的电机监测与诊断系统
中国工控机市场新Style
新汉 前插拔CoreTM-i系列无风扇工控机