王琪明, 李怀良,2, 荣文钲, 程亮玮
(1.西南科技大学 国防科技学院,四川 绵阳 621010;2.成都理工大学 地质灾害防治与地质环境保护国家重点实验,四川 成都 610059;3.四川轻化工大学,四川 自贡 643000; 4.西南科技大学 信息工程学院,四川 绵阳 621010)
地震勘探是钻探前勘测石油、天然气资源和固体资源地质找矿的重要手段[1]。因此地震勘探设备处于重要发展地位。电源是目前野外勘探仪器设备中必不可少的核心单元。目前的野外勘探主要以传统的铅蓄电池、发电机、太阳能等供电方式为主,供电方式繁多,未形成统一的标准。而且目前的电源功能较为单一,主要以单纯供电为主,电源保护主要依赖电源自身的内部或外部结构,未考虑不同使用环境下的电源保护问题,轻则容易引起电源供电问题,重则会对勘探设备造成损坏[2]。野外勘探工区范围较广,电源设备数量庞大,人工很难及时发现电源的异常情况,导致隐患排除不及时,从而引发用电设备及电源故障,影响勘探效率。针对上述问题,本文设计了一种可以实时在线监测电源各项工作状态的便携式智能电源系统。
系统总体结构包括电源数据采集单元、云服务器、通用分组无线业务(general packet radio service,GPRS)网络、互联网(Internet)和客户端组成。电源数据采集单元主要进行电源数据采集,包括电源温度、电源电压和电源位置等信息,通过GPRS网络将采集到的数据信息发送至云服务器进行数据处理与存储;利用WiFi和4G网络,客户端可以远程访问云服务器获取电源的相关信息。
电源数据采集单元主要包括电源保护单元和通信单元两部分。电源保护单元通过外围电路采集电源的电压、温度等状态信息,通过通用同步异步收发机(universal synchronous asychronous receiver transmitter,USART)接口传输给通信模块。同时,通信模块通过USART接口接收到电源的GPS定位信息之后,将定位信息和状态信息进行数据打包,并封装协议帧发送至云服务器进行数据处理。
本文主控芯片使用意法半导体生产的STM32F103[3]。电量检测电路选用STM32F103内部自带的模/数转换器(analog to digital converter,ADC),通过单片机的PA0口与上拉电阻R8和下拉电阻R10组成的分压电路可直接对电源电量进行检测,可由式(1)计算得出
(1)
式中Vo为测量电压,Vi为输入电压。采用下拉电容C16和C18滤除杂波来确保测量精度。
温度测量电路主要采用一种“一线总线”接口的温度传感器DS18B20。DS18B20的数据线与单片机的PB12引脚相连,通过上拉电阻的方式进行数据采集。温度采集精度为±0.5 ℃。
由于本文使用的单线圈宏发磁保持继电器需要正负脉冲作为其打开闭合的激发信号,所以本文设计了由LTV—816和UD2—4.5NU组成的脉冲激发电路,其电路图如图1所示。
图1 脉冲激发电路
系统对电压精度要求比较高,因此选用LTV—816作为光耦合器。LTV—816作为信号隔离的接口器件,可以大大增加电路的可靠性,而且利用线性光耦合器可构成光耦反馈电路,通过调节控制端电流来改变占空比,达到精密稳压目的。同时光耦可以完成电—光—电的转换,从而达到输入信号与输出信号隔离的作用[4]。UD2—4.5NU为一个单刀双掷开关,通过管脚3与管脚2,管脚4的闭合关断以及管脚6与管脚5,管脚7的闭合关断来形成一个±12 V的脉冲作为单线圈宏发磁保持继电器的激发信号,从而控制电路的充放电状态,达到电源保护的目的。
本文通信模块选用具有4 G传输功能和GPS定位功能[5]的SIM808模块[6]。电路图如图2所示。为了实时获取设备位置信息,需要SIM808模块实时处于开机状态,所以使用R25作为下拉电阻来实现模块的上电自启动。本模块通过SIM_TXD串口和SIM_RXD串口实现与SIM卡的通信,以此获得网络支持。图中电感R20和电阻R21采用上拉的方式为GPS天线的射频引脚提供阻抗匹配,以保证线路阻抗和负载阻抗处于最佳传输状态。
图2 SIM808模块电路
为使系统能够稳定运行,高并发的服务器软件是系统的重要组成部分之一,在一定程度上决定了该系统的根本性能。服务器采用分层式结构进行设计,主要包括三层:硬件网络接入层、API管理层和应用(App)展示层。整体结构图如图3所示。硬件网络接入层主要接收来自电源数据采集单元的数据并进行打包;API管理层主要进行数据处理和报警系统管理,Redis和MYSQL进行数据存储;App展示层进行数据展示,包括实时监控、工区与设备管理和历史数据查询[7]。
图3 服务器整体结构
硬件网络接入层主要基于T-io技术框架结构编程,以提高系统吞吐量。为了实现高负载和高并发,所以采用非阻塞(NIO)的模式[8]。此模式为双向通道,可以同时在通道上发送和读取数据,可以提高程序的执行效率。当启动框架配置之后,T-io框架数据接口访问设备IP,并通过TCP/IP协议将电源数据采集单元的数据进行打包,通过Zbus消息队列传至API管理层。
数据总体管理结构如图4所示。小程序访问接口或Web浏览器访问接口通过数据管理接口调用Redis和MYSQL数据库中的数据。其中MYSQL数据库中可以存放所有数据,包括报警记录、工区设备、用户和历史数据等。而Redis中主要存放调用比较频繁的一些数据,包括实时数据、报警规则和用户Session等信息。Redis为高性能的Key-value数据库,采用HashMap的方式存放数据结构[9]。HashMap的优势是查找和操作的时间复杂度为0,可以减少系统访问数据库的压力,提高系统性能。
图4 数据总体管理结构
由于JFinal具有MVC架构,设计精巧,使用简单,遵循OCO原则,在ActiveRecord的支持下,可以是数据库开发到极致,所以App展示层采用JFinal为主体框架[10]。以RESTful为数据接口,RESTful在调用一个接口时可以不用考虑上下文,不用考虑当前的状态,这就极大地降低了复杂度[11]。用Shiro安全框架来处理身份验证、授权、密码以及会话管理,以保证用户登录信息的安全。在App展示层与API管理层利用RPC作为业务桥梁,App展示层通过Zbus消息队列实现RPC来调用API管理层的接口,从而实现实时数据展示层与业务逻辑层的分离,便于后期软件维护升级。
为了提高用户使用体验感,减少用户手机使用内存,本文采用了“用完即走”特性的微信小程序进行开发,实现与用户实时交互的功能。微信小程序端的设计包括数据动态获取和用户交互界面的设计。通过Request请求以Post方法动态向服务器请求数据,实现数据动态获取。采用框架设计的标签语言WXML,结合基础组件、事件系统,构建出各个页面的结构,通过样式语言WXSS描述 WXML 的组件样式,再利用JavaScript脚本通过Https协议实现向服务器发起请求,动态获取数据驱动WXML进行实时渲染。用户交互界面通过对地图软件的调用,实现地图信息查询功能。功能菜单页列出工区管理、数据查看、设备管理与报警设置四个功能。工区管理和设备管理实现对工区和设备的增删查改,数据查看实现对历史数据的查看,报警设置实现对报警规则的设置和修改。
电源在充放电过程中出现的过充过放情况都会导致电源损伤影响电源寿命。测试条件:放电时用电源(容量为100 Ah)给功率为300 W的用电设备供电,直至电源电量降至临界值,之后用C300充电器(输出电压14.6 V,输出电流10 A)对电源进行充电。为了获得可靠电量信息,此处软件处理部分对ADC数据进行10次采集并求平均值得出最后的实际电量,精度可达±0.01 V。
图5 电量测试
放电曲线中,电源在初始阶段电压快速下降,之后进入电源的平台区,电压变化缓慢。在电源电量接近放完时,电源负载电压开始急剧下降,直至达到放电截止电压。充电曲线中,在充电初始阶段由于电源处于低电量状态,所以此时充电速率较快。之后充电过程进入平缓阶段,电量变化缓慢。当电源电量接近满电状态时电源进入虚充状态,直至达到充电截止电压。综上所述,充电和放电曲线符合电源充放电特性,表明系统的电量监测功能达到设计需求,且具有较高的可靠性。
客户端的功能主要包括对电源工作状态实时监控和位置信息查询。图6为客户端界面。
图6 客户端界面
在一个工区中有三条测试线,每条测试线有12个电源设备,共36个电源设备。电源的工作状态由颜色区分可分为三种状态:绿色为工作正常,黄色为需要充电,红色为电源故障。在客户端可以快速定位需充电或发生故障的电源的地理位置,及时对电源进行充电或故障维修,以保证勘探工程的顺利进行。对于GPS定位,主要采用GPS坐标转火星坐标进行定位,经过实际测量定位精确度在5 m以内,达到实际定位需求。
本文设计实现了一种基于物联网的智能电源监控系统。系统由电源数据采集单元、云服务器和客户端组成。电源数据采集单元采集数据之后通过GPRS网络传输至云服务器,实现对数据的处理与存储,客户端以Post方法动态向服务器请求数据,使电源数据达到界面化显示的效果,实现了对电源工作状态的实时监控和位置跟踪。最终,本系统实现了对电源状态的实时远程监控、电源位置信息追踪和电源特性分析。相较于传统电源提高了电源的使用寿命和安全性。通过对定位信息的获取减少了电源的人为损耗,在地震勘探中具有很大的实际应用价值。