隧道防护门远程监测系统设计与实现

2022-02-20 06:11周奇才汤鑫康熊肖磊
起重运输机械 2022年23期
关键词:防护门数据量隧道

周奇才 汤鑫康 赵 炯 熊肖磊 王 伟

同济大学机械与能源工程学院 上海 201800

0 引言

随着铁路里程的增长,铁路隧道的数量也在急剧增加。隧道作为一个相对封闭的空间,出现火灾将会严重威胁列车行车安全。而铁路隧道防护门是隧道内部重要的防火隔断设备,可有效隔热,防止有害气体蔓延,在防灾避难、保护设备设施安全方面发挥着至关重要的作用。但列车经过隧道时产生的较大侧向风压,会对隧道防护门的可靠性造成破坏,故需对其进行日常检查。而人工巡检存在数据难整理、漏检误检、无系统化管理以及故障报警不及时等问题。为克服人工巡检存在的诸多问题,本文设计实现一套隧道防护门系统,用以提高对隧道防护门设备状态的感知能力。

1 相关技术及设计思想

本系统数据展示、服务开发、数据存储以及数据传输主要应用了ECharts图表库、Spring Boot框架、MySQL数据库以及MQTT协议等相关技术。同时引入策略模式设计思想,提高项目的可读性和可扩展性。

1.1 策略模式

策略模式是一种软件设计模式,其实现了随场景的变化,对象的行为也会发生变化。通过定义一组算法,同时将这组算法封装成一组具体的策略类,并使它们实现共同的策略接口,从而在不同的场景下,通过传入不同的具体策略,使得对象执行不同的行为[1]。策略模式遵循开闭原则,对算法进行分离,减少代码的耦合,提高代码的可扩展性。策略模式可在不同的条件下,动态地改变对象的行为,减少了if-else分支,提高代码的可读性。其主要构成为:1)抽象策略角色 一般是接口或抽象类;2)具体策略角色 封装了具体的算法和行为;3)环境角色 持有一个策略类的引用,以供外部使用。

1.2 Spring Boot

Spring框架是Java平台上的一款开源应用框架,它是一个轻量级的面向切面编程(AOP)的框架,同时具有控制反转(IOC)的特性。而Spring Boot不仅继承了Spring众多优秀的特性,还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程[2]。

1.3 ECharts

本系统客户端可视化图像的展示依赖于ECharts开源框架。ECharts图表库为开发者提供了丰富的数据可视化选择,除了提供常规的图表选择,例如:柱状图、折线图、散点图以及饼图等外,还提供其他专业图形展示方式,例如:旭日图、K线图、仪表图等。同时该框架的兼容性高,可适配当下绝大多数的浏览器,从而为用户提供丰富直观的交互体验[3]。

1.4 MySQL

MySQL数据库是当前最流行的关系型数据库系统之一。MySQL数据库由于其开源机制,降低了用户使用成本,从而累积了大量用户,形成了稳定庞大的用户社群,便于问题的沟通与解决。MySQL使用的SQL语言是访问数据库的标准语言,易于学习和上手。MySQL基于事务管理、索引和锁机制上做了大量优化,保障了其服务的稳定性和高效性。同时MySQL提供了多种API接口,以支持多种操作系统和多种开发语言。

1.5 MQTT

本系统采用物联网行业的MQTT协议,实现系统的数据采集层与服务层监测数据的传输功能。

MQTT全称为消息队列遥测传输协议,是一种基于发布/订阅模式的轻量级通讯协议。MQTT可通过极少的代码和有限的带宽,为远程连接设备提过实时可靠的消息服务。这一特点使其在物联网、小型设备、移动应用等方面有较广泛的应用。

2 远程监测系统整体架构

远程监测系统是指通过在被监测设备上配置监测装置,对设备的有关数据进行采集、处理,并能在远程控制中心或网络端及时获取对应的数据分析结果、故障报警、趋势分析等功能的系统。远程监测系统能弥补人工巡检的不足,提高被监测设备安全性的同时加强被监测系统的数字化建设。

基于远程监测系统的功能分类,本系统主要分为4层,如图1所示由下往上分别为数据采集层、数据传输层、数据持久层、服务层以及客户端。

图1 系统总体架构

数据采集层主要由数据采集模块、数据传输模块和数据处理模块组成。数据采集模块由振动传感器,风压传感器,温湿度传感器以及摄像头组成。数据传输和处理模块主要通过树莓派实现,配合供电模块和数模转换模块于一体,集成在黑匣子内部。

数据传输层应用MQTT协议,通过配置相同的主题段,实现数据从数据采集层到服务层的流转。数据持久层主要由MySQL数据库和Redis实现数据的持久化和缓存工作。服务层集成了设备信息管理、实时数据展示、设备故障诊断、故障报警等功能,是本系统的核心。

3 存储服务设计

本系统主要将振动数据作为采集分析的主要数据来源。为了采集到适合分析的振动数据,需要将采集器的采样频率设置在1 000 Hz以上。考虑到如果全天候24 h保持1 000 Hz的采样频率,其产生的数据对服务器来说是很大的负担。因此,引入风压传感器,将风压信号作为振动数据采集的启停信号。如果风压超过一定阈值,表明列车经过,此时启动振动信号采集器进行振动数据的采样。当风压信号小于阈值,表明列车已经驶过,停止振动数据的采样。

假设隧道平均半小时经过1趟列车,列车经过时防护门振动采集器的采样时间为4 s,那么1 d产生的数据量为20万,1个月产生的数据量为600万。因此,基于大数据量下的业务背景,需要对数据库进行一定的优化操作。

3.1 SQL及索引优化

以查询SQL语句为例,说明优化过程。查询SQL示例为:

SQL

SELECT * FROM vibrate_sensor

WHERE receive_time BETWEEN

'2021-11-27 19:37:34' AND '2021-11-27 20:16:36'

ORDER BY receive_time;

1)select语句指明字段名称

原语句在数据量4万时的查询耗时为0.24 s。指定查询的内容,将表示检索所有字段的“*”改为具体字段后,查询耗时由0.24 s下降到0.16 s。

2)建立索引

对查询语句进行Explain分析其执行计划,得到结果如表1所示。

表1 Explain分析结果

由MySQL执行计划可知,属性Type的值为All,表示该查询进行了全表扫描,才找到所需要的数据。而全表扫描从查询的效率上来说是最差的,故通过建立索引,来提高查询的效率[4]。索引建立语句为:

SQL

CREATE INDEX receive_time_index ON vibrate_sensor(receive_time);

再次对查询语句进行Explain分析其执行计划,得到如表2所示结果。可以看到Type由All变为了Range,表示当前检索是一个有限的索引扫描,相对于全表扫描查询效率得到了提高。同时属性Key的值为Receive_time_index,表示当前查询使用了索引。最终来说查询耗时下降到0.06 s,查询耗时下降到毫秒级,查询的性能得到了显著提升。

表2 Explain分析结果

3.2 水平分表优化

由以上分析可得,1扇防护门日数据量为20万,月度数据量则为600万,年度数据量约为7 200万。由此可见,随着数据的不断累积,单表的数据量会出现过大的问题,从而导致单表压力过大,索引建立成本高,数据检索效率降低,用户体验也下降等问题。因此,引入水平分表机制,降低每张表的数据量,从而提高查询速度。

水平分表是将一个数据量大的表按照一定的规则拆分成多个结构相同的分表,将数据分散到分表中去[5]。拆分完成后,根据拆分的规则,确定所查询数据所在的表。本文中,根据时间对表进行水平拆分,单表存储1个月内的振动数据。当需要查询时,根据待查询数据的时刻数据,即可定位到数据所在的数据库表。

4 服务层功能模块设计

服务层按功能划分主要分为设备信息管理模块、实时数据展示模块、设备故障诊断模块以及设备故障报警模块等。

4.1 设备信息管理

设备组成主要有隧道信息和防护门信息,其关联关系如图2所示,系统管理着多个隧道的信息,同时每一个隧道下关联着多个防护门的信息。

图2 设备关联图

层级上来看,隧道是防护门的上层,防护门从属于某一特定的隧道。设计隧道信息表与防护门信息表如表3和表4所示,防护门通过Tunnel_id外键关联其所属隧道。同时基于隧道以及防护门的业务管理需求,开发新增,模糊查询,信息更新以及信息删除接口,实现设备信息的系统管理。

表3 隧道信息表

表4 防护门信息表

4.2 实时数据展示

数据展示的内容主要有振动数据、近期振动幅度峰值、风压数据、接近开关状态,防护门现场画面等。当用户在客户端通过浏览器输入URL,本地解析域名,向服务端发起TCP连接请求。客户端与服务器端连接请求建立后,继续发起HTTP连接请求。服务器端响应HTTP请求,封装防护门前端展示界面的HTML、CSS以及其他数据内容,并返回给客户端。客户端浏览器解析返回的数据,并对页面进行渲染最终将防护门实时状态界面呈现给用户。

隧道防护门远程监测系统基于Bootstrap前端框架提供的菜单,导航栏、排版以及对话框等Web组件,搭建起简洁直观、功能齐备的人机交互界面。而设备状态信息的展示上,基于ECharts丰富的商业级数据图表库,调用折线图、柱状图、仪表盘以及饼图等,完成包括振动数据在内的各项设备指标的图形化展示。同时为了满足界面实时刷新数据信息的需求,采用基于JavaScript 的 Ajax 异步交互技术,通过间隔指定时间循环执行Ajax请求以获取最新的设备实时数据,并通过ECharts实现实时动态展示的效果,前后端交互框架如图3所示。

图3 前后端交互框架

4.3 设备故障诊断

系统在接收到设备数据后,根据指定规则对设备数据进行分析,评估设备状态,设备故障诊断流程如图4所示。

图4 设备故障诊断流程

对于低频振动,振动幅度的大小是振动强度的标识[6]。设定合理的振动幅度阈值,当振动幅度峰值超过了设定阈值的时候,判定防护门存在一定故障隐患,向相关工作人员发出报警信号;振动频率是指单位时间内振动的次数。在机械设备中,每一个运动的零部件都有其特定的振动频率。可以通过分析设备的频率特征,来判断设备当前的健康状态。接近开关安装在防护门门体的锁盒内,用于记录防护门的开闭情况。通过判断接近开关的开闭情况,直观地监测防护门的开闭情况。

随着需求的不断迭代,故障诊断的规则也在不断地更新,即需要在不同的场景下采用不同的规则对底层源数据进行处理。而规则的新增和修改将导致代码的维护难度不断增加,因此,引入策略模式思想提高规则扩展的灵活性。例如引入图像识别算法,对防护门现场图像进行在线检测[7]。只需要将图像识别算法封装成具体策略类,并与其他算法实现共同的策略接口,即可实现特定场景下调用图像识别策略完成防护门状态的检测。

4.4 设备故障报警

当系统识别到设备存在异常时,发出故障报警。根据指定规则调用通知模块,并向相关人员发送设备异常信息。设备故障报警流程如图5所示。

图5 设备故障报警流程

其中通知模块根据事件的紧急级别分为邮件通知和短信通知,如图6所示。由于发送邮件或短信的流程较长,耗时较久,故使用RabbitMQ技术异步发送实现长流程的解耦[8]。

图6 通知模块运行流程

5 结语

本文基于Spring Boot框架,搭建起一套B/S架构模型下的隧道防护门远程监测系统。系统采用MySQL数据库实现采集器数据的存储工作,并针对千万级数据的业务背景,提出索引优化和分表设计的存储方案。引入策略模式思想,对故障诊断算法进行分离,减少代码的耦合,提高代码的可读性和可扩展性。页面展示采用Bootstrap前端框架以及ECharts图表库实现防护门数据及状态的可视化呈现。

业务功能上,隧道防护门系统实隧道防护门通过设备信息管理,实时状态展示和设备故障报警,搭建防护门管理的数字化基础,实现防护门管理的信息化,提高防护门监控的实时性,降低巡检产生的人力成本,解决人工巡检存在数据难整理、漏检误检、无系统化管理以及故障报警不及时等问题。

猜你喜欢
防护门数据量隧道
水下明挖隧道防护门设置对疏散救援影响研究
气密防护门风致飞射物冲击失效评估
基于大数据量的初至层析成像算法优化
高刷新率不容易显示器需求与接口标准带宽
宽带信号采集与大数据量传输系统设计与研究
预见2019:隧道的微光
神奇的泥巴山隧道
一种火箭起飞后快速关闭的液氢防护塔
黑乎乎的隧道好可怕
温压弹爆炸冲击波作用下防护门破坏模式研究