APP下载

测震仪器健康状态数据交换平台的设计与实现*

2013-12-14董一兵高景春刘胜国毛国良孙贵成

地震研究 2013年3期
关键词:采集器台网消息

董一兵,高景春,刘胜国,毛国良,孙贵成,刘 新

0 引言

地震计和地震数据采集器是测震台网技术系统的关键设备,它们的运行状态直接决定着台网的监测质量。在运行过程中,受到外部环境 (供电、GPS等)和仪器自身 (元器件的物理性质、系统软件等)等多种因素的影响,地震计和地震数据采集器可能出现一些异常情况,例如,地震计发生零位偏移,数据采集器出现时间错误等。这些异常如果得不到及时处置,轻则影响观测数据的质量,重则导致数据丧失使用价值。目前主流的数据采集器均提供了健康状态信息查询服务,用户可以通过专用客户端软件查询数采的电压、温度、钟差、地震计机械零位等状态参数。现有的研究成果并未充分利用数采的健康状态服务(陈吉锋等,2012)。针对这种现实需求,我们为测震台网设计、开发了一套测震仪器健康状态数据交换软件平台。针对不同类型数据采集器输出健康状态信息方式的差异,分门别类地设计开发了客户端程序,实现了与多种数采的网络数据通信功能。在开发过程中,引入开源的消息中间件ActiveMQ作为统一交换平台 (Snyder,2011),为仪器健康状态的交换共享提供了统一的数据接口,便于实现系统与新业务的无缝集成,增强了系统的弹性和可扩展性。整套方案具有性能优异、易于管理和扩展的特点,具有良好的推广应用前景。

1 需求分析

1.1 健康状态的定义

测震仪器的健康状态 (State Of Health,简称SOH),是关于仪器运行状态的信息,由数据采集器输出的一系列物理量及其取值来描述。目前,在各区域测震台网应用比较普遍的仪器包括:港震机电的EDAS24系列数据采集器和BBVS系列地震计,Guralp的CMG-DM24数据采集器和CMG-3ESPC地震计,Kinemtrics的Q330系列数据采集器和STS系列地震计等。这些仪器厂商对SOH信息的定义、编码方式和传输协议均有所不同。本着求同存异的原则,我们初步拟定了11个比较有共性的SOH参数,分别是:数据采集器的供电电压、输出电压、电瓶电压、机箱温度、时间误差、频率误差、内存总空间、内存可用空间,地震计A的垂直向零位、北南向零位、东西向零位。

1.2 功能和性能需求

系统由3个松散耦合的功能模块构成:①SOH接收与发布模块,② ActiveMQ消息服务器,③SOH订阅与应用模块。其中,模块 ① 的功能是:与多部数据采集器建立并发连接,定时接收SOH数据,并通过ActiveMQ的消息队列进行发布。模块②的功能是:作为统一交换平台,管理SOH消息队列,是系统实现分布式应用的关键环节。模块③的功能是:订阅SOH消息,实现自定义的业务应用。

系统应满足测震台网对应用软件的可靠性、可扩展性、可移植性和安全性等方面的要求。

1.3 应用环境

系统运行的网络环境如图1所示。模块①部署在SOH应用服务器上,模块②部署在ActiveMQ服务器上,模块③部署在SOH订阅客户端上。系统运行约束见表1。

图1 系统网络环境图Fig.1 System network environment

表1 系统运行约束表Tab.1 Restriction table of system running environment

2 系统设计与实现

2.1 关键技术介绍

在程序设计过程中,主要用到了以下技术:

(1)Java TCP/IP Socket编程技术 (Fall,Stevens,2012;Calvert,Donahoo,2008)。目前,不同仪器厂家对数据采集器网络通信协议的实现方式不同,例如,EDAS24系列数据采集器支持TCP通信协议;CMG-DM24可利用数据通信单元扩展实现UDP通信协议;而Q330HRS的Baler单元则提供了用HTTP协议传输健康状态信息的服务。针对这种差异性,我们的解决方案是为每一种仪器编写相应的客户端类,实现通信连接的维护、报文分组的分类解析等功能。

(2)Java并发编程技术 (Goetz et al,2012)。每个地震区域台网中心都下属若干个地震台站,要同时维护与多个台站的通信连接,有两种实现方式——多进程方式和多线程方式。在操作系统中,进程是一个重量级的对象,每一个进程都独占一部分系统资源,线程是轻量级对象,同一进程内的多个线程间共享该进程所保有的资源 (Silberschats et al,2009)。基于易于实现和优化性能的考虑,我们采用多线程方式来实现与多台站的并发通信连接。

(3)Java消息服务 (Java Messaging Service,简称JMS)。JMS是Java平台上有关面向消息中间件(Message Oriented Middleware)的技术规范(Monson et al,2009)。ActiveMQ是一个完全支持JMS1.1的JMS Provider实现。在系统中,我们利用JMS与ActiveMQ通信,实现SOH消息的交换。

2.2 总体设计

系统的框架结构如图2所示。其中,SOH接收与发布模块由各类数采的客户端程序和SOH发布程序所构成。

图2 系统框架结构图Fig.2 Fram structure of the system

系统完整的业务流程可归纳为以下几个主要步骤:

①系统初始化;

②数采客户端程序与数采进行通信,对接收到的报文分组进行解析,将解出的SOH数据交给SOH发布程序;

③SOH发布程序将SOH数据格式化为SOH消息,并交给AMQ消息服务器;

④SOH订阅与显示模块从AMQ消息服务器订阅SOH消息,并进行处理;

⑤继续执行步骤2。

2.3 SOH接收与发布模块的设计与实现

在开发SOH接收与发布模块时,需先行分析仪器的通信协议和数据格式,掌握每一种数采输出SOH数据的内容和方式,以此为基础来设计业务逻辑。模块将按照配置文件的内容进行初始化,配置文件采用XML格式,详细说明见表2。

表2 配置文件说明表Tab.2 Description of configuration file

2.3.1 数采客户端的设计与实现

数采客户端的主要功能是:与数采进行通信、接收SOH数据。下面分别介绍EDAS24系列数据采集器、CMG-DM24以及Q330HRS客户端程序的设计和实现技术。

(1)EDAS24系列数据采集器 (EDAS-24GN和EDAS-24IP)利用TCP协议传输SOH数据。程序在处理与数采的通信连接时,采用的是长连接的方式,即在成功建立起通信连接之后长期保持该连接。之所以采用这种方式,主要基于以下考虑:TCP连接的建立和释放过程需要占用一定的系统资源 (谢希仁,2008),频繁的连接和释放操作将给数采带来较大的负担,对数采的稳定运行造成一定影响。经过实际测试,长连接方式比短连接方式更加安全、可靠,有利于保障数采的正常稳定运行。在获取SOH数据时,采用请求/响应方式,即客户端程序向数采发送查询请求,数采输出响应。EDAS24系列数采客户端的业务流程如下:

①程序初始化;

②测试数采网络地址的可达性;

③与数采建立控制连接,获得数据端口;

④与数采建立数据连接;

⑤通过数据连接发送查询帧,获得响应帧,从中解析出SOH数据;

⑥将SOH数据交给SOH发布程序;

⑦继续执行步骤②。

(2)CMG-DM24数据采集器的TCP/IP通信功能需要借助DCM来实现。DCM通常利用UDP协议传输数据。与TCP不同,UDP是一种无连接的服务,与EDAS24系列数采所采用的通信方式相比,Guralp的通信方式使得数采不必花费额外的开销来维护通信连接、保证通信质量,在通信链路质量良好的情况下,这有利于数采的稳定运行,同时也简化了客户端程序的业务逻辑。它的SOH数据由状态流和地震计零位流分别传输,其中,用ID“00”来标识状态流,数据采用ASCII格式编码;用ID“M8”、“M9”和“MA”分别标识地震计的垂直向、北南向和东西向零位流,数据采用GCF格式编码。与EDAS24系列不同的是,CMG-DM24不支持通过请求/响应方式获取SOH数据的方式,故在程序设计时只能采用数采主动传输、客户端程序被动接收的方式。CMG-DM24客户端的业务流程如下:

①程序初始化;

②测试DCM网络地址的可达性;

③将DCM通信端口与本地端口相绑定;

④接收DCM的UDP数据报,从中解析出SOH数据;

⑤将SOH数据交给SOH发布程序;

⑥继续执行步骤②。

(3)Q330HRS由数据采集器 (Q330S)和通信单元 (Baler)两部分集成。其中,Baler提供了通过HTTP协议定时传输SOH数据的服务。HTTP协议定义了Web服务器和Web浏览器之间通信的规则 (Gourley et al,2002),我们可以利用这个服务来设计客户端程序。Q330HRS客户端的业务流程如下:

①程序初始化;

②测试Baler网络地址的可达性;

③与 Baler建立 HTTP Socket连接,解析出SOH数据;

④将SOH数据交给SOH发布程序;

⑤继续执行步骤②。

2.3.2 SOH发布程序的设计与实现

SOH发布程序的主要功能是:按照JMS规范,将接收到的SOH数据格式化为SOH消息,并将其传递给ActiveMQ消息服务器。程序在处理与ActiveMQ的通信连接时,采用的是长连接的方式。SOH消息包括消息属性和消息体。其中,消息属性的说明见表3,消息体采用XML格式,详细说明见表4。

表3 SOH消息属性说明表Tab.3 Description of SOH message properties

表4 SOH消息体说明表Tab.4 Description of SOH message body

3 系统测试与应用

为了对系统方案进行全面的测试,我们开发了测震台站仪器状态监视程序,将其作为系统的SOH订阅和应用模块。在河北测震台网搭建了测试环境 (表5),接入了30个运行中的测震台站。经过若干个月的试运行和观察总结,我们认为系统整体表现稳定,功能和性能均达到了预期的设计要求,证明了系统方案的可行性。图3是该监视程序运行时的截图。

表5 系统测试环境说明表Tab.5 Description of sysytem testing environment

图3 测震台站仪器状态监视程序Fig.3 Monitoring program of the state of seismic station instrument

4 总结与展望

介绍了测震仪器健康状态交换平台的设计与实现。本系统的创新主要表现在:第一,通过仪器适配器程序的研制和多线程技术,实现了与多种地震数据采集器的并发式网络通信以及SOH数据的统一接收;第二,通过引进ActiveMQ消息中间件,实现了SOH数据的统一交换,为消息订阅程序的开发提供了统一数据的接口,增强了系统的弹性和可扩展性;第三,经测试证明,本系统作为一套完整的解决方案,具有性能优异、易于管理和易于扩展的特点,在测震台网的应用将有利于保障台网的运行质量。

目前系统的功能和性能均达到了设计预期效果,但是我们认为系统仍有很大的上升空间。例如,可以考虑为SOH接收和发布模块增加人机交互界面,用来监控和调整线程的运行状态,这有利于提高程序的灵活性和健壮性;另外,本文所介绍的SOH监视程序只是系统应用的一种模式,本系统更重要的意义在于:在实践过程中,利用AMQ提供的统一数据接口,不断探索SOH数据应用的新思路、新方法,推动现有成果的应用和转化。软件工程学认为:软件生命周期的结束意味着一个新的生命周期的开始 (Sommerville,2010)。因此,不断增强系统的功能、优化系统的性能,是我们下一个阶段的工作任务。

陈吉锋,陈军辉,应昶,等.2012.无人职守地震台站远程监控系统的设计与实现[J].地震研究,35(3):429-433.

谢希仁.2008.计算机网络(第五版)[M].北京:电子工业出版社.

Calvert K L,Donahoo M J.2008.TCP/IP Sockets in Java,Second Edition:Practical Guide for Programmers[M].California:Morgan Kaufmann.

Fall K R,Stevens W R.2012.TCP/IP Illustrated Volume 1(Second Edition)[M].New Jersey:Addison-Wesley Educational Publishers Inc.

Goetz B,Peierls T,Bloch J,et al.2012.Java Concurrency in Practice[M].Texas:Pearson Education,Inc.

Gourley D,Totty B,Sayer M,et al.2002.HTTP[M].California:O'Reilly Media,Inc.

Monson H R,Richards M,Chappell D A.2009.Java Message Service(Second Edition)[M].California:O'Reilly Media,Inc.

Silberschats A,Galvin P B,Gagne G.2009.Operation System Concepts(8th Edition)[M].New York:John Wiley& Sons Ltd.

Snyder B.2011.ActiveMQ in Action[M].New York:Manning Publications.

Sommerville I.2010.Software Engineering(9th Edition)[M].Texas:Pearson Education.

猜你喜欢

采集器台网消息
COVID-19大便标本采集器的设计及应用
地球物理台网仪器维修信息管理的研究与实现
碰撞式宽频振动能量采集器研究进展
一张图看5G消息
晚步见道旁花开
新型自动气象站采集器故障判断分析
澜沧江流域小湾、糯扎渡水库地震台网震级完备性初探