APP下载

防爆设备智能管理系统数据同步的设计

2016-01-18,殷,王,2,林,3

自动化与仪表 2016年6期
关键词:服务端终端数据库

李 冬 ,殷 红 ,王 丹 ,2,林 涛 ,3

(1.中海油天津化工研究设计院有限公司,天津300131;2.河北工业大学 计算机科学与软件学院,天津 300130;3.河北工业大学 控制科学与工程学院,天津 300130)

防爆电气设备[1-2]作为广泛应用于海上石油平台爆炸危险场所的电气设备,其正确的设计、选型和安装是保障设备性能发挥的基础,是确保海洋石油开发安全生产的重要环节。由于防爆设备的分类多,产生问题的种类多,问题的复杂程度不一,传统的设备检查在处理问题的速度以及高效性上已经越来越不能满足人们的需要。

本文针对现有防爆设备纸质巡检方式繁琐、复杂的问题,设计了一种用于Android平台的方便、快捷的防爆设备智能管理系统。该系统由用于现场信息采集、检查和维护的防爆移动终端和进行数据分析和处理的监控中心组成。实现了设备信息采集、状态检测,完成故障诊断与维护记录。而要实现现场采集数据与服务器数据的同步是该系统的重要环节。

1 数据同步功能分析

防爆设备智能管理系统移动端是运行在Android平台上的系统[3]。移动设备硬件资源有限,这就要求在进行系统设计时不仅要考虑到系统的性能问题,还要考虑系统的内存容量问题。以一个大型的石油开采的国家企业为例,一个企业下边会有多个集团公司,每个集团公司下边有多个子公司,每个子公司下边会有多个生产设施,每个生产设施中有上百台防爆设备需要管理。针对系统巨大的数据量必须给出相应的解决方案,否则系统很有可能因为内存不足而瘫痪。根据实际考察发现,不同防爆区域的防爆设备的种类有很大差异,那么防爆设备智能管理系统的数据就可以以单个防爆区域为界,保证系统只应用于当前防爆区域,系统中所存储的知识库中包含1个公司信息,这样就大大减少了系统的数据量级,保证了系统的内存使用率。

虽然Android平台的防爆设备智能管理系统的数据级是以防爆区域为单位的,但是又要做到对多个防爆区域的整体把控,可以将移动终端数据经过Socket通信同步到区域的服务端,再对区域的服务端进行整合,从而达到对多个防爆区域把控的目的。考虑到防爆设备的无网络工作环境,设计数据同步模块进行移动终端与服务端的数据通信。将所采集到的设备的基本信息和状态信息的数据,以及设备维护记录的数据同步到区域数据库中,区域数据库再与公司总数据库通信,保证公司对所有区域防爆设备的运行状况进行整体把控。

上述设计1个防爆移动终端只应用于1个防爆区域,只存储1个公司的知识库。这样移动终端上的规则库相较于PC机端的规则库不甚全面。因此在对特定故障设备进行诊断时如果没有得到相应的诊断结果,则可以通过在线帮助模块,通过上位机进行更为详细的故障诊断。当操作员在为故障设备进行整修时,尽管系统给出了专家意见,但是在操作中可能存在各种各样的执行问题,这时操作员就可以通过在线帮助模块的在线客服向专家求助,根据专家指导解决当前故障。

2 移动终端设计

2.1 JSON数据结构

JSON(Java script object notation)是一种轻量级的数据交换格式,具有良好的可读性、可扩展性、简单规范性、编码解码比较简单等优点,其结构分为2种,组合2种结构就可以形成复杂的数据结构[4]。其结构如下:

对象对象在JSON中表示为“{}”括起来的内容,数据结构为{key:value,key:value,...}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,易于理解,取值方法为“对象.key”获取属性值,这个属性值的类型可以是数字、字符串、数组、对象几种。

数组数组在JSON中是中括号“[]”括起来的内容, 数据结构为["device","problem","photo",...],取值使用索引获取,字段值的类型可以是数字、字符串、数组、对象几种。

JSON有丰富的编码和解码工具,比较常用的有Gson和JSONObject。Android SDK中提供的org.json包中的JSONObject类库作为解析工具时是通过对key索引的查找来找到JSON key对应的value值,然后创建一个变量用于保存解析结果即可。JSONObject提供2种方法来读取,在开发者确定key必定存在的时候使用 JSONObject.getString(String name)方法来读取即可,在key不确定情况下需要使用 jsonObject.optString(String name)来取值,追踪optString(String name)方法源码可看出,在其未找到这个key时,会默认给予一个空字符串作为返回值。

但是,防爆设备智能管理系统在与服务端进行通信时,传输的数据是整个防爆区域的数据,数据量较大,这时候JSONObject的劣势就被明显扩大化,在开发时间、容错、扩展及版本迭代等方面都存在问题,因此使用谷歌提供的Gson工具类来解析对象,Gson采用反射原理,反射找出所有变量,然后对应上JSON所需要的key,寻找key的过程是不需要开发人员参与的,这样不仅精简了代码,也提高了系统的性能。

JSON封装的实现方案是一个逆向的过程,通过JSONObject方式所调用的方法为jsonObject.put(String name,boolean value) 来添加一个 key&value,而Gson则直接转换实体对象,所调用方法为gson.toJson(Object src)。两者都可达到封装 JSON 数据的目的。org.json包中提供toJSONString()方法,可以查看JSON的字符串结构。

本文的设备信息数据的JSON结构如下:

2.2 异步线程

移动终端与服务端通信时,任务的执行速度受网络环境以及数据量大小等多种因素影响。Android应用中如果一个界面超过5 s没有响应就会出现ANR错误。为了避免ANR错误,本文的数据通信采用异步请求方式处理,移动终端发送上传或下载数据请求后,由异步线程在后台进行执行,不会影响系统本身的使用,当服务端有数据返回时,采用回调方式进行处理。移动终端上传数据时网络请求异步线程流程如图1所示。

图1 移动终端上传数据网络请求异步线程流程Fig.1 Flow chart of mobile terminal upload data network request asynchronous thread

2.3 移动终端数据传输

移动终端与服务端进行通信,上传的数据主要包括设备基本信息、设备问题信息、设备维护记录信息、照片信息等。移动终端向服务端上传数据时,连接成功建立后,首先向服务端发送上传数据标志,表明此次连接的目的。之后对将要上传的数据进行JSON封装,将封装完成的数据发送给服务端。数据发送完成后,移动终端向服务端发送上传完成的信号,等待服务端响应。若移动终端收到服务端接收完成的信号,提示上传成功,关闭Socket连接,此次数据上传服务结束。若6 s后仍未收到服务端接收成功的信号,则提示上传失败,关闭Socket连接,服务结束[5]。移动终端上传数据的流程如图2所示。

图2 移动终端上传数据的流程Fig.2 Flow chart of mobile terminal of upload data

移动终端与服务端进行通信,下载的数据主要包括设备基本信息、设备问题信息、国标信息、设备维护记录信息等。移动终端下载数据时,连接建立成功后移动终端向服务端发送下载数据标志,之后等待服务端的数据。若接收到服务端数据,则对数据进行JSON解析,之后存入本地SQLite数据库中[6]。当收到服务端发出的传输完成的信号,向服务端发送接收完成的信号,提示下载成功,关闭Socket连接,此次下载数据服务结束。若超过规定时间6 s后仍未收到服务端的响应,说明网络环境较差,或者服务端出现故障,则提示下载失败,关闭Socket连接,服务结束。移动终端下载数据的流程如图3所示。

2.4 清除数据

移动终端上传数据完成之后系统要自动清除已经上传完毕的设备信息、诊断记录以及相应的照片。下次设备检查之前,再使用下载功能,从区域数据库同步防爆区域的设备基本信息,以及历史的问题记录。

图3 移动终端下载数据的流程Fig.3 Flow chart of mobile terminal of download data

接口IDbBase负责系统与数据库的交互,DbBase类具体实现了IDbBase接口。移动终端在上传成功后,在回调函数中调用DbBase中的删除数据库中数据的方法,deleteDevice()清空设备信息表,deleteProblem()清空设备问题表,deleteRecord()清空设备记录表,deletePhoto()清空照片信息表等。在清空照片信息表之前,调用deletefile()方法,根据表中记录的照片地址,删除已经成功上传的SD卡中的照片。

3 服务端设计

3.1 文件传输

系统采用基于TCP协议的Socket通信进行移动终端与服务端通信。在进行文件传输时,为了保证服务器能提供高效、稳定的服务,服务端必须建立Buffer池处理传输时的流文件,防止内存碎片。

由于系统需要对维护整修后的设备进行拍照记录维护结果。那么在平均每个区域百台设备的情况下,如果对30%的设备进行了拍照结果记录,那这个内存占用量也是相当巨大。因此不仅要对拍照后的照片进行压缩,保存为bitmap格式,也要定期将照片上传到服务端存储,然后清除已上传的照片,降低系统内存溢出的风险。

在对设备进行检查的过程中,采用的是防爆设备检查的国家标准,为了保证设备检查的正确性、规范性,必须不定时更新相关的设备检查国家标准。因此数据同步模块还要实现对防爆设备检查的国家标准的实时更新。

移动终端向服务端传输设备维护记录的照片时,是以文件的形式进行传输的。从服务端同步最新的国标时,也是以文件的形式传输的。文件的读取方式大致分为2种,流和BASE64。本文采用流方式读取。因为移动终端的内存有限,文件采用写入的方式存放在存储空间,为避免发生内存溢出,流文件每次读取的大小都固定为10 kb,每次读取之后就写入存储空间,当数据总长和读取总长一致就代表文件下载成功。因此进行文件传输时,要先传输文件的大小,接收之后方可进行大小比对,判断文件是否成功接收。相比于读取,上传则较为复杂,文件上传一般是使用流文件。而单文件和多文件实际步骤上差别不大,正如文件读取一样,文件上传通过写入流到网络请求中再提交到服务端即可。

3.2 服务端数据传输

服务端接收数据时,连接建立成功并收到移动终端的上传数据请求标志后,服务端等待接收移动终端数据。服务端收到移动终端数据后,对收到的数据进行JSON解析,并将解析后的数据存入数据库中。若服务端收到移动终端的上传完成的信号,则向移动终端发送接收完成的信号,关闭Socket连接服务结束。若超过规定时间6 s后仍未收到移动终端的响应,说明网络环境较差,或者移动终端出现故障,则接收失败,关闭 Socket连接,服务结束。服务端接收数据的流程如图4所示。

服务端发送数据时,连接建立成功并收到移动终端下载数据请求标志后,服务端从区域数据库中查找数据,并封装成JSON格式,发送给移动终端。服务端发送完数据后,向移动终端发出传输完成的信号,等待移动终端响应。若收到移动终端接收完成的信号后,发送成功,关闭Socket连接,服务结束。若超过规定时间6 s后仍未收到移动终端的响应,说明网络环境较差,或者移动终端出现故障,则发送失败,关闭Socket连接,服务结束。服务端发送数据的流程如图5所示。

图5 服务端发送数据的流程Fig.5 Flow chart of server sending data

3.3 数据同步

数据同步模块主要负责移动终端和服务端之间的数据通信。移动终端向服务端上传新的设备基本信息、设备问题记录、设备维护记录等数据,上传成功后自动清空已经上传完毕的诊断记录以及相应的照片。移动终端从服务器下载防爆区域的设备基本信息,某一时间段的设备历史问题记录,以及最新的防爆设备检查国家标准。

移动终端通过SocketActivity与服务端进行数据通信。首先SocketActivity提供IP地址和端口号调用异步请求类HttpSocketTask,发起Socket连接,并进行数据交互,之后SocketActivity中doSocket-Task()回调异步请求结果。进行数据交互时,需要与本地数据库进行交互,IDbBase是负责程序与本地数据库交互的接口,DbBase是接口的实现类。主要是对数据库中的数据进行存储、删除和修改。移动终端与服务端通信的类图如图6所示。

图6 移动终端与服务端通信类图Fig.6 Mobile terminal and server communication class diagram

4 结语

本文详细阐述了移动终端和服务端的数据同步功能,分别确定了移动终端和服务端的数据传输流程,包括数据上传和下载。数据传输实时、准确,保证了智能管理系统的可靠运行。该系统已成功应用于中海石油海南液化天然气有限公司,目前系统运行正常。整个系统可推广到爆炸危险场所防爆电气设备管理中。

[1]国家安全生产监督管理总局.危险场所电气防爆安全规范:AQ3009-2007[S].北京:煤炭工业出版社,2008.

[2]国家质量技术监督局.爆炸性气体环境用电气设备 第15部分:危险场所电气安装(煤矿除外):GB3836.15-2000[S].北京:中国标准出版社,2001.

[3]何玉辉,原建伟,王坤.基于Android平台手工电弧焊工艺专家系统的研究与实现[J].热加工工艺,2014,43(23):215-218.

[4]范会敏,陈棚,张萌.基于Android的故障诊断专家系统设计与实现[J].石油管材与仪器,2015,1(4):21-24.

[5]戴建国,赖军臣.基于图像规则与Android手机的棉花病虫害诊断系统[J].农业机械学报,2015,46(1):35-44.

[6]高洪岩.Android学习精要[M].北京:清华大学出版社,2012.

猜你喜欢

服务端终端数据库
X美术馆首届三年展:“终端〉_How Do We Begin?”
通信控制服务器(CCS)维护终端的设计与实现
GSM-R手持终端呼叫FAS失败案例分析
新时期《移动Web服务端开发》课程教学改革的研究
数据库
数据库
数据库
数据库
ABB Elastimold 10kV电缆终端及中间接头
摸清黑客套路防范木马侵入