孟彩菊,杨世英,靳玉贞,何 佳,任瑞国
(1.山西省地震局太原基准地震台,山西 太原 030025;2.太原大陆裂谷动力学国家野外科学观测研究站,山西 太原 030025)
中国地震局通过“中国数字地震观测网络”和“中国地震背景场探测”等重大项目的实施,在台站安装了大量数字化观测设备,逐步建立起了以中国局、片区、省局和台站为主体的多级工作模式。在日常监测工作中,运行维护是台站的一项重要任务,也是地震监测台网连续稳定运行的可靠保障。目前,管理部门对监测质量及数据连续率的要求不断提高,运行维护工作在响应时间、恢复时间、维护成本等方面仍需不断提高(1)中国地震局.中国地震监测发展设计纲要(2016-2035年),2015.,[1]。
在各类观测设备故障中,由于软、硬件等不明原因造成的死机占一定的比例。在以往的工作中,值班人员发现观测设备不能连通而怀疑死机时,会到现场对观测设备进行断电复位,然后需要再次查看观测数据,直至恢复正常。这一操作过程未完全实现自动处理,工作效率低下。文章以太原台的加速度数据采集器死机为案例,通过微软的Visual Studio 2015的网络编程及对网络远程控制设备进行二次开发,实现了对数据采集器进行自动检测,在出现死机时自动进行断电重启操作,自动操作开启数据流,使观测设备数据传输恢复正常。
太原台的加速度观测采用SYSCOM设备,加速度计型号为MS2007,数据采集器型号为MR2002。加速度计架设在台站观测山洞中,数据采集器通过引入山洞的网络接入台站行业网,数据直接传输至省局台网。台站值班人员每天通过浏览数据采集器页面查看数据传输状态,当无法打开页面时,说明数据采集器出现死机,需进入观测山洞对数据采集器进行断电重启操作,然后在浏览器的数据采集器页面上再点击“ON”按钮(见图1),开启数据流。
由于此数据采集器死机现象相对较多,为避免观测人员进山洞对观测环境造成影响,曾使用某品牌的智能插座,将数据采集器的供电电源接在智能插座的输出上。在需要断电重启时,不必再进入观测山洞,利用手机安装的APP控制智能插座,进行一次“电源关”与“电源开”操作,完成断电重启。由于此类智能插座需要接入互联网,不适合未接入互联网的站点,并且未开放API接口,无法编程实现死机时的及时自动复位请求,故决定选用可进行二次开发的网络远程控制设备进行替代。
图1 数据采集器页面Fig.1 Data acquisition device page
随着近年来物联网技术的兴起,已有众多厂商提供了价格低廉且可供二次开发的网络远程控制设备,对于简单的应用可省去底层开发成本。文章使用的是广州泥人电子科技有限公司的TCP-KP-I2O2网络远程控制设备,该设备采用工业级设计方案,搭载32位ARM处理器和10/100M以太网网络芯片,具有速度快,运算能力强,稳定性高,抗干扰能力强等特点,可在工业环境中使用(见图2)。
其中,以太网模块采用了W5500解决方案,内部集成全硬件TCP/IP协议栈+MAC+PHY,全硬件协议栈技术采用硬件逻辑门电路实现复杂的TCP/IP协议簇,通过RJ45接口接入网络;单片机的主控芯片采用基于ARM的STM32F103C8T6,通过I/O口与以太网模块直连;继电器通过驱动电路与单片机相连;该设备由5V直流供电,支持多路继电器控制(2)ST公司.STM32F103中文手册,2007.(3)WIZnet公司.W5500数据手册,2015.。实际应用中,将数据采集器的电源接到网络远程控制设备的继电器接线端子上,便可通过编写软件向远程控制设备发送命令,实现数据采集器的断电重启。
图2 网络远程控制设备结构图Fig.2 Network remote control equipment structure
为实现在数据采集器死机时自动断电重启并开启数据流,需编制软件实现定时启动(见图3)。
图3 数据采集器自动检测与断电重启流程Fig.3 The flow of automatic detection and power-off restart of data acquisition device
为直观地显示数据采集器页面,按照值班人员的日常巡查方法,在程序的窗体中添加了WebBrowser控件。微软在.Net 2.0以上版中提供的托管包装WebBrowser控件可以在Windows窗体客户端程序中显示网页,使用Navigate(String)方法将指定的统一资源定位符(URL)处的文档加载到WebBrowser控件中,替换上一个文档。可在Progress Changed事件(文档下载的进度更新时发生)或Document Completed(完成加载文档时发生)事件的处理函数中判断页面是否正常加载。也可根据属性Ready State(WebBrowser控件的当前状态)结合时间进行判断。当加载不成功时,即可判断数据采集器已死机。
先使用网络远程控制设备自带的配置程序对其进行设置,将其设置为TCP服务器模式,并配置相应的IP地址、子网掩码、默认网关和设备端口号。设备工作在此模式时,需编写一个简单的TCP客户端,连接请求由此客户端发起,设备监听到连接请求后与电脑建立连接并进行会话。Socket是网络应用程序的核心,Socket通常也称作“套接字”,用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过“套接字”向网络发出请求或者应答网络请求。使用.NET的System.Net Sockets.Socket类库编写客户端应用,主要有以下步骤:(1) 建立socket连接:Connect();(2) 发送信息与接收消息:Send()和Receive();(3) 关闭连接Close()[2-3]。根据网络远程控制设备二次开发手册,单路继电器延时控制指令格式为:
发送:AT+STACH
如果数据采集器电源接在继电器1的常闭端,则可发送“AT+STACH1=1,10
数据采集器断电重启后,待其页面可加载显示为“The data stream is OFF”时,需点击图1的“ON”按钮开启数据流,否则流服务器仍不可接收到数据流。对页面的HTML代码进行简单分析,第53页图4中,从60行可知点击“ON”按钮是执行的statr_stream()函数。此例中,可使用WebBrowser控件的Document.InvokeScript("start_stream")语句执行在HTML页面中定义的活动脚本函数statr_stream(),实现开启数据流。
图4 页面HTML代码Fig.4 Page HTML code
图5 软件运行界面Fig.5 Software running screen
编译后的软件界面如图5所示,点击“数采检测”,连接数据采集器页面,并显示在WebBrowser框内,如果页面不可连接,将给出提示信息。点击“重启数采”,控制网络远程控制设备的继电器吸合10秒后断开,实现断电重启,然后在数据采集器页面可连接时,开启数据流。当勾选“自动”复选框后,软件将每间隔指定的分钟数,对数据采集器检测一次,“死机时”自动断电重启,并开启数据流。
文中介绍的网络远程控制设备及编写的自动处理软件已应用于太原台。该项改进措施减轻了观测人员的工作负担,有效提高了工作效率,为做好仪器设备运维工作、提高观测设备连续率做出了积极探索。另外,所介绍的硬件及软件编程方法,对有类似需求的人员有参考借鉴价值。