基于心跳包的Socket通信在危险源无线监测中的应用研究*
2018-04-10朱建淼华金晶汪圣华
朱建淼 贾 波 华金晶 汪圣华
浙江省安全生产科学研究院 浙江省安全工程与技术研究重点实验室
危险源是安全生产和人身安全重要管控的内容,一旦发生事故将对财产和人身构成极大威胁。随着社会的发展,由危险源产生的重大灾害事故也屡屡发生,因此做好危险源的管控尤为重要。目前重大危险源监测、监控、预警技术,已成为我国当前安全科学领域研究热点,部分领域已经推广应用了一系列监测预警系统,包括有限空间危险性气体检测分析系统[1]、重大危险源监控系统[2]、尾矿库在线监控检测系统等监测监控系统[3]。
在监测系统无线架构中,数据通讯一般采用服务器轮询客户端的方式,但当某个客户终端出现故障时,往往会引起服务器资源的死锁和浪费,导致其余终端数据通讯的阻塞。因此,本文根据安全生产中危险源无线监测工作中遇到的实际情况,提出了一种基于心跳包的数据通讯机制,详细介绍了通讯模型并进行了工程示范。
1 心跳包在数据通讯中的作用
心跳包机制是实现网络高效、高可靠性,保证危险源监测的正常运行和服务不中断的常用技术,通过收发自定义协议的、定时的、循环发送的数据包,判断节点是否在线。目前已广泛用于网络通信服务、故障检测等领域。
2 心跳模型设计
2.1 Socket基本原理
对于存在大量数据传输的网络通信系统,为了保证通信可靠,大多采用流式套接字,一般采用的是TCP协议,建立双向、有序、无重复的数据流服务[4]。Socket连接一个运行于客户端(ClientSocket),另一个运行于服务器端(ServerSocket),包含:服务器监听、客户端请求和连接确认三个阶段。连接建立后,客户机和服务器之间就可以调用receive()和send()的函数来实现数据流的发送和接收,数据传送结束后调用close()关闭。
2.2 心跳包机制
基于Socket通信时,实际应用中经常会出现服务器无法判断客户端状态,即:服务器无法区分客户端是长时间空闲还是掉线。所以,必须建立心跳包来判断连接是否正常。而心跳数据包也是在服务器与客户机之间建立连接后,循环调用receive()和send()来接收和发送一种自定义的特定数据包。
2.3 心跳包模型的设计与实现
一般心跳包的主动发包方可以是客户也可以是服务端,由于考虑到危险源在线监测的数据单向性为主,本文以单服务器/多客户机为基本模型,数据中心为服务器,DTU设备作为客户端[5]。
根据危险源监测机制,心跳模型为:客户终端主动向服务器发送自定义心跳数据包,数据包含用于检测连接的数据及终端标识,当服务器收到心跳包数据后,通过后台数据库查询,直接反馈传感器的查询指令,利用DTU的透传功能将查询指令发送至传感器,当传感器返回监测数据后,将查询结果解析入库。然后等待下一个心跳包,系统结构,如图1。
图1 数据通信系统结构图
2.4 监测通讯参数设置
监测通讯初始化包括以下三个方面:
(1)设置心跳包的发送周期[6]。本项目工程应用中,考虑到中国移动的通讯效率及项目监测的需求,心跳包频率设置为30s/次,经实践检验,GPRS在线率和监测数据的实时性均达到了项目预期目标,实现了良好的通讯效果。
(2)设置心跳包参数和通讯参数。在项目设计中,将设备标识和心跳包指令融合为一,通过数据库配置,获取连接DTU的仪表查询指令。同时做好DTU的透传通讯配置,主要参数必须与传感器一致。
(3)对获取的查询值进行解析。将终端MODBUS协议的数据解析方式进行配置,实现通信数据的转换入库。
3 基于心跳包的监控系统开发
3.1 应用场景
以喷涂企业安全隐患重点区域喷漆房通风管道通风效率量化监测和预警为例,将基于心跳包的Socket通信机制应用于喷漆房通风系统风速风量在线监测系统,依靠移动互联网GPRS无线传输实现对监测对象的量化检测和实时监测。
项目在杭州市萧山区杭州天宏焊接材料有限公司进行了示范,现场将2台风速传感器安装于喷漆房通风管道,通过现场的数据采集模块、DTU模块的整合应用,实现了实时在线监测。
3.2 设备选型
风速传感器(英格玛YGM305)。根据喷漆房有机溶剂易挥发、可燃、可爆的特性,选用基于伯努力方程和皮托管原理的防爆型管道式空气风量变速器,测量风道截面积的平均流速,监测范围为0~30m/s,防护等级IP65,信号以4~20mA的两线制输出。
数据采集模块(KonNaDC2000-A2-SMX 2400)。选用4路模拟输入,1路485信号输出的串口I/O联网模块,通过4~20mA的电流信号输入转换数字信号并以485串口的MODBUS协议进行输出。
DTU模块(USR-GPRS-730)。具备网络透传功能,实现DTU与网络端的双向透明传输。支持双路网络链接,可将数据向2个服务器发送,实现数据备份、远程异常诊断等功能。设备作为Client客户端链接后,可自定义心跳注册包做标识。选用中国移动物联卡作为GPRS数据通信介质。
3.3 通讯参数设置
串口通讯设置:数据采集模块(KonNaDC2000-A2-SMX2400)默认将设备串口参数设置为:9600,N,8,1,根据数据采集模块参数要求,在DTU中的串口通信设置也设为9600,N,8,1。
网络通讯设置:在DTU模块(USR-GPRS-730)中将网络通讯地址配置为服务器ip地址和链接端口,自定义心跳包标识为Hearthzxh0004,根据中国移动的通讯效率要求和系统实时监测的需求,将心跳频率设为30s/次。
3.4 心跳包应用的数据流
监测系统的数据流运行分服务器和DTU客户端的交互,主要由服务器(数据中心)、DTU模块和前端传感设备组成,将中国移动物联SIM卡置于DTU模块,数据信号以GPRS模式通过INTERNET与服务器建立连接,由DTU的心跳包进行通讯发起,服务器接收数据后判断并解析是否为心跳包,确认后,通过后台配置库获取对应的物联设备查询指令并发送给DTU,DTU通过透传设置将指令直接下发给物联监测设备,物联监测设备通过查询指令反馈查询结果的数据给服务器,服务器则通过MODBUS协议对查询结果的数据进行解析入库,完成数据的交互。数据流图,如图2。
图2 系统交互数据流图
3.5 在线监测系统的建设
在线监测系统分为数据交互系统和监测服务系统,其中数据交互系统分成数据接收、发送指令、数据入库三个模块,实现基于心跳包的Socket数据通信交互机制的应用。数据交互采集系统界面,如图3。
数据交互入库后,通过数据应用层的开发,实现对监测数据的有效管理和展示,监测服务系统展示结果,如图4。
图3 喷漆房通风系统风速风量数据采集交互系统
图4 在线监测数据展示界面-2017年8月11日
4 结论
本文提出了一个基于心跳包的Socket通信解析模型,并将其应用于一个C/S模型的喷漆房通风系统风速风量数据采集系统。测试表明,通过使用心跳包的辨识进行通信发起,实现了非广播式的点对点通信,有利于提升系统的可靠性,极大的节省了网络资源和服务器压力,在基于无线网络通信的危险源远程监控系统中具有良好的移植性和适用性。
[1] 黄文宏,李学盛,王海龙,等.典型石化有限空间危险气体在线监控系统构建[J].浙江化工,2011,42(6):25-27
[2] 蒋诚航,李学盛.基于组态系统的重大危险源储罐监控系统研究[C].安全生产应急管理与安全信息化的实践研究—2015浙江·第四届安全科学与工程技术研讨会论文集,浙江工业大学,2015
[3] 杨杰,李青.地下位移实时监测系统研究[J].中国计量学院学报,2008,(1):41-46
[4] 陈元谋,吴长奇.基于Socket的远程监控的通信系统实现[J].计算机安全,2011,(3):60-62
[5] 刘志雄,余臻,陈燕萍. GPRS DTU 数据中心通信设计[J].工业控制计算机,2007,20(12):23-24
[6] 胡志坤,何多昌,桂卫华,等.基于改进心跳包机制的整流远程监控系统[J].计算机应用,2008,28(2):363-366