基于 EMQX 和 Neuron 的工业物联网 MQTT Sparkplug 解决方案

news2024/12/22 17:28:31

引言

Sparkplug 是基于 MQTT 的一种专门为工业自动化和物联网应用而设计的通信协议。要搭建 Sparkplug 解决方案,需要两个核心组件:一个是 MQTT Broker,负责消息的分发和管理;另一个是边缘节点,负责将本地设备接入 Broker,以实现实时数据的处理和分析。

在本文中,我们将使用开源分布式 MQTT Broker EMQX,以及边缘工业协议网关软件 Neuron,来构建一个可扩展和稳健的平台,用于实现 Sparkplug 解决方案。我们将详细探讨 Sparkplug 解决方案的架构,并深入了解 EMQX 和 Neuron 在其中所扮演的角色。

EMQX 在 Sparkplug 中的角色

EMQX 用于创建符合 Sparkplug 规范的 MQTT 主题命名空间。Sparkplug 命名空间定义了设备发布和订阅的 MQTT 消息的结构和内容。通过 EMQX,我们可以确保所有发送到和接收自 Sparkplug 命名空间的消息都被正确格式化并符合 Sparkplug 规范。

Neuron 在 Sparkplug 中的角色

Neuron 用于将边缘设备连接到 EMQX Broker 上的 Sparkplug 命名空间。它充当网关的角色,负责从本地传感器和控制器收集数据,并使用 Sparkplug 有效载荷格式将其发布到 EMQX。同时,Neuron 还会订阅 Sparkplug 命名空间中的消息,并根据需要将其转发到本地设备。

EMQX 和 Neuron 共同扮演的新角色

通过协同使用 EMQX 和 Neuron,可以为工业物联网应用创建统一的命名空间。这是一种基于 MQTT 主题的通用命名方式,让设备和应用可以在任何位置使用任何协议进行相互通信。所有的设备和应用都使用相同的 MQTT 主题层次结构,基于一套通用的命名规则和数据模型。这样就实现了设备间的自动发现和通信,无需复杂的路由或转换机制。

Industrial IoT

EMQX 通过定义符合设备和应用的命名规范和数据模型的主题层次结构,来实现对统一命名空间的支持。这样的主题层次结构可以包括设备数据、控制命令、报警和事件等主题,而所有这些主题都以一种标准化的方式组织。这种统一的命名空间设计使得设备和应用能够相互发现和交互。

Neuron 通过使用与 MQTT Broker 一致的命名规则和数据模型,来支持统一的命名空间。这让 Neuron 能够与物联网系统的其他组件进行无缝集成,实现设备在不同地点不同协议的情况下进行通信。

Sparkplug 解决方案架构

使用 EMQX 和 Neuron 的 MQTT Sparkplug 解决方案可以构建为三层架构。如下图所示,所有连接到统一命名空间的设备和应用都可以划分到两个层级,底层的数据生产者或者顶层的数据消费者。而 EMQX 和 Neuron 则位于中间层,扮演了数据交换的角色,实现了数据生产者和消费者之间的通信。

Sparkplug Solution Architecture

  • 自动化层:在自动化生产过程中,自动化层由各种设备和应用组成,它们生成大量的原始和非结构化数据。这些设备和应用多数部署在工厂车间或数据中心。
  • 统一命名空间层:这层由 EMQX MQTT Broker 和 Neuron 网关组成,它们负责数据的传输和转换。Neuron 帮助将传感器或设备数据以 Sparkplug 消息格式发布到 EMQX,EMQX 将数据从生产者转发给订阅者。EMQX 还负责维护系统的状态信息,包括设备及其相关数据。
  • 应用层:这是由应用构成的层级,它们从统一命名空间层获取数据,并用于分析、监控、控制等功能。这些应用可以根据系统的需求选择在本地或云端部署。

接下来,我们将分别介绍每个层级的情况。

自动化层

自动化层能够提供工厂整个自动化生产过程的信息。这些信息来源于以下几类设备或系统:

  • 现场设备:在物理世界中进行数据收集和控制的设备,如数控机床、传感器和执行器等。
  • 控制设备:用于控制现场设备运行的各种控制器,如 PLC、PAC、DCS 等。它们执行控制算法,并与现场设备通信。
  • 监控系统:人机界面(HMI)和监控控制和数据采集(SCADA)系统之类的设备。
  • 信息系统:数据库、数据历史记录器、制造执行系统(MES)、企业资源规划(ERP)等软件应用程序,用于存储和分析从上述设备或系统获取的数据。

在日常生产中,现场设备负责从物理世界中收集数据,并将其发送给控制设备。控制设备则处理这些数据,并向现场设备发送命令以控制它们的行为。监控系统对控制设备的运行状况进行监测,并向操作员和信息系统反馈信息。信息系统则负责从各个低层设备和系统收集并存储数据,并向其他企业系统提供信息查询服务。这种信息流使得自动化系统能够高效、可靠地运行。但是,这些信息都是原始的、非结构化的数据,需要经过规范化并赋予上下文语义后才能用于更深入的分析。

统一命名空间层

统一命名空间层将自动化层产生的所有非结构化和原始数据进行整合并进行上下文语义处理。这是一个数据规范化和赋予上下文语义的过程,它把来自各种不同来源的数据汇集到一个带有时间戳的统一信息源中。这些数据无论来源或格式如何,都按照一致和标准化的方式进行组织和访问。

这种规范化和具有上下文语义的数据包含了与特定目的相关的所有信息,比如设备性能、环境条件、生产产量和其他对工业运营重要的指标。也就是说,赋予上下文语义为组织内的所有数据提供了一个单一的、有意义的、统一的视角。工业组织可以利用这种具有上下文语义的数据,全面而整体地了解其运营情况,从而能够做出更明智的决策,并优化其流程,以提高效率和盈利能力。

应用层

应用层是应用程序利用具有上下文语义的数据进行分析的地方,例如人工智能/机器学习和预测性维护,并根据分析结果对工厂运营进行优化。这些应用可以订阅感兴趣的数据点或设备节点,实时获取更新信息,使工厂能够及时应对生产过程的变化。

具有上下文语义的数据能够提高人工智能和机器学习模型使用的数据质量。这些模型可以利用额外的上下文信息和元数据,更好地理解和解释数据,降低错误并提高准确性。此外,具有上下文语义的数据还提升了人工智能和机器学习模型的预测能力。模型可以根据更多的上下文信息,对未来发生的事件或结果做出更精确的预测。

结语

总之,通过在 Sparkplug 解决方案中同时使用 EMQX 和 Neuron,可以轻松实现上下文分析,并确保数据在系统中以准确一致的方式进行共享。这个解决方案不仅能够实现不同命名系统的设备和应用之间的发现和通信,还能够支持各种分析应用,如人工智能/机器学习、BI 业务分析和预测控制。这样,决策者就可以得到更精确的洞察和可行的结果,从而能够基于可信的数据和分析做出明智的决策。

版权声明: 本文为 EMQ 原创,转载请注明出处。
原文链接:https://www.emqx.com/zh/blog/mqtt-sparkplug-solution-for-industrial-iot-using-emqx-and-neuron

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/751543.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux下软件安装的命令

源码安装 以源代码安装软件,每次都需要配置操作系统、配置编译参数、实际编译,最后还要依据个人喜好的方式来安装软件。这个过程很麻烦很累人。 RPM安装软件的默认路径: 注意: /etc 配置文件放置目录/usr/bin 一些可执行文件/usr/lib 一些程…

删除文件后,没有回收站也能恢复,教你如何操作

在现代数字化生活中,电脑已成为我们不可或缺的工具。我们存储在电脑中的文件,包括文档、图片、视频、音乐等,都承载着我们的重要信息和记忆。然而,有时我们会意外地删除这些文件,而对于大多数人来说,第一个…

编程小白的自学笔记九(python爬虫入门+代码详解)

系列文章目录 编程小白的自学笔记八(python中的多线程) 编程小白的自学笔记七(python中类的继承) 编程小白的自学笔记六(python中类的静态方法和动态方法) 编程小白的自学笔记五(Python类的…

【Unity面试篇】Unity 面试题总结甄选 |网络相关 | ❤️持续更新❤️

前言 关于Unity面试题相关的所有知识点:🐱‍🏍2023年Unity面试题大全,共十万字面试题总结【收藏一篇足够面试,持续更新】为了方便大家可以重点复习某个模块,所以将各方面的知识点进行了拆分并更新整理了新…

git命令将一个项目推送到多个远程仓库

一、查看远程仓库(已经有一个仓库的地址)输入下面命令进行查看 git remote -v二、把项目添加到另外一个远程仓库的地址(git remote add 仓库名称 仓库地址) git remote add gitee http://git.XXXX.com/XXX/XXX.git/三、此时已经把项目添加到另外一个远程仓库了可以通过命令gi…

Java+Vue+Uniapp全端WMS仓库管理系统

详情图片为运行截图,功能列表: 1、数据管理:物料数据管理、物料Bom管理、物料组管理、物料分类管理、供应商管理、仓库管理、货位管理、车间管理 2、采购管理:物料标签管理、入库单管理、入库退货管理 3、质检管理:质检单管理(包括单据号、单据类型、创建时间、检验状态…

华为OD机试真题 JavaScript 实现【人民币转换】【牛客练习题】

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、JavaScript算法源码 专栏导读 本专栏收录于《华为OD机试(JavaScript)真题(A卷B卷)》。 刷的越多,抽中的概率越大,每一题都有详细的答题…

【算法基础】进制转换

一、X进制转十进制 (一)Question 1. 问题描述 2. Input 第一行一个整数 x; 第二行一个字符串 S。 3. Output 输出仅包含一个整数,表示答案。 4. Sample Input 16 7B5. Sample Output 123(二)题解 #include <bits/stdc++.h> using

ArcGIS、ENVI、InVEST、FRAGSTATS等多技术融合提升

专题一 空间数据获取与制图 1.1 软件安装与应用讲解 1.2 空间数据介绍 1.3海量空间数据下载 1.4 ArcGIS软件快速入门 1.5 Geodatabase地理数据库 专题二 ArcGIS专题地图制作 2.1专题地图制作规范 2.2 空间数据的准备与处理 2.3 空间数据可视化&#xff1a;地图符号与注…

宝塔Linux面板安装Composer依赖管理工具与PHP依赖包的方法

最近看见腾讯云有一个AI绘画还挺有意思&#xff0c;想搞来写个接口玩 但是Composer一直运行不成功 提示xdebug什么的 最后经过搜索 发现 需要删除你宝塔里所有php中禁用的putenv函数 然后重启php就可以了&#xff01; 然后就可以运行这个命令了 出现这种情况 还需要删除所有…

MySQL创建索引的方式详解、索引的删除、MySQL8.0降序索引

1、索引创建的方式 方式1&#xff1a;创建表时指定索引列方式2&#xff1a;使用ALTER TABLE创建索引方式3&#xff1a;使用CREATE TABLE创建索引 2、表中索引查看的方式 方式1&#xff1a;使用语句 SHOW INDEX FROM 表名; 语句查看表中的索引 如&#xff1a; 方式2&#x…

UG\NX二次开发 获取对象的边界包容盒 UF_MODL_ask_bounding_box

文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan 简介: 获取对象的边界包容盒 UF_MODL_ask_bounding_box,只能得到绝对坐标系下的边界包容盒,速度快,结果不精确。 效果: 代码: //UF_MODL_ask_bounding_box #include "me.hpp" #include &…

发布项目管理生产的时候出现界面滚动不了

新的项目管理发布后出现页面鼠标上下滚动不了的问题&#xff0c;比较奇怪的是&#xff0c;本地开发没有问题&#xff0c;但发布生产后就出现问题了。 因为这次增加的组件比较多&#xff0c;相应的样式也比较多&#xff0c;所以那先分几个部分处理 1、先新加的几个组件是否有冲…

浅谈物联网在电力行业的应用

摘要&#xff1a;随着社会经济的快速发展&#xff0c;物联网技术也在各个行业中得到了广泛的应用&#xff0c;特别是在电力行业中应用物联网技术&#xff0c;也有效的促进了电力行业的现代化发展。而物联网与智能电网同样都是当代重要的高新技术以及新兴产业。所以通过对于物联…

3Ds max入门教程:逼真的细菌

推荐&#xff1a; NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 最终图像 在本教程中&#xff0c;您将学习如何创建一个异国情调的细菌世界。主要重点将是制造使一切变得不同的材料。 步骤-1 遵循红色、绿色和橙色框参数。 步骤-2 在“渲染场景”&#xff08;F10&…

Web训练项目相关

一、简述 一直没有机会整理前面做过的内容&#xff0c;特此文章整理所学过的web相关训练内容,方便查阅&#xff0c;并在其中参杂对代码理解。 二、相关项目 1.getparameter的url传值 index.jsp <% page language"java" contentType"text/html; charsetu…

概率论的学习和整理16: 泊松分布(未完成)

目录 简单的扩展到泊松分布 比较整体的动态过程&#xff0c;增加实验次数时 当二项分布&#xff0c;n很大&#xff0c;p很小的时候&#xff0c;会趋向泊松分布 当n足够大时&#xff0c;二项分布趋向于正态分布。这个结论在概率论中被称为中心极限定理&#xff0c;它是概率论中一…

【剑指offer】14. 数值的整数次方(java)

文章目录 数值的整数次方描述示例1示例2示例3思路完整代码 数值的整数次方 描述 实现函数 double Power(double base, int exponent)&#xff0c;求base的exponent次方。 注意&#xff1a; 1.保证base和exponent不同时为0。 2.不得使用库函数&#xff0c;同时不需要考虑大…

家政小程序开发-H5+小程序

移动互联网的发展&#xff0c;微信小程序逐渐成为商家拓展线上业务的重要手段。家政服务作为日常生活中不可或缺的一部分&#xff0c;也开始尝试通过小程序来提高服务质量和效率。 下面是一篇关于家政小程序开发的H5小程序的文章&#xff0c;希望对您有所帮助。 家政服…

【大虾送书第二期】《Python机器学习:基于PyTorch和Scikit-Learn 》

目录 ✨写在前面 ✨亲笔作序推荐 ✨内容简介 ✨学完本书&#xff0c;你将能够 ✨作者简介 ✨PyTorch核心维护者亲笔推荐 ✨抢先购买 &#x1f990;博客主页&#xff1a;大虾好吃吗的博客 &#x1f990;专栏地址&#xff1a;免费送书活动专栏地址 写在前面 近年来&#xff0c;…