目前中国已有多家厂商生产地震烈度计并用于地震台网,在全国性地震烈度速报与预警工程项目建设中,上万台烈度计将投入使用。为推进国家地震烈度速报与预警台网建设,健全地震烈度速报和预警相关技术标准体系(吴永权,2010),规范地震烈度仪产品研发生产,我们提出地震烈度仪数据传输协议并给出参考实现。
本文将介绍该协议设计目标和原则,解释协议的特点和关键点,给出一种参考实现,介绍各个模块的功能和逻辑关系,并讨论协议设计用到的算法。
1 传输协议设计目标和原则协议目标单一,定义仪器端(地震烈度仪)和服务端(地震烈度和预警台网流服务器)通讯传输机制,传输内容仅和预警和烈度速报相关的仪器信息和波形数据,不包含地震烈度仪器参数设定、数据下载、仪器标定、信息查询等方面的仪器控制协议(吴永权,2011)。制定原则为协议应尽量简单,面向地震预警的快速数据传输需求,要求数据传输效率高、占用带宽少;可反向控制数采,传输模式可选择和变更。
2 协议通讯机制地震烈度仪根据设定的服务端地址参数,主动发起与服务端的连接,发送注册信息包。服务端返回注册结果响应包,内容包括注册台站ID、注册状态信息和上次接收到的数据包序号等参数,地震烈度仪应根据注册响应包参数初始化数据传输参数。
台站端地震烈度仪向服务端发送的各种类型数据包固定长度为256字节,服务端向台站端发送的信息与控制包固定长度为64字节,数据包字节顺序为网络字序(Big endian)。每个交互的数据包均有包序号,仪器端和服务端通过包序号实现数据可靠传输。其中仪器端发送的包序号由仪器端计算产生;其中服务端发送数据包含有数据类型信息和包序号,包序号由服务端计算产生;所有非时间段申请的数据包应采用统一包序号。各种响应包均返回其所响应命令包的序号。
台站端地震烈度仪的波形数据传输模式由服务端流服务器返回的传输模式控制包控制,地震烈度仪的波形数据传输有3种传输模式:连续波形数据传输模式、触发传输波形模式和触发不传输波形模式。地震烈度仪启动后,如果未接收到传输模式控制包的命令,则按以上次传输模式开始传输数据。
服务端仅定义几个必要的仪器控制命令,包括传输模式控制、时间段数据申请、时间段触发控制和触发阈值设定等。时间段数据申请和时间段触发控制都是服务端请求台站端发送时间段波形数据,唯一区别是,时间段数据申请是请求历史的时间段数据,而时间段触发控制请求的波形数据可能是将来的时间段数据。
3 协议台站端实现地震烈度仪数据传输协议台站端的实现流程见图 1。CSTPConfig用于处理台站端总体配置文件(properties文件)。配置完台站端信息文件后,PortReceiver根据总体配置CSTPConfig,接收数采的实时波形数据,并作为一个线程实例化。CSTPProcessor(图 1中Processor)是中心处理单元,负责处理波形数据包和信息数据包,并负责与服务端交互。每一个服务端对应一个CSTPProcessor实例,每一个CSTPProcessor实例包含一个噪声信息收集器StatusInfoDetector(图 1中SI Detector)、事件触发检测CSTPEventDetector(图 1中Detector)和环形缓冲文件CSTPRBFile(图 1中RBF,用于管理波形数据包),同时每一个CSTPProcessor都是一个线程实例。
PortReceiver接收到一包波形数据,分发给StatusInfoDetector、CSTPEventDetector和CSTPProcessor线程。PortReceiver负责缓存一段最新波形数据,当收到CSTPProcessor事件触发后,把缓存波形数据作为触发类型的波形发送给CSTPProcessor。StatusInfoDetector线程收到波形数据后计算噪声,产出相应状态信息包,发送给CSTPProcessor。CSTPEventDetector收到波形数据后,根据STA/LTA算法(Allen,1978),检测事件触发,产生相应的触发信息包和相关波形数据包,发送给CSTPProcessor。CSTPProcessor收到每一个波形数据包或信息包均存入CSTPRBFile,并由CSTPRBFile负责给每个数据包计算序号。CSTPProcessor根据CSTPConfig信息,主动连接服务端,根据服务端应答的传输模式和序号,从CSTPRBFile中检索数据包,并发送到服务端,见图 1中心端。
CSTPRBFile是一个环形缓冲文件,主要功能是缓存待发送服务端的数据。文件空间按照256大小划分为n个子块,一个数据包对应一个子块。环形缓冲文件拥有2个位置指针:写指针和读指针,同时分别对应2个线程:写操作线程和读操作线程。2种指针信息被记录在文件头中。每写一个数据包,写指针计数加1,同时给数据包标记序号。在数据包的整个生命周期中,包序号保持不变。被发送的数据包从读指针位置读出,每发送一个数据包,读指针计数加1。读指针永远不能超过写指针,对读指针的更改和写指针的更改在2个线程中需要同步,不能同时更改,在任何时候只能有一个操作者。为了实现时间段传输,根据数据包的时间和位置建立内部索引,从而快速确定时间段开始时间的包序号和结束时间的包序号。
StatusInfoDetector是噪声信息收集器(图 2),计算各分项每秒钟峰峰值,10 s秒数据一个封包。服务端可利用噪声信息包评估台站噪声水平。
CSTPEventDetector内部主要包括STA/LTA事件触发(Allen,1978)、到时FilterPicker5算法(Lomax,2012)精确识别和6种IIR滤波器。第1种滤波器是10 Hz—10 s的带通滤波器,用于加速计算预处理,计算PGA,滤波后的加速度也是STA/LTA算法的输入;第2和第3种是带低通滤波积分器,分别在实域上计算速度和位移,计算PGV和PGD;第4、第5和第6种是类似Wood-Anderson地震计响应的IIR滤波器,分别用于计算PSA03、PSA10和PSA30(Kanamori,1999)。当检测到事件触发时,精确到时被同时算出,6种滤波器和仪器烈度同时计算,每秒发送一个触发信息包,直到触发结束。
4 协议服务端实现服务端采用Netty NIO框架实现,Netty是一个高性能、异步事件驱动的NIO框架,提供对TCP、UDP和文件传输的支持。作为一个异步NIO框架,Netty的所有IO操作均是异步非阻塞的,通过Future-Listener机制,便于用户主动获取或通过通知机制获得IO操作结果(李林锋,2015)。
地震烈度仪数据传输协议服务端的实现流程见图 3。其中:CSTPServerHandler为核心处理单元;CSTPStation包含台站信息、密码、初始传输模式和服务端收到数据包的最新包序号等;CSTPStation信息保存在stations.properties文件中,被CSTPServerHandler读入并保存到哈希表中,主要用于台站上传波形和信息操作;CSTPUser包含用户名和密码,用于CSTPClient发送指令操作;FrameDecoder是一个简单的数据帧解码器,把连续的数据流划分成连续的数据帧,根据数据头信息,把台站端上传的数据解码成256字节一个数据帧,把CSTPClient发送的数据解码为64字节一个数据帧。
台站端主动连接服务端流服务,发送注册信息包,CSTPServerHandler验证通过后,根据上次接收的最新包序号,发送应答指令。台站端按照初始的传输模式发送波形数据包或信息包到CSTPServerHandler,CSTPServerHandler根据数据类型分别存放到波形发送队列或信息包发送队列,转换成标准STEIM2数据包,发送到服务端流服务器(图 3)。
当用户需要改变台站端传输方式、请求时间段或时间段触发控制时,通过CSTPClient发送指令到CSTPServerHandler,CSTPServerHandler转发指令到指定的台站端,同时向CSTPClient发送应答,台站端根据响应的指令发送波形数据或信息包(图 3)。
5 结束语CSTP烈度仪传输协议简单明了,易实现,目前已有数家厂商部分实现了该协议。我们提出的参考实现,在某些项目招标前的仪器测试中发挥了重要作用,但目前仍有不足,需要在以下方面进行优化改进:①当实际部署到台站端时,台站端一般采用SD卡,其写入次数有限,应优化CSTPRBFile写操作,减少写次数,延长SD卡寿命;②CSTPStation和CSTPUser应持久存储到数据库,采用JPA规范操作,利于后端的集成工作。
吴永权, 黄文辉. 数据处理软件系统JOPENS的架构设计与实现[J]. 地震地磁观测与研究, 2010, 31(6): 58-63. | |
吴永权, 黄文辉. JOPENS流服务与TDE-324系列地震数据采集器实时数据流接口程序的设计与实现[J]. 华南地震, 2011, 31(3): 50-59. | |
李林锋. Netty权威指南[M]. 北京: 电子工业出版社, 2015, 66-77. | |
Allen R V. Automatic earthquake recognition and timing from single traces[J]. Bulletin of the Seismological Society of America, 1978, 68: 1 521-1 532. | |
Lomax A. Automatic Picker Developments and Optimization:FilterPicker-a Robust, Broadband Picker for Real-Time Seismic Monitoring and Earthquake Early Warning[J]. Seismological Research Letters, 2012, 83: 532-540. | |
Kanamori H. Continuous Monitoring of Ground-Motion Parameters[J]. Bulletin of the Seismological Society of America, 1999, 89(1): 311-316. |