基于OneNET云平台的天然气泄漏监测系统
2019-10-10徐汉斌尤军杰
徐汉斌,迟 杨,尤军杰,周 雷
(1.武汉理工大学 机电工程学院,湖北 武汉 430070;2.南京计量测试中心,江苏 南京 210058)
天然气能源和广大人民群众的生活密不可分,然而天然气能源在给人们日常生活带来便利的同时,也带来了潜在的安全隐患问题。对天然气泄漏事件缺乏监测而引发的危害人们生命财产的事件时有发生。目前对于可燃气体泄漏检测,传统的方法一般是采用独立式的可燃气体报警器进行单点现场监测或者采用分线式和总线式的可燃气体报警器进行多节点监测,然后利用有线通信方式构建局域网络进行统一管理。但是独立式可燃气体报警器不能实现远程监控,而有线通信组网的方式又存在布线施工以及维护等问题[1-3]。针对以上问题,设计一种基于物联网的天然气泄漏监测系统,采用WIFI无线通信的方式,依托于中国移动免费开放的物联网OneNET云平台,可以实现对天然气泄漏的远程实时监控及预警。
1 系统总体方案设计
天然气的主要成分为甲烷气体,对天然气泄漏的监测实则是对甲烷(CH4)气体浓度的监测。该系统由探测终端、OneNET云平台以及监测客户端3部分组成。探测终端具备环境数据的采集、处理、报警响应、以及上传数据到云平台的无线通信功能。云服务平台起到对探测终端传输数据的管理、存储作用。监测客户端支持电脑、手机、Pad等,通过互联网对云平台进行远程访问,从而实现对探测终端的实时监测和控制。系统总体框架如图1所示。
图1 系统总体框架
2 系统硬件设计
探测终端如图1所示,主要包括微控制器、电源模块、网络传输模块、GPS定位模块、声光报警模块和甲烷气体检测模块。
微控制器采用STM32F103C8T6芯片,通过USART接口分别与ESP8266 WIFI模块、 GPS模块连接,利用片上资源ADC实现对甲烷气体检测模块输出信号的模数转换获取甲烷气体浓度,并利用片上丰富的I/O口来设计声光报警模块。
对于可燃气体的检测,若按传感器的检测原理分类,主要有催化燃烧型、半导体型、红外线吸收型、热导型和光干涉型等[4-5]。系统中CH4气体检测模块采用的是英国Dynament公司的甲烷红外传感器。该传感器采用非分散性红外线(non-dispersive infrared, NDIR)技术。它是一种基于气体吸收理论的方法。红外光源发出的红外辐射经过一定浓度待测的气体吸收之后,与气体浓度成正比的光谱强度会发生变化,通过求出光谱强度的变化来得到气体的浓度[6]。该传感器采用一体化电路设计,集成度高,内置温度补偿功能,相对于市场上使用较多的催化燃烧式传感器在测量精度、灵敏度、使用寿命和抗干扰能力等方面更具备优势。
探测终端通过设定甲烷气体浓度阈值分为低浓度、高浓度2级自动报警机制。声光报警模块采用LED灯闪烁的颜色,以及无源蜂鸣器震荡频率来实现声光报警的分级功能。如果甲烷红外气体传感器检测到环境中甲烷浓度达到低浓度阈值将触发1级报警,LED黄灯闪烁,蜂鸣器低频鸣响;如果甲烷红外气体传感器检测到环境中甲烷浓度达到高浓度阈值将触发2级报警,LED红灯闪烁,蜂鸣器高频鸣响;如果检测环境正常,则LED绿灯闪烁,蜂鸣器不鸣响。
甲烷气体检测模块将探测到的甲烷气体浓度数据传递给微控制器,微控制器根据报警浓度阈值进行判断,如果气体浓度超过报警浓度阈值,则触发声光报警模块执行动作。通过ESP8266 WIFI模块和GPS模块将采集到的甲烷气体浓度数据和经纬度数据实时上传至OneNET平台,并可接受执行平台指令。
3 系统软件设计
3.1 OneNET平台部署及监测客户端设计
物联网的体系架构可以分为3个层次:感知层、网络层和应用层[7]。OneNET平台在物联网体系中作为网络层,为感知层和应用层搭建连接桥梁,分别为上下游提供中层核心能力,能够适应于高并发以及海量终端接入的应用场景,采用了分布式结构和多重数据保障机制,并且支持多种通信协议。同时OneNET平台也提供Saas层业务服务,可以为用户提供第三方应用开放平台,方便快速搭建用户自己的Web和APP应用[8-11]。
首先在OneNET平台注册账号,创建产品。在建立产品时,需要填写相关信息、选择设备接入协议,本系统采用MQTT协议。建立完产品后,在产品中添加设备。OneNET平台会给每一个设备分配唯一的ID和APIKey用于设备的识别管理,并且提供应用平台通过Restful API方式实现与关联设备的数据流双向交互。笔者利用OneNET平台创建一个天然气泄漏监测项目,并在项目下关联一个探测终端设备和生成监测客户端的Web应用。在探测终端设备中添加探测终端上传的数据流,通过应用编辑器进行监测客户端页面设计,添加显示控件和控制控件,最后发布Web网页链接。
3.2 探测终端软件设计
探测终端具备甲烷气体浓度数据实时采集、地理位置定位、自动声光报警以及与OneNET平台双向通信的功能,为合理高效地利用MCU(microcontroller unit),增强探测终端的快速响应处理能力,采用时间触发合作式任务调度器的机制[12]进行探测终端的软件框架设计。软件主程序流程如图2所示。
图2 软件主程序流程
系统首先对MCU上的硬件外设进行初始化,包括对相关外设时钟、GPIO口、ADC、USART、TIM、看门狗初始化,然后通过延时函数让甲烷红外传感器预热1 min,达到稳定工作状态。之后创建各个任务函数,设定任务循环周期,并将其添加至任务链表。任务包括ADC采集转换气体浓度数据、声光报警判别处理、网络连接/平台接入、发送数据到平台、接收平台消息。接下来程序将进入无限循环的任务调度部分。整个系统以TIM时基为基准,通过定时器中断来记录任务等待时间和更新任务的工作状态,通过在任务调度中查询任务链表的当前任务状态来决定是否执行该任务。
笔者重点实现天然气探测系统的物联网通信,因此在探测终端软件部分主要阐述与OneNET平台通信的软件设计。
为了使程序结构清晰明了,减低程序的耦合性,增加其可读性、可维护性,对通信程序进行分层处理,分为平台协议层和网络设备层。网络设备层又分为设备驱动层和设备应用层,如图3所示。平台协议层封装了基于MQTT协议的相关函数用于与OneNET平台通信,设备应用层封装ESP8266模块相关函数,设备驱动层封装USART串口相关读写、发送、接收函数。
图3 通信程序分层结构
3.2.1 网络连接
探测终端通信模块采用ESP8266-01S,探测终端通过USART串口对ESP8266模块进行读写操作,发送AT指令可访问到OneNET平台。
ESP8266_SendCmd("AT ", "OK"); //启动ESP8266-01S芯片
ESP8266_SendCmd("AT+CWMODE=3 ", "OK"); //配置AP和Station模式
ESP8266_SendCmd("AT+CWJAP="ACRS-YF","87360188yf" ","GOT IP");//接入无线网络
ESP8266_SendCmd("AT+CIPSTART="TCP","183.230.40.39",6002 ", "CONNECT");//连接OneNET平台服务器地址端口
3.2.2 MQTT通信
探测终端与OneNET平台进行通信采用的是MQTT协议[13]。MQTT是基于C/S架构下发布/订阅模式的消息传输协议。作为一种即时通信协议,它具有开销小,对网络环境适应性强的特点,可以保持实时通信并有效降低功耗和网络流量,极其适用于物联网领域。基于此协议,在探测终端通过ESP8266模块访问到OneNET平台时,首先需要发送CONNECT(连接服务端)控制报文,将探测终端的设备名、访问的用户名、密码以及相关会话设置发送至OneNET平台服务器,从而建立探测终端与OneNET平台之间的会话通信。之后为了保证探测终端与OneNET平台之间的网络通信长连接,需要探测终端向OneNET平台定时发送PINGREQ(心跳请求)控制报文。查看OneNET平台关于MQTT的修改协议可知,在上传数据到平台时,应该采用MQTT协议PUBLISH控制报文,特别的是,PUBLISH报文的可变报头的主题名必须是“$dp”。系统中需要上传的数据流包括红、黄、蓝3个LED灯的状态数据,蜂鸣器的状态数据,地理位置信息数据,甲烷气体浓度数据。数据流采用json格式如下:
/* Red_LED 红灯状态
Yellow_LED 黄灯状态
Green_LED 绿灯状态
Beep 蜂鸣器状态
CH4_Concentration 甲烷气体浓度值
GPS 地理经纬度数据
*/
{
"datastreams":[ { "id":"Red_LED", "datapoints":[{"status": red_led_status}]},
{ "id":"Yellow_LED", "datapoints":[{"status": yellow_led_status}]},
{ "id":"Green_LED", "datapoints":[{"status": green_led_status}]},
{"id":"Beep","datapoints":[{"status": beep_status}]},
{ "id":"CH4_Concentration", "datapoints":[{"value": ch4_value}]},
{"id":"GPS","datapoints":[{"longitude":gps_lon ,"dimensions": gps_dim}]} ]
};
ESP8266模块首先通过AT指令与OneNET平台建立网络连接,之后STM32F103C8T6微控制器将要发送的数据流封装成json格式数据包写入ESP8266模块,遵照MQTT协议将数据包发送到OneNET平台。至此完成探测终端上传数据的一系列操作。
4 系统测试
完成整个系统搭建后,对整个系统进行试验测试。甲烷气体在空气中的爆炸界限为5%~15%,因此从安全性的角度考虑,以当前环境中甲烷气体浓度所占爆炸下限值的百分比划分报警等级,设定低浓度报警值为40%,高浓度报警值为60%。分别以浓度值为0.51%、2.53%、3.01%的甲烷瓶装标准气对探测终端依次进行通气断气测试。登录到监测客户端观察甲烷浓度数据实时显示情况以及报警状态的变化。监测客户端界面如图4所示。监测客户端显示界面中折线图显示了在2018年6月4日 16:28 ~2018年6月4日 16:41这段时间内对探测终端通入3种不同浓度的甲烷气体测得数据值及相应变化时刻。仪表盘及控件开关显示了当前甲烷气体浓度占爆炸下限的百分比为60.13%,处于高浓度报警状态,Red_LED 点亮,蜂鸣器高频报警,Yellow_LED和Green_LED关闭,图上显示了该探测终端的地理位置信息。
图4 监测客户端界面显示
5 结论
通过测试结果可以看出,本系统能够实时准确地监测到甲烷气体百分比数据,并及时对监测结果做出报警响应。基于中国移动免费开放的物联网OneNET云平台提供的Saas服务,可以有效帮助用户进行天然气泄漏的远程实时监控。这种基于物联网云服务实现远程监控的方式,符合“万物互联”的时代发展趋势,必将在可燃气体监测领域发挥着越来越重要的作用。