基于MQTT的远程数据采集与实时控制系统设计和应用

2025-02-23 00:00:00刘永战
物联网技术 2025年4期
关键词:实时控制

摘 要:为在网络环境较差的情况下提供可靠的通信服务,设计并实现了一种基于消息队列遥测传输(MQTT)协议的远程数据采集与实时控制系统。MQTT协议作为一款轻量级的物联网通信协议,为该系统实现高实时性的数据交互提供了有力支撑。在系统设计时引入了订阅/发布模式。该设计模式可以有效地对系统功能进行解耦,并对数据进行异步处理,为系统提供灵活的数据处理机制。该系统目前已应用于工程勘探、地球物理探测等领域,在实际应用中验证了系统的可靠性与稳定性。

关键词:MQTT协议;订阅/发布模式;远程数据采集;实时控制;解耦;消息中间件

中图分类号:TP393 文献标识码:A 文章编号:2095-1302(2025)04-00-04

0 引 言

目前,云计算、大数据、物联网和人工智能等相关技术已逐步成熟,并加速推动各行各业的数智化转型。其核心为利用互联网信息化技术,提升产品的信息化和智能化水平,提高企业的生产效率,促进企业的高质量发展。《中国工业互联网产业经济发展白皮书(2023年)》报告指出,5G技术具有速率高、时延低、连接数大等特点。工业互联网可以依托5G技术,实现工业网络安全、效率和自动化水平的提升[1]。5G技术提供的高速网络,使得实时数据传输、实时数据处理分析、实时决策成为了可能。施工作业现场实现了单独作业向专家团队协同作业模式的转变,缩短了施工现场与办公室之间的时空距离,完成了设备数据的快速采集、处理、分析、决策、反馈。

本研究设计并实现了一种基于MQTT的远程数据采集与实时控制系统。MQTT协议作为一款轻量级物联网通信协议,可以在网络环境较差的情况下提供可靠的通信服务。依托5G技术提供的高速网络,MQTT协议可以为施工作业现场设备与服务器之间的数据传输提供高可靠的通信服务。该系统目前已应用于工程勘探、地球物理探测等领域,实现了远程监控设备状态、远程数据传输和远程控制等功能。

1 系统设计

1.1 MQTT协议

1999年,IBM公司发布了MQTT(Message Queuing Telemetry Transport)协议。该协议是一种基于订阅/发布(Subscribe/Publish)模式的通信协议,底层采用TCP/IP协议,其优点在于轻量、扩展性强,在物联网、移动应用等方面应用广泛。

MQTT协议基于二进制实现,是一种低开销、低带宽的即时通信协议,利用极少代码和有限带宽提供实时可靠的消息服务。MQTT协议可替代TCP Socket部分功能,用于手机推送等领域。相对HTTP和XML,MQTT协议可自定义数据通信格式,解析复杂度低[2]。

MQTT协议基于异步发布/订阅模式实现,通过Broker代理服务器将二者关联。其功能包括消息存储和转发,以及订阅关系维护。一次典型的MQTT消息通信流程如图1所示。

消息发布方将消息发送至服务器(Broker)中。当消息抵达服务器后,根据订阅关系,服务器将消息转发给订阅方。目前有多款支持MQTT协议的中间件软件,如ActiveMQ、RocketMQ和RabbitMQ等。

1.2 订阅/发布模式

本研究在设计实时系统时引入了订阅/发布模式。订阅/发布模式作为一种软件设计模式,被广泛应用于基于事件驱动的软件系统中。该设计模式可以对系统内复杂的功能进行解耦,并对数据进行异步处理,提高了系统的响应速度和可靠性[3]。订阅/发布模式由发布者、订阅者、消息和消息中间件构成,如图2所示。

1.2.1 发布者

发布者为消息的生产者,负责产生和发送消息。

1.2.2 订阅者

订阅者为消息的消费者,负责订阅和接收消息。

1.2.3 消息中间件

消息中间件的职责是提供消息缓存队列、记录消息订阅关系以及转发消息。作为消息中转站,消息中间件对系统进行功能解耦,并对消息进行异步处理[4]。

1.2.4 消息

消息包含消息头(header)和消息内容两部分,消息头又包含消息主题和发送时间等信息,消息中间件用消息主题维护消息订阅关系。

系统工作时,发布者与订阅者无需关心对方是否存在,只需与消息中间件连接即可。发布消息时,要携带消息主题。消息首先到达消息中间件,进入缓存队列;然后根据订阅关系,消息中间件将消息转发给该消息主题的所有订阅者。

1.3 系统架构

远程数据采集与实时控制系统架构如图3所示。该系统由采集端软件、控制端软件与服务端软件组成。由于系统采用了订阅/发布模式,所以系统允许多个采集端和控制端接入。

1.3.1 采集端软件

采集端软件部署在设备工作现场,与采集设备在同一现场工作,负责采集设备运行产生的各类数据,可采用ZigBee、CAN总线、串口、TCP/UDP、RS 232、RS 485等通信协议与设备进行数据交互。采集端软件采集设备运行数据,然后发送至服务器消息中间件;消息中间件再把数据转发到控制端,同时接收设备控制指令。

1.3.2 服务端软件

服务端软件包括Web软件、消息中间件和数据服务。

(1)Web软件

Web软件用于系统用户管理和设备注册。只有授权的用户和设备才能够使用Web软件。同时,Web软件提供了可视化数据大屏,实时展示作业设备的运行状态和采集的数据。

(2)消息中间件

消息中间件是实现高可靠性通信的关键,以及系统实现订阅/发布模式的基础。消息中间件记录各子系统间消息订阅的关系,提供了消息缓存队列,实现了各子系统间消息中转、消息异步处理以及内部功能解耦。

(3)数据服务

数据服务负责业务消息的预处理和存储系统运行时产生的关键数据。将关键数据保存至数据库中,可以回溯设备历史数据,判断设备运行状态是否存在异常。后续可以对数据进行高级应用。

1.3.3 控制端软件

控制端软件通常部署在远程控制大厅的专用计算机上,负责向采集端软件发送控制指令,以及接收远端设备回传的各类数据。控制端软件并不与采集端软件直接通信,而是借助服务器的消息中间件接收采集端软件上传的采集数据以及下发的控制指令。

2 系统实现与关键技术

系统采用C/S和B/S混合架构进行开发,同时各子系统间采用MQTT协议传输数据。采集端与控制端使用C#语言开发;服务端Web软件采用SpringBoot和Vue开发;消息中间件使用ActiveMQ开发;数据服务软件使用SpringBoot和MySQL开发。系统开发遵循“约定gt;配置gt;编码”原则,便于系统维护和功能扩展。

2.1 采集端软件

采集端软件负责采集/上传设备数据、向设备下发控制指令以及接收服务器转发的消息。采集端软件支持本地采集和远程采集。本地采集时无需连接服务器;远程采集时使用设备编号作为自身唯一标识ClientID,服务器验证无误后开始作业。

采集端软件内部通过多线程调度来保证系统的实时性。将采集的设备数据持久化存储到本地硬盘,同时将采集数据格式化后上传至消息中间件。此外,采集软件还提供了一个指令接收线程,负责接收控制端发出的指令。

2.2 Web软件

Web软件采用SpringBoot框架+ Vue框架的前后端分离技术开发,对前后端功能进行解耦,降低后端服务器的压力[5]。Web软件实现了大屏可视化、设备管理、数据查询、消息推送、权限管理和用户管理等功能。Web软件系统架构如图4所示。

2.2.1 可视化数据大屏

可视化数据大屏展示设备的运行状态和最新数据。系统定时读取数据,使用Redis做高速缓存[6],采用可视化报表技术将数据进行渲染,实现了设备运行状态的实时监控。

2.2.2 设备管理

为保证系统安全,只有在系统中注册过的设备才能够接入。通过对设备数据表的增加、删除、修改、查询操作,实现设备的注册和注销。

2.2.3 数据查询

将设备运行期间产生的数据存储到数据库中。为了便于浏览设备历史数据,判断设备运行是否存在异常,系统提供了数据查询接口和界面,允许用户根据指定条件进行相关查询。

2.2.4 消息推送

对设备运行期间的数据进行监测,通过内部数据处理机制,判断设备运转有无异常。当设备数据存在异常时,系统会主动推送消息给用户。

2.2.5 权限管理与用户管理

采用基于角色的访问控制权限(RBAC),实现系统用户访问系统资源的权限控制。创建用户并分配角色,为角色设置不同权限,不同角色用户只能访问特定资源。

2.3 消息中间件

本系统采用Apache ActiveMQ消息中间件。ActiveMQ支持JavaScript、C、C++、Python、.Net等编程语言,提供MQTT协议管理物联网设备,具有强大的功能和灵活性[7]。

本系统采用MQTT+JSON方式,实现各子系统间的通信协议。JSON结构简洁,序列化机制使机器易于解析和编码。实验表明,相较于XML和FSV,JSON拥有更高的传输效率[8]。因此,使用JSON搭配MQTT协议实现实时、高效的网络通信是目前最优的方案。

一条基本的MQTT消息包括消息头和负载(payload)。消息头包括消息主题、消息发送时间等。消息主题分为多个层级。本系统设计的消息主题格式见表1,消息负载格式见表2。

2.4 数据服务软件

数据服务软件实现了ActiveMQ转发、消息接收、消息处理以及设备状态存储和数据测量等功能。数据服务软件订阅了系统的所有消息,解析后使用MyBatis-Plus技术存储在MySQL数据库中。系统支持多个测量设备和多个远程控制终端。若将所有设备的数据存放至一张数据表内,会导致表单数据量过大,查询和存储的效率低下[9]。因此每一个设备都独立建立一张数据表。

2.5 控制端软件

控制端软件负责下发设备控制指令和接收采集端软件上传的数据,并对数据做持久化处理。控制端软件提供用户身份验证功能,系统授权后才能够远程操控作业设备。

为保证系统的实时性,控制端软件内部提供多线程方式进行数据处理。消息接收线程负责接收ActiveMQ消息。ActiveMQ消息接收后存放至缓存队列,由数据处理线程处理。

3 系统应用

基于本研究设计的软件系统架构已先后运用在远程测井系统、远程随钻数据传输系统、远程录井测控系统等项目中,涉及地球物理探测、工程勘探等多个领域。

3.1 远程测井系统

远程测井系统为XX油田搭建了远程测井实时测控服务平台,实现了现场设备的远程操作、测井资料的实时分析和快速评价,并且支持一名操作员对多台现场测井设备同时进行实时操控。该系统投入使用之后,已完成了100余口井的远程测井实验,使测井资料解释评价处理的实时性得到了根本改变,同时也提高了操作员的工作效率[10]。

3.2 远程随钻数据传输系统

远程随钻数据传输系统是一套服务于XX能源科技股份有限公司的远程随钻数据传输服务云平台,可以远程实时监控施工现场所有随钻测量设备的在线状态、施工进度和实时测量数据,具备曲线绘制和数据查询等功能。该系统目前已经正式投入使用,运行稳定可靠,为随钻测量服务的“提质增效”做出了较大贡献。

3.3 远程录井测控系统

远程录井测控系统是一套服务于XX油田的远程录井测控服务云平台,可以对XX公司各类综合录井设备的录井采集软件、传感器采集系统,以及色谱分析仪进行远程控制和远程诊断,并对现场录井设备进行数据采集和远程传输。该系统目前已经正式投入使用,显著提高了录井现场问题的处理效率。

4 结 语

本文设计并实现了一种基于MQTT的远程数据采集与实时控制系统,设计时引入了MQTT协议和订阅/发布设计模式,提高了系统的响应速度和可靠性。该系统目前已应用于工程勘探、地球物理探测等领域,经现场试验后取得了良好的应用效果,证明了该系统软件架构的稳定性,为研发具备远程数据采集和实时控制功能的物联网软件系统提供了借鉴思路。

参考文献

[1]中国工业互联网研究院.中国工业互联网产业经济发展白皮书(2023年)[EB/OL].(2023-12-25).https://caiijs.webtrn.cn/cms/whaty_editor/jsp/upload/file/20231227/1703664546179014747.pdf.

[2]林浒,张家铭,杨海波.基于MQTT协议的即时消息业务设计与实现[J].计算机系统应用,2017,26(3):219-224.

[3]王重楠,王宗陶,鲍忠贵,等.发布/订阅模式测控消息中间件系统设计[J].计算机应用,2015,35(3):878-881.

[4]于江浩.面向RDMA高性能网络的消息中间件低延迟优化研究[D].成都:电子科技大学,2023.

[5]李航,董安明,禹继国,等.基于前后端分离架构的智慧农业物联网系统设计[J].现代电子技术,2022,45(14):63-68.

[6]杨开振,周吉文,梁华辉,等. Java EE互联网轻量级框架整合开发[M].北京:电子工业出版社,2017:136-138.

[7]熊涵.基于Redis分布式消息队列的报文过滤系统的设计与实现[D].成都:电子科技大学,2021.

[8]高静,段会川. JSON数据传输效率研究[J].计算机工程与设计,2011,32(7):2267-2270.

[9]樊荣,郑刚,植耀玲.基于分表的闪电定位系统数据库设计[J].计算机应用,2021,41(z2):136-138.

[10]刘永战,刘信鲁,姜景涛,等.一种网络远程测井实时数据传输系统:CN. 202121029694.3 [P]. 2022-02-01.

猜你喜欢
实时控制
双足步行机器人嵌入式控制系统设计分析
基于OPC技术的电烤箱温度预测控制
科技视界(2017年23期)2017-12-09 00:54:53
智能窗户
青岛市公交循环工况下的增程式汽车Δ—SOC能量策略研究
媒介对现代中学生思想意识的影响
基于LabVIEW微电网实验平台监控系统的设计与实现
探讨ERP系统环境下企业会计的实时控制
利用有线电视网络技术实现智能小区方法的探讨
基于物联网的QoS实时控制技术研究
基于全集成自动化的能耗监控管理系统设计