吴永权,黄文辉
(广东省地震局,广东 广州 510070)
JOPENS流服务与TDE-324系列地震数据采集器实时数据流接口程序的设计与实现
吴永权,黄文辉
(广东省地震局,广东 广州 510070)
JOPENS系统是为地震台网中心开发的数据处理软件系统,为使地震台站记录到的实时数据流能接入JOPENS系统处理,必须为数采开发对应的接口程序,用来接收地震台站数采的实时数据流。介绍了JOPENS的流服务与珠海泰德公司生产的TDE-324系列数采实时数据流接口的设计思想与实现过程,并对接口程序进行了故障处理能力试验检测,对接口程序在地震台网实际运行中接收到的数据进行连续率统计分析,据此对接口程序的稳定性、容错能力、断点续传等特性作出了初步评价。JOPENS的流服务器通过该接口获取该型号数采的实时波形数据,并已经在此基础上实现了全国观测数据的实时共享。
实时数据流SSS;接口程序;数采;TDE-324;JOPENS系统;
JOPENS系统是广东省地震台网中心开发的地震台网数据处理软件系统,目前已经在全国大多数省级区域地震台网运行,还运用在印度尼西亚、阿尔及利亚等多个我国援外建设的地震台网中,取得了良好的运行效果。实时数据流服务(简称SSS)是JOPENS的一个软件模块,它能从地震台站的数据采集器 (以下简称数采)获取实时数据流,并实现数据流传输、汇集、转发、入库等功能,全国各省级地震台网所属的地震台站正是基于SSS实现了全国的实时数据共享。因中国的地震台站使用了国内外多种型号的数采,这些数采型号包括珠海市泰德企业有限公司生产的TDE-324系列、北京港震机电技术有限公司生产的EDAS系列、英国GURALP公司生产CMG-DM24、美国GEOTECH公司生产的Smart24等,为了使得SSS能从多种型号的数采获取实时数据流,必须为SSS开发对应型号数采的数据接口程序。SSS的实时数据流接口程序是SSS的重要组成部分,接口程序设计的性能直接决定了JOPENS系统的数据接收能力,影响到地震台网数据连续率、数据完整性等地震台网重要评价指标。本文将重点介绍JOPENS流服务器与TDE-324系列接口程序的设计思路,接口程序特点和实现过程等内容。
TDE-324系列数采具有两个实时数据流接口,分别是RJ45网络接口和RS232数据串口,用户可以通过SDH光纤、帧中继、CDMA、卫星等多种网络方式连接数采的RJ45网口,传输遵循TCP/IP或UDP/IP协议的地震台站实时数据,也可以通过超短波无线电台、DDN等透明链路连接RS232串口,传输串口格式数据。由于TDE-324系列数采的RJ45网口与RS232串口数据通信协议并不相同,需为这两种数据接口分别设计接口程序,并都以独立的进程运行,两个进程收到实时数据后再上传给同一个SSS流服务汇集。我们把这两个进程命名为ComServ2Server和Serial2Server,分别表示网口协议和串口协议的接口进程。
在开发网络协议的数据接收进程ComServ2Server时,考虑到地震台网的流服务器需要同时通过ComServ2Server链接多个地震台站,并且这些台站的数采型号可能是不相同的,因此我们在ComServ2Server服务进程中采用了多线程技术,一个线程连接一个地震台站的数采,通过预先配置好的仪器型号关键词来识别数采型号,然后启动对应型号仪器的网络接口程序,从而实现同时从多个台站获取实时数据。在开发串口数据接收的Serial2Server进程时,与ComServ2Server类似,我们也是采用多线程技术,在Serial2Server服务进程中启动多个线程连接相应的串口端口,并使用配置好的波特率、数据位、停止位、奇偶校验位等串口通讯参数初始化串口连接,通过仪器型号关键词启动对应仪器型号的串口接口程序,实现同时从多个台站获取实时数据。
TDE-324系列数采提供有四种网络数据服务模式,分别是TCP/IP服务器端模式、TCP/IP客户端模式、UDP/IP服务器端模式以及UDP/IP客户端模式。实时数据的获取需要客户端程序的申请,数据包可以按照两种方式发送,一种是数采等数据完全填满一个STEIM2数据帧后才发出,每个数据帧的大小是固定的,数据帧包含的波形数据时间长度不固定。另一种是数采每采集1秒的数据后立即进行压缩并传输,每帧数据的波形时间长度固定,帧大小不固定。本接口程序的开发采用TCP/IP服务器端模式,也就是数采做为服务器端,被动等待用户的链接,数据流接口程序主动连接数采的服务端口,与数采建立连接后向其申请实时数据流①珠海市泰德企业有限公司,TDE-324CI地震数据采集记录器使用说明书.2009.。
TDE-324系列数采加电开机后会初始化网络配置,然后启动侦听守候进程,等待用户程序的连接,默认配置情况下数采在9742端口进行侦听守候。当数采侦听到客户端“Socket层”的连接后会接受并与之建立Socket连接,等待客户端发起“数据通信协议层”的连接申请。如果数采接收到的是正确的连接申请信息“Connect To TDE-324CI”,则检查服务程序是否还有能力接受连接,如果有则反馈“DATA RECEIVE PASSWORD...”给客户端程序,表示接受连接并要求客户端输入连接密码。如果因服务器连接的客户端太多而不再接受连接时,数采则反馈“Too Many Sock Connect Error...”给用户,表示服务器太忙,不能接受连接。如果数采接收到的是不正确的连接申请信息,则反馈“Connect Fault-1!No connect Info...”信息给客户端,返回到侦探守候状态。在数采接受客户端的“协议层”连接后,会等待客户端输入用户密码,在接收到客户的密码后进行密码验证,如果密码正确则反馈“CONNECT OK!”信息给客户端,然后自动根据密码设定密码等级,等待接收客户端的控制命令,否则就反馈“Data Receive Password Error!”信息给客户端,告之密码错误不能建立“协议层”连接,然后返回侦听守候状态(TDE-324CI/CA/FI协议)。TDE-324系列数采网络通讯协议的流程示意图见图1①珠海市泰德企业有限公司,TDE-324CI地震数据采集记录器使用说明书.2009.。
图1 TDE-324CI数采与PC机网络通讯初始化流程图Fig.1 Flow chart of communicate initialization between TDE-324CI DS and PC
ComServ2Server进程从SSS的配置文件中获取台站连接的信息,包括台站的台网代码、台站名、通道代码以及台站数采的IP地址、数据端口、用户名、用户密码等参数,进程会启动线程去连接数采,建立连接后进行用户认证,然后发出实时数据流申请命令,完成接口的协议层连接,开始接收实时数据帧。接口程序接收到数采发送过来的数据帧后,会根据数据帧的格式对数据进行解码,并结合从配置文件中获得的台网代码、台站代码、通道代码等信息重新按照SSS流服务器的数据格式重新打包,再把数据包发送给SSS流服务器,从而完成一帧实时数据的获取,然后再去接收下一帧数据。根据以上描述的仪器网络接口程序流程,程序可以分为以下一些模块,包括Socket模块、login模块、IO模块、Head解码模块、Steim2解码模块、数据重打包模块、数据上传模块等。网络接口程序的流程示意图见图2。各模块的主要功能描述如下:
2.2.1 台站参数获取模块
负责从SSS的配置文件sbox-config.xml中解析出台站的台网代码、台站名、通道代码以及台站数采的IP地址、数据端口、用户名、用户密码等参数,然后将控制交给Socket模块。
2.2.2 Socket模块
采用J2SE5.0的Java.net.Socket方法与数采的9742端口建立Socket层的连接,连接成功后将控制交给Login模块。
2.2.3 Login模块
负责向数采发送“Connect To TDE-324CI”信息申请建立“协议层”的连接,并接收数采反馈的信息,发送用户密码,接收数采反馈的密码验证信息,建立与数采“协议层”的连接后,将控制交给IO模块。
图2 网络接口程序获取实时数据流程图Fig.2 Flow chart of the interface routine receive real-time data through network port
2.2.4 IO模块
Login模块登陆完成后,IO模块负责向数采发送申请数据包序号为0的实时数据流申请命令,并读取数采发送过来的数据包头块和波形数据块,将数据包头块送给Head解码模块解码,将波形数据块送给Steim2解码模块解码,然后读取下一帧数据,与其他数采的协议不同,IO模块无需发送握手信息给TDE-324数采即可读取下一帧数据。IO模块还可以根据数据包检验模块返回的信息,如果有丢帧需要重新申请时,就会发送丢失数据包、帧顺序号的数据申请命令给数采,并读取回该数据帧。
2.2.5 Head解码模块
负责解码IO模块送过来的数据包头块,从中提取数据包顺序号、台站代码、传感器位置、通道信息、数据起始时间、数据时间偏移量、采样率、数据压缩帧个数等信息。
2.2.6 数据包检验
负责检验Head模块发送过来的数据包顺序号是否等于一包顺序号加上1,如果是,则表示数据无丢包,如果不等于,则表示数据有丢包,则会通知IO模块发送丢失数据包的申请命令。
2.2.7 Steim2解码
负责解码波形数据压缩块,将数采以Steim2压缩算法压缩的波形数据解码为一个采样点用32位表示的Integer型数据,并对解码数据进行校验,确保解码无误。
2.2.8 数据重打包
负责整合从台站参数获取模块取得的台站基本信息,包括台网代码、台站代码、通道代码等;从Head解码模块获取的数据包头信息,包括数据起始时间、数据时间偏移量、采样率、通道代码等、从Steim2解码模块获取Integer型波形采样数据,把这些数据按照SSS流服务器的NetSeisIP协议格式重新打包[1]。
2.2.9 数据上传
负责将数据重打包好的数据上传给SSS流服务,当中包括流服务用户权限的认证过程。
网络协议的IP数据流接口程序采用了多种技术措施处理数据包误码、数据包丢失、数据流中断等数据传输故障,从而大大提高数据的连续率,提升了接口程序的性能,这些措施包括数据解码校验、断点续传、超时重连等。
2.3.1 数据解码校验
由于TDE-324数采采用Steim2压缩算法压缩数据,接口程序接收到数据后需对数据进行解码,在Steim2算法中,差分数据之前有两个32位的整型数值,一个表示压缩数据段的起始采样点数值,另一个表示压缩数据段的结束采样点数值,解码程序在起始采样点数值的基础上利用差分数据依次解码出每一个采样点的数值,直至解码出最后一个采样点,接口程序会将解码出的最后一个采样点数值与压缩包中给出的结束采样点数值进行比较,只有两个数值完全相等时才说明数据传输解码正确,否则表示数据有误码或者解码错误。当解码数据有错误时,接口程序会丢弃此包数据,并向数采申请重发此包数据,从而保证数据的正确无误。
2.3.2 断点续传
依据TDE-324数采协议,每个数据包都包含一个数据包顺序号,接口程序在接收完一个数据包后,会解码出该数据包的顺序号,并将此顺序号与前一个数据包的顺序号做比较,如果此顺序号等于前一个数据包的顺序号加一,则说明数据包顺序正确,如果此顺序号小于前一个数据包的顺序号加一,则说明数据有重包,接口程序会丢弃此数据包,如果此顺序号大于前一个数据包的顺序号加一,则说明数据有丢包,接口程序接纳此数据包后,会向数采申请重发那些丢失的数据包,这样接口程序就保障了接收数据的完整性,把断点的数据续传回来。
2.3.3 超时重连
接口程序正常接收数据流的过程中,因网络故障或者数采死机等多种原因,有时会导致接口程序接收的数据流中断,接口程序为解决此问题,为数据流设置了一个超时开关,如果接口程序在一段时间内都没有接收到数采发送来的数据,接口程序就抛出超时异常信息,并重新初始化与数采的链接,重新申请中断时间之后的数据包。超时的时间长短可以由用户设置,默认的超时时间设置为2 min。
TDE-324系列数采的串口数据协议比较简单,无论数采是否与PC机相连接,数采均每秒向RS232串口发送一帧实时数据,数据包的大小与数采的通道数及采样率等因素有关。实时数据包的发送不需客户端申请。数据包包含24个Byte的数据头,数据头包含了数据帧标志、通道数、采样率、标定标志、GPS状态等信息,波形数据不压缩,采用按时间顺序由低、中、高3个Byte组成一个采样点的方式传输,一个通道的整秒数据之后接另一个通道的整秒数据,帧尾为一个字节的校验码和一个字节的帧尾标志。
Serial2Server进程从SSS的配置文件中获取台站连接的信息,包括台站的台网代码、台站名、通道代码、串口端口号、串口波特率等参数,进程会启动线程去连接和初始化相应的串口端口,读取数据并寻找数据帧标志,找到数据帧标志就表明找到了一个数据帧头,然后按照串口数据头的格式去读取相应的数据头信息和数据信息,这样完成一帧实时数据的获取,再开始去读取下一帧数据。根据以上描述的仪器串口数据接口程序流程,程序可以分为以下一些模块,包括串口连接模块、帧标志寻找模块、帧头信息读取模块、波形数据读取模块、数据重打包模块、数据上传模块等。串口接口程序流程图见图3。台站参数获取、数据重打包、数据上传模块的功能与网络接口对应模块的功能一致,其他模块主要功能描述如下:
(1)串口连接模块。采用javax.Comm.CommPortIdentifier类连接和初始化与数采的串口连接。
图3 串口接口程序获取实时数据流程图Fig.3 Flow chart of The interface routine receive real-time data through serial port
(2)帧标志寻找模块。由于数据向串口发送数据并不依赖于接口程序的申请,因此接口程序读取每一帧数据时,并不能准确地从数据帧头开始读取,为了准确地找到帧头,接口程序必须进行帧头寻址操作。TDE-324数采的串口数据帧有一个帧标志,每个数据帧都以帧标志为起始,帧标志为三个字节的十六进制的数据“BF1397”,接口程序寻址时,依次读取每一个字节,当读取到“BF”字节后,程序会连续读取两个字节,判断这两个字节是否等于十六进制的“1397”,如果等于,说明已经找到帧头,程序可以从此开始依据串口数据格式读取数据,否则程序继续寻找,直至找到帧头为止。
(3)帧头信息读取模块。负责从帧头信息里解码出数据时间标识、通道数、采样率、标定标志、GPS状态等信息。
(4)波形数据读取模块。负责按照Little Endian的字节顺序读取24位的采样点数据,并转换为32位的Integer型数据,读取够一个通道的采样点后再读取下一通道,直至读取完帧头信息里提示的通道数。
由于串口协议的特点,TDE-324数采使用串口传输数据时,程序与数采之间并无握手协议,因此接口程序并不能向数采申请重发数据包,无法实现断点续传。由于串口线路的特点,串口数据长距离传输时,误码率和丢包率相对较高,我们采取了一些技术措施保障数据的准确性、并尽可能地避免丢失数据。这些措施包括数据包校验、超时重连等。
(1)数据包校验。串口数据的误码率相对较高,因此每帧数据的最后都有一个字节的数据校验码nADNum,把所有数据区的数据与nADNum按位累加应该等于零,否则数据就存在误码,需丢弃此数据包。
(2)超时重连。接口程序初始化与串口的链接后,正常读取数采串口的数据,由于链路故障、数采死机等多种原因有时会读不到数据,因此和网络协议一样,接口程序设置有一个超时开关,在设定的时间内接口程序读不到数据,就会抛出超时异常信息,并自动重新初始化与串口的链接,重新开始读取数据。
为了检验TDE-324数采接口程序的性能,包括正常接收数据的连续率、稳定性,以及处理数据丢包、数据误码、链路中断、数采死机等故障的能力,我们做了一些简单的试验检测接口程序的相关性能,包括实验室长时间运行检验程序稳定性,数据传输过程中拔插网线和数据线模拟链路中断故障,重启数采模拟数采死机故障等。另外有一些故障情况,如数据丢包、数据误码等,由于没有相关试验条件模拟这些故障,我们采取统计接口程序在地震台网中的实际运行效果来说明,因为在地震台网长期的数据传输中,肯定存在着数据丢包、数据误码、数据延迟、网络堵塞、链路故障、数采死机等多种复杂的情况,接口程序在地震台网实际应用中的表现也能说明其性能的优劣。
断点续传能力:接口程序在正常和数采的数据传输过程中,拔出数采和接口程序之间的网线,间隔几秒后再插回去,观察接口程序接收数据的情况,我们发现拔出网线时间在10秒之内时,插回网线后接口程序能即刻恢复数据的接收,并且数据未丢失;在拔出网线超过10秒后插回,接口程序不能立刻恢复接收数据,在2 min后抛出超时异常信息,之后接口程序会自动重新初始化和数采的链接,数据接收随即恢复,并能断点续传回之前的数据,保持接收到数据的连续性。
(1)数采死机故障。接口程序在正常和数采的数据传输过程中,拔出数采的电源后一段时间再插回,使得数采断电重启,接口程序会抛出超时异常信息,并不断地重新连接数采,抛出不能链接的信息,直至数采启动完成后,接口程序和数采链接成功,数据传输随即恢复,不过数采重启期间的数据就丢失了;
(2)稳定性试验。在试验室环境下我们让两台运行接口程序的计算机与TDE-324CI数采直接连接,接口程序分别从数采的网口和串口接收数据并存储下来,连续运行10 d时间。这样可以排除数据传输过程中链路故障等情况,统计在这10 d中接收到数据的连续率,从而测试接口程序的稳定性,测试结果见表1。
表1 接口程序在试验室环境下接收数采网口和串口数据的连续率统计表Table 1 Data continuous statistical table of the interface routine receive data from TDE-324CI net port and serial port directly in laboratory
从表1的测试结果看,测试这10 d的网口数据连续率达到100%,串口数据只出现偶尔的几个丢包和误码包,平均连续率也达到99.996%,这说明接口程序能够稳定运行。
接口程序在地震台网的实际运用中,虽然台站信号传输连续率与很多因素有关,包括台站外部供电、仪器故障、通讯链路故障、甚至天气因素,但是我们依然可以排除这些故障因素,选取一批故障很少的台站做统计分析,评估接口程序的实际运行效果。我们统计了2009年度广东省地震台网中心所有台站数据的连续率,从中筛选出一批2009年度故障较少的台站做对比,分析在不同传输条件下台站的连续率水平,表2及表3分别列出了2009年度广东台网使用TDE-324CI的台站在帧中继网络以及CDMA网络传输方式下连续率。
从表2的连续率数据可以看出,接口程序在帧中继等比较稳定的网络通讯条件下,地震台站数据的年度连续率能达到98%以上。
从表2及表3的连续率数值我们可以看出,采用CDMA传输台站的连续率要比采用帧中继传输台站的连续率略低,这是因为CDMA网络的稳定性要比帧中继网络差,CDMA网络常有连接不上的现象,造成数据有时出现较长时间中断的现象,断点续传无法再传回数据,但是也有部分CDMA传输台站的连续率也比较高,有的台站在部分月份连续率达到了100%,CDMA总体传输效果良好。
表2 2009年度广东台网帧中继传输的台站数据连续率统计表Table 2 Data continuous statistical table in 2009 of The GDDSN stations transmitting data through Frame Relay network
表3 2009年度广东台网CDMA传输的台站数据连续率统计表Table 3 Data continuous statistical table in 2009 of The GDDSN stations transmitting data through CDMA network
通过对接口程序做的模拟故障试验检测,我们可以看出接口程序具有较高的故障处理能力和容错性,能自动应对链路故障和数采死机等常见故障情况,在链路和数采回复正常后,接口程序能自动重新和数采建立链接并开始接收实时数据,采用网络协议传输数据时,还能断点续传回部分中断的数据;通过在试验室环境下的运行连续率统计数值,我们可以看出在排除数据传输链路故障的情况下,接口程序能持续稳定地运行;通过接口程序在地震台网实际应用中的运行连续率统计数值,我们可以看出接口程序接收的波形数据连续率基本达到97%以上,完全能满足地震台网地震观测的需求。TDE-324系列数采接口程序已经在SSS流服务器当中得到充分应用,并随JOPENS一起部署到全国大多数省级地震台网中,目前正在从我国几百个使用TDE-324系列数采的地震台站中源源不断地获取实时数据,并通过SSS流服务器实现全国实时数据的共享,为我国的地震观测事业作出了贡献。
[1]吕金水,黄文辉.基于TCI/IP协议的地震波形数据实时传输技术在数字地震台网联网中的运用[J].华南地震,2001,21(3):37-41.
Design and Realization of Real-time Data Stream Interface Routine Between The JOPENS SSS Service and the TDE-324 Series Earthquake Data Acquisition
WU Yongquan,HUANG Wenhui
(Earthquake Administration of Guangdong Province,Guangzhou 510070,China)
The JOPENS system was developed for the seismic center to process and analyze earthquake observations.For the capacity of the JOPENS system receive seismic station real-time data stream,we must develop an interface routine between data acquisition and SSS service.This article introduced the design concept and implementation of the interface routine.The JOPENS SSS service receive TDE-324 data acquisition real-time waveform data through the interface routine and sharing real-time data for other seismic center around the China.
Real time data-flow;Interface program;Data acquisition;TDE-324;TOPENS system
P318.62
A
1001-8662(2011)03-0050-10
2010-12-23
吴永权,男,1979年生,地球物理专业,工程师.主要从事地震监测及相关软件研发工作.E-mail:wyq@gddsn.org.cn