摘" 要:通用物联网平台能有效整合企业的物联网设备,让企业实现数字化管理。文章对面向发电机组的通用物联网平台的关键技术进行分析,首先分析物联网平台的体系架构,包括基础架构、技术选型和功能设计等方面。其次重点探讨平台实现过程中的几个关键技术,包括场景联动、Netty信息服务、时序数据挖掘等,并通过伪代码解析了技术的实现过程。最后,对平台进行部署,实现对发电机控制器的监控,并通过了检测机构测试,在发电设备生产企业具备应用和推广价值。
关键词:发电机组;物联网平台;场景联动;时序数据挖掘
中图分类号:TP391.4;TN929.5" 文献标识码:A" 文章编号:2096-4706(2024)22-0165-07
Key Technology Analysis of General Internet of Things Platform for Generator Set
Abstract: The general Internet of Things platform can effectively integrate the Internet of Things devices of enterprises, enabling them to achieve digital management. This paper analyzes the key technologies of the general Internet of Things platform for generator set. Firstly, it analyzes the system architecture of the Internet of Things platform, including aspects of infrastructure, technology selection, functional design, and so on. Secondly, it focuses on several key technologies in the platform implementation process, including scene linkage, Netty information service, time series data mining and so on, and analyzes the implementation process of the technology through pseudo-code. Finally, the platform is deployed to realize the monitoring of the generator controller, and passes the test of the detection mechanism, which has the application and promotion value in the power generation equipment production enterprises.
Keywords: generator set; Internet of Things platform; scene linkage; time series data mining
0" 引" 言
随着科技的发展,物联网已经成为当今社会的一个重要领域[1]。发电机组作为重要的电力设备,其物联网应用也日益广泛。截至2022年,全球物联网设备数量已经超过了500亿台[2],其中包括一定数量的发电机组设备,被广泛用于智能电力、智能能源管理、智能工厂等多个领域。在发电机组物联网中,各种发电机组设备通过互联网连接,形成了一个庞大的网络,实现了信息的传递和控制交互。发电机组物联网平台作为核心组成部分,通过对物联网系统的设计与实现,可以提高发电机组设备的智能化水平,使其更加适应现代化、智能化的电力需求。使用物联网平台,人们可以实现对发电机组的远程监控和管理,降低维护成本,提高设备的运行效率和可靠性,提高电力供应的稳定性和安全性,从而提高电力生产的效率和质量[3]。
物联网设备在通信协议、联网技术和接口上的差异为企业实现数字化管理带来一定的挑战和不足,设计使用通用的物联网平台可以为解决上述情况提供帮助。首先,采用标准化的通信协议和接口,能够兼容多种设备和传感器,有助于统一设备之间的通信和数据传输,减少兼容性问题。其次,采用模块化设计,能够根据企业的需求进行灵活的扩展和定制,满足不同应用场景的需求,提高系统的适应性。最后,在数据整合处理和异常监测方面更易于集成设计实现,利用数据处理和分析能力,能够整合来自不同设备的数据,并进行统一的处理和分析,提高数据利用的效率。同时,采用多种监测机制保障预警、故障数据的发现,有助于降低设备故障风险,提高设备的可靠性。
1" 物联网平台架构
1.1" 基础架构和功能
通过对ThingsBoard、FastBee等开源的物联网平台进行分析,参考魏建林[4]、邓圣[5]和王浩[6]等学者的研究成果,物联网平台的基础架构和功能可划分如下。
1.1.1" 基础架构
平台的基础架构具体如下:
1)设备层。物联网设备与其传感器进行交互的部分,物联网设备通过网络(例如,Wi-Fi、ZigBee、蓝牙等)与网关层进行通信。
2)网关层。网关负责从设备层收集数据,并将其转发到服务器层[7]。网关可以是一个专用的硬件设备,也可以是在现有硬件(如树莓派)上运行的软件。
3)服务器层。物联网平台的核心,负责处理来自网关的数据,并提供Web和API接口。
4)应用层。用户界面和数据可视化所在的部分,用户可以通过浏览器或移动应用程序与平台进行交互。
1.1.2" 基础功能
平台的基础功能具体如下:
1)设备管理。平台提供设备注册、设备分组、设备状态查看等功能,用户可以方便地管理大量的物联网设备。
2)数据收集与处理。接收来自设备的实时数据,并进行处理、存储,支持对数据的历史查询和分析。
3)规则引擎。提供相应的规则引擎,可以根据设备发送的数据触发各种动作,例如发送电子邮件、SMS通知,或者通过MQTT、HTTP等方式与其他系统进行交互。
4)数据监控。提供数据可视化工具实时查看设备数据,支持向设备下发控制指令。
5)插件系统。支持插件扩展,用户可以通过编写插件来增加新的功能,例如支持新的硬件设备、集成外部服务等。
6)安全性。支持设备认证、数据加密等功能,确保数据和设备的安全性。
1.2" 技术选型及功能设计
面向发电机组的物联网平台在技术复杂性、专业性要求、安全性和可靠性、定制化需求等方面都比普通物联网平台有更高的难度。在技术复杂性方面,由于发电机组涉及大量的实时数据监测和分析,包括设备状态、运行参数、故障预警等,使得发电机组物联网平台需要应对更复杂的技术挑战,这需要平台具备高性能的数据处理和分析能力,以确保数据的准确性和实时性。在专业性方面,发电机组物联网平台需要具备专业的发电机组领域知识。这涉及发电设备的专业术语、工作原理、故障模式等,需要具备相关领域的专业背景,以确保平台的可用性和实用性。在安全性和可靠性方面,发电机组物联网平台对安全性和可靠性有更高的要求。发电机组是工业领域的重要设备,其运行状态直接关系到生产安全和生产效率。平台需要确保数据的安全传输和存储,防止数据泄露和篡改。同时,平台需要具备高可靠性和稳定性,确保在任何情况下都能提供准确的数据和服务。在定制化需求方面,不同的发电机组有不同的监测和分析需求。平台需要具备定制化开发能力,以满足不同客户的需求。这需要平台具备灵活的架构和模块化设计,方便进行定制开发和扩展。本文所设计的发电机组通用物联网平台可使发电机组与其他设备进行无缝对接,实现不同类型设备的互联互通。
设计采用分层架构,在技术选型方面,服务端采用技术包括:Spring Boot、MyBatis、Spring Security、JWT、MySQL、Redis、TDengine等,集成开源框架包含:若依权限管理系统、Netty消息服务器和uCharts高性能跨平台图表库;Web端采用技术包括:ES6、Vue、Vuex、Vue-Router、Vue-CLI、Axios、Element-UI等,即使用ES6法来编写,Vue作为主要框架,Vuex管理状态,Vue-Router管理路由,Axios处理HTTP请求,Element-UI提供UI组件,并通过Vue-CLI快速搭建和开发项目;考虑兼具硬件端多样性,配置支持接入ESP-IDF、Arduino、FreeRTOS、Python、Lua等相关开发框架、原型平台和系统语言的设备通信协议。经过分析设计,平台构架及功能模块如图1所示。
2" 关键技术分析
2.1" 场景联动
发电机组状态变化时(如市电出现过压、欠压、缺相等异常情况),发电机组控制器可以通过条件设定,自动执行ATS的切换、过程延时、即时状态处理、设备启停等操作,但在某些场景或者控制器功能局限的情况下,在平台中仍然需要人工手动操作控制器,这样会增加操作烦琐性和出错的可能性。为了提升设备运行的可靠性,提升系统的智能化和自动化水平,平台设计场景联动机制,将多个设备和系统连接在一起,让它们根据预设的规则和条件自动执行相应的操作,从而实现设备间的协同工作和优化控制,完成更复杂的任务和应对各种场景需求。
在本文设计的物联网平台中,通过集成智能开关、工业摄像头以及接有发电机组控制器的工业网关,组合成基础场景联动功能。列举预设其中一条具体的联动规则如下:
1)当市电供应恢复正常时,智能开关会自动检测到这一变化,并发送信号给发电机组控制器。
2)发电机组控制器接收到智能开关的信号后,会判断市电已经可用,然后自动关闭发电机组,停止发电,并切换到市电供电模式。
3)与此同时,工业摄像头会持续监控发电机组控制器的运行状态。当发电机组控制器进行市电开启或关闭发电机的操作时,摄像头会将这一运行状态实时显示在监控画面上。
这条场景联动规则的作用在于,它实现了市电与发电机的自动切换,减轻了人工操作的负担,提高了供电的稳定性和可靠性。同时,通过工业摄像头的实时监控,使得发电机组的运行状态一目了然,便于及时发现问题并进行处理。以下为规则的伪代码:
// 初始化
初始化智能开关,发电机组控制器,工业摄像头
连接到物联网平台
// 智能开关检测市电状态
while (真) {
if (智能开关.检测市电恢复正常()) {
智能开关.发送信号给发电机组控制器()
}
}
// 发电机组控制器接收智能开关信号并判断市电状态
while (真) {
if (发电机组控制器.接收信号()) {
if (发电机组控制器.判断市电可用()) {
发电机组控制器.关闭发电机组()
发电机组控制器.切换至市电供电模式()
}
}
}
// 工业摄像头监控发电机组控制器运行状态
while (真) {
摄像头画面 = 工业摄像头.获取监控画面()
显示画面(摄像头画面)
if (发电机组控制器.状态变更()) {
工业摄像头.更新监控画面()
}
}
2.2" Netty消息服务器
物联网平台中的消息服务器主要负责处理设备之间的消息通信,能够稳定地承载大规模的MQTT客户端连接[8],在设备连接、消息路由和数据处理方面起到重要的作用,是确保物联网平台稳定运行的关键组件。它还具有强大的扩展性,支持定制多种认证方式,并能高效地将消息存储到后端数据库中。为了满足不同的物联网协议需求,消息服务器通常会支持完整的物联网协议,如MQTT、MQTT-SN、CoAP、WebSocket或私有协议。
在平台设计中选择采用Netty而不采用EMQ X的因素在于应用场景的需求。Netty是一个基于Java NIO的网络编程框架,可以用于开发高性能、高可靠性的网络应用程序[9],涵盖HTTP、WebSocket、SSL、TCP和UDP等协议的服务器和客户端。虽然Netty的内部实现复杂,但它提供了简单易用的API,能够将网络处理代码与业务逻辑解耦。由于完全基于NIO,Netty具备异步处理能力,有助于提高系统的可扩展性。而EMQ X则是专门针对MQTT协议的开源分布式消息服务器。它支持标准MQTT v3.1和v3.1.1,并且设计之初就采用了分布式集群架构,可以实现弹性水平扩展,从而稳定地容纳大规模的MQTT客户端接入。其优势包括支持大规模部署、高可用性、横向可扩展性、高性能和高可靠,还提供了丰富的企业功能。基于兼顾通用的网络应用需求,尤其是接入不同协议设备进行场景联动,所以选择搭建Netty消息服务器。
2.2.1" Netty消息服务器的主要组件
Netty作为物联网的消息服务器的主要组件包括以下几个部分:
1)Channel。Netty中的基础组件,代表一个通信通道,用于管理和维护与服务器连接的设备通道。
2)EventLoop。Netty中的事件循环机制,负责处理I/O操作和执行相关的任务,用于处理设备发送的消息和服务器与设备之间的通信事件。
3)ChannelHandler。Netty中的消息处理器,用于处理Channel中的事件和数据,可以自定义ChannelHandler来处理设备消息的逻辑,例如解析消息协议、处理设备数据等。
4)ChannelPipeline。Netty中的消息处理流水线,管理ChannelHandler的执行顺序,通过配置ChannelPipeline,可以将消息处理逻辑组装成一条流水线,实现消息的有序处理。
2.2.2" 设备在信息总线中的处理过程
以采用MQTT传输协议的设备为例,主要过程包括创建Netty服务器Bootstrap,配置Channel为NioServerSocketChannel,设置事件处理器来添加MQTT解码器、编码器和消息处理器[10]。在消息处理器中,根据接收到的MQTT消息类型进行相应的处理逻辑,包括连接请求、订阅请求和发布的消息等。具体的处理逻辑可以根据业务需求进行实现。对应的伪代码如下:
// 创建Netty服务器Bootstrap
ServerBootstrap serverBootstrap = new ServerBootstrap();
// 配置Channel为NioServerSocketChannel
serverBootstrap.channel(NioServerSocketChannel.class);
// 设置事件处理器
serverBootstrap.childHandler(new ChannelInitializerlt;SocketChannelgt;() {
@Override
protected void initChannel(SocketChannel ch) throws Exception {
ChannelPipeline pipeline = ch.pipeline();
// 添加MQTT解码器
pipeline.addLast(MqttDecoder.INSTANCE);
// 添加MQTT编码器
pipeline.addLast(MqttEncoder.INSTANCE);
// 添加MQTT消息处理器
pipeline.addLast(new MqttMessageHandler());
}
});
// 绑定服务器到指定端口并启动
ChannelFuture future = serverBootstrap.bind(port).sync();
// 等待服务器关闭
future.channel().closeFuture().sync();
// MQTT消息处理器类
class MqttMessageHandler extends SimpleChannelInboundHandlerlt;MqttMessagegt; {
@Override
protected void channelRead0(ChannelHandlerContext ctx, MqttMessage msg) throws Exception {
// 处理接收到的MQTT消息
switch (msg.messageType()) {
case CONNECT:
// 处理连接请求
handleConnect(ctx, (MqttConnectMessage) msg);
break;
case SUBSCRIBE:
// 处理订阅请求
handleSubscribe(ctx, (MqttSubscribeMessage) msg);
break;
case PUBLISH:
// 处理发布的消息
handlePublish(ctx, (MqttPublishMessage) msg);
break;
// 其他消息类型的处理逻辑...
}
}
private void handleConnect(ChannelHandlerContext ctx, MqttConnectMessage msg) {
// 处理连接请求逻辑,可以包括认证等步骤...
}
private void handleSubscribe(ChannelHandlerContext ctx, MqttSubscribeMessage msg) {
// 处理订阅请求逻辑,更新订阅信息、发送SUBACK等步骤...
}
private void handlePublish(ChannelHandlerContext ctx, MqttPublishMessage msg) {
// 处理发布的消息逻辑,根据QoS等级进行处理、发送给订阅者等步骤...
}
}
2.3" 时序数据挖掘
对发电机组的时序数据进行挖掘有助于提高发电机组的运行效率、预测未来行为、优化能源管理、故障诊断与排除以及提升安全性。本文设计中采用时序数据库TDengine+高级分析软件Seeq的架构,通过TDengineJava connector,支持Seeq查询TDengine提供的时序数据,通过登录Seeq服务页面并创建Seeq Workbench,选择数据源搜索结果,并根据需求选择不同的工具进行数据展示或预测,所提供的数据分析和计算功能如表1所示。
此外,Seeq还提供了一个功能强大的数据分析平台Seeq Data Lab,可利用Python编写机器学习模型实现更复杂的数据挖掘功能。以下为Seeq Data Lab平台中进行TDengine日志时序数据分析的基础代码实例,用于发电机控制器的MQTT协议上传掉包异常数据预测:
# 1. 数据导入,假设已经将数据从TDengine导出为CSV格式,并上传到Seeq Data Lab平台
data = seeq.load_data(\"path_to_your_data.csv\")
# 2. 数据清洗和预处理,根据数据情况进行清洗和预处理
data = data.dropna()" # 删除缺失值
data = data[data[mqtt_upload_status] != \"normal\"]" # 只保留非正常的上传记录
# 3. 特征工程,提取与MQTT上传掉包相关的特征,如时间戳、设备ID、上传的数据包大小等
features = data[[timestamp, device_id, packet_size]]
target = data[mqtt_upload_status]" # 我们的目标是预测这个状态
# 4. 建立模型,使用随机森林作为示例模型
X_train, X_test, y_train, y_test = train_test_split(features, target, test_size=0.2)
model = RandomForestRegressor()
model.fit(X_train, y_train)
# 5. 模型评估和优化,根据MSE或其他评估指标进行模型优化,如调整参数、使用其他算法等
y_pred = model.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
print(f\"Model MSE: {mse}\")
# 6. 预测,使用优化后的模型进行预测,例如预测下一个小时的MQTT上传状态
next_hour_data = ..." # 待预测的数据,格式应与前面的数据一致
next_hour_prediction = model.predict(next_hour_data)
print(f\"Next hour prediction: {next_hour_prediction}\")
3" 平台实现及应用
依据上述技术架构,平台完成设计并部署测试(https://pureiot.6do.org),通过模拟(MQTTX客户端)和真机(孚创GEC6120D和GEC6520D发电机控制器+智嵌GD2100YD 4G网关)接入,实现对每台控制器全部(共325条)数据参数的采集和控制。通过接入海康DS-2DE3Q144MY-T/GLSE设备,实现单设备双路摄像头监测。在平台中,可利用一个摄像头拍摄控制器显示屏信息及按键指示灯状态,另一个摄像头通过控件交互进行360°拍摄发电设备周边环境。摄像头与控制器建立了多组场景联动规则,形成发电设备安全运行保障机制。平台通过第三方国家级专业检测机构的功能和数据两项技术检测,也在参与项目合作的发电设备生产企业进行了小规模试验,均取得预期效果。以Netty管理为例,其MQTT数据数据分析界面如图2所示。
4" 结" 论
本文详细介绍了一种面向发电机组的物联网平台的设计和关键技术。该平台采用了分层架构,具有设备管理、数据收集与处理、规则引擎、数据监控、插件系统和安全性等功能。同时,针对发电机组的特点,平台还设计了一些特殊的机制和技术,如场景联动、Netty消息服务器和时序数据挖掘等。这些技术和机制的应用可以提高电力供应的稳定性和可靠性,降低维护成本,提高设备的运行效率和可靠性。最后进行平台部署并通过测试,以及在发电设备生产企业使用情况表明,本文所设计的发电机组通用物联网平台具有一定的实用价值和推广意义。
参考文献:
[1] 梁志宇,王宏志.智能物联网时序数据分析关键技术研究综述 [J].智能计算机与应用,2023,13(12):1-8.
[2] 思博伦通信.绿色5G [J].信息通信技术与政策,2019(5):93-94.
[3] 康守信,王贤辉,李铮,等.面向电力物联网的轻量化5G通信关键技术研究 [J].电力科学与工程,2024,40(4):12-20.
[4] 魏建林,李捷.漳州高速柴油发电机组云平台控制系统建设浅析 [J].中国交通信息化,2021(5):128-129.
[5] 邓圣,张初江,陈利芳,等.基于4G通信实现气象站柴油发电机组远程硬件控制系统 [J].气象水文海洋仪器,2022,39(4):116-118.
[6] 王浩.智能化控制系统在大型煤气发电机组中的应用 [J].冶金动力,2023(1):93-97+101.
[7] 王易川,李文钧.基于ZigBee、WiFi和云服务器集群的智能家居系统设计 [J].物联网技术,2018,8(1):76-79.
[8] 黄丽,韩利峰,刘文倩,等.基于MQTT的epics实时数据在微信小程序端的可视化监控系统 [J].仪器仪表用户,2022,29(1):10-14.
[9] 袁双双.基于RPC框架的云视频会议控制微服务设计与实现 [D].南京:东南大学,2021.
[10] 李丹丹.网络安全态势感知引擎的设计与实现 [D].西安:西安电子科技大学,2018.