目前,地震预报的信息来源主要依靠遍布在各处的地震观测台站所监测到的地震数据。随着地震观测台网规模日益扩大,实时性和数据量的要求也在不断提高。除了固定的地方地震观测台站以外,还有大量野外流动地震观测站。流动观测站主要对一定时间和地区内的数据进行强化观测,用以提高监测能力和异常跟踪能力,并可以针对多种物理量进行采集,将数据反馈到台网中心[1]。因此,一个流动站常常会布置数量众多而又分散的采集点,而如何将这些分散的采集点的数据传输到地震台网,是野外流动观测技术的关键之一。
在野外复杂环境中,通常将采集节点数据汇总至流动站,再由流动站统一接入互联网。局部数据的传输方式可有多种选择,需要综合考虑距离、便捷性、可靠性及成本等多种因素。本文中设计了一种采用控制器局域网(CAN)进行地震数据传输的方式,以满足分散的采集点能在相对较广范围内进行组网通信的要求。1 系统框架本文以激光多普勒地震仪项目为背景进行系统构建,主要解决将分散的采集点进行集中管理的问题。由于野外采集点数量众多,且安装位置较分散,若都与流动站之间直接组建局部网络连接,则无论采用何种组网方式,都必将加重人力、物力的投入,同时也会加重流动站的管理负担。因此,本文采用中继站的思想,将一定区域内的采集点利用总线方式汇总到主控机上,再由主控机统一将数据传输到流动站,系统结构如图1所示。采用这种分布式结构,一方面可以降低采集点组建网络的成本,另一方面主控机可以取代部分流动站的功能,对本局域网内的采集点进行管理和监控,便于组成规模更大的野外流动站。
2.2 节点的通信策略CAN协议所采用的对报文进行地址编码的方式便于在总线上增删节点。在本项目中,由于各个节点都只与主控机进行通信,所以,充分利用CAN报文帧ID识别码的特性,将发送帧的识别码、本节点的编码以及本节点接收滤波器的识别码相统一。而主控机的节点则可以读取所有总线上的报文,所采用的通信策略如图3所示,这样的设计实际上就将原先总线式的拓扑结构转换成了类似星形拓扑的结构,便于主机管理所有节点。
子线程类RecvThrd主要实现对CAN口的监听任务,并通过信号-槽机制将数据传给主线程,重写虚成员函数void RecvThrd :: run( )加载新的线程任务。Socket CAN的使用类似于其他网络协议操作,主要包括建立套接字、绑定端口和监听等,不同的是CAN通信不需要与对方建立连接,主要实现方式如下:
测试表明,基于ARM平台的主控机可以满足数据收发、实时显示、节点监控以及异常记录等多任务要求,在不影响与地震采集节点间通信的前提下,实现良好的人机交互和实时控制性能,在整个网络系统中起中继站的作用,方便了流动站对分散的地震采集节点的控制和管理。本文设计了一种采用CAN总线通信技术在地震数据采集点与流动站之间进行数据传输的方式,利用CAN总线通信传输距离长、抗干扰能力强、易于施工布线的特点,以及微处理器ARM优越的实时控制能力和良好的通信能力,在地震采集节点与流动站之间构建中间控制点,以星形拓扑的方式将一定范围内分散的采集点集中控制。同时,通过在ARM硬件平台上构建Linux多任务系统平台,采用Qt嵌入式应用程序框架搭建人机交互界面,实现了良好的实时控制和管理功能。这种基于CAN总线和嵌入式技术的地震数据传输方式,既便于野外环境中网络的组建和拓展,也有利于减轻流动站的管理任务。参考文献[1] 王晨,滕云田,王晓美,等.地震前兆野外流动观测无线组网系统[J].地球物理学进展,2012,27(3):945-949.[2] 郭成镇,何迪.CAN总线的PLC通信网络的研究[J].通信技术,2012,45(7):51-53,74.[3] 梁金芝.CAN总线协议在嵌入式系统中的应用[J].电脑知识与技术,2011,7(20):5003-5004.[4] 宋宝华.Linux设备驱动开发详解(第2版)[M].北京:人民邮电出版社,2010.[5] CORBET J,RUBIN A,KROAH-HARTMAN G.Linux设备驱动程序(第3版)[M].魏永明,耿岳,钟书毅,译.北京:中国电力出版社,2005.[6] BLANCHETTE J,SUMMERFIELD M.C++ GUI Qt 4编程(第2版)[M].闫锋欣,译.北京:电子工业出版社,2008.[7] MATTHEW N,STONES R.Linux程序设计(第4版)[M].陈健,宋健建,译.北京:人民邮电出版社,2010.