统一命名空间 (UNS) 旨在将您的业务反映到数字基础设施中。为了创建有效的UNS,拥有一个能够有效连接众多制造设备并统一从物理世界到数字世界的整个业务的技术堆栈至关重要。
这正是 MQTT 在 UNS 中发挥关键作用的原因。MQTT 代理通常用作数字基础设施,用于管理分散的连接并连接其他行业(例如 IoV )中的分布式设备,在IIoT 中也是如此 。以下是您应该在 UNS 中采用 MQTT 的原因。
UNS 需要一个数据中心作为单一事实来源来连接所有制造部件,包括 PLC、SCADA、MES 和 ERP。实时数据量巨大。通常,数据中心在大规模解决方案中面临数千甚至数百万的并发连接。
由于采用二进制格式,MQTT 的开销和带宽消耗非常低。这种轻量级设计最 大限度地减少了消息的大小并减少了网络流量。此功能与 UNS 和 IIoT 完美匹配。
企业主需要更多地关注运营,而不是纠结于扩展基础设施资源来支持快速增长的业务。这就是 UNS 的可扩展性很重要的原因。在MQTT架构中,一些代理提供了极好的可扩展性,可以支持每秒数百万条消息。
MQTT 可能是IIoT领域的新来者,但它已经获得了巨大的普及。这是因为 MQTT 构成了旧 IIoT 技术最常见的子集,使其成为连接现有系统所有组件而不造成任何损坏的理想工具。
由于不存在适合所有情况的技术和产品,因此您无法仅通过 OPC UA构建UNS 或仅依赖于一种协议,尤其是当您考虑到云时。UNS 必须结合不同的技术,而 MQTT 是将它们统一在一个命名空间中的适配器和协调器。
开源世界中存在许多数据约定工具和协议代理软件,例如 Neuron、ignition 和 PLC4X。您可以将 OPC UA 连接到 MQTT,与 Modbus 和 Ethercat 相同。
在 IIoT 3.0 中,执行数字化转型的公司必须通过传统系统的不同层(例如 MES、ERP、CRM 和 WMS)移动数据。这会导致一个复杂的连接问题,称为“数据意大利面条”。
通过位于中间的 MQTT 代理促进信息交换,UNS 可以有效地移动数据。这是我们需要 MQTT 来构建 UNS 的关键原因之一。
在 UNS 上下文中,PLC 不需要报告来自未知来源的轮询请求。它只与整个系统已知的安全代理建立一个长期连接,并且是所有东西都需要与之通信的唯 一数据中心。
MQTT 代理不仅解耦 IIoT 4.0 的输入和输出,还承担起保护碎片设备和系统连接的责任。得益于 MQTT 丰富的安全功能,它完全有能力充当生产线的隔离数据中心,防止任何格式错误的数据渗透脆弱的 PLC。
这样,UNS将安全负担转移给了broker,并在统一的地方进行管理。
对于 IIoT 4.0,数据主要由设备而不是人生成。大多数时候,PLC 读数不会改变,因此将冗余数据传输到 UNS 并使网络不堪重负是没有意义的。
然而,一旦寄存器的价值发生变化,就必须立即将其报告给ERP/MES或云端,以提取最 大价值,因为信息的流动性和边际价值会随着时间的推移而降低。这称为“异常报告”。
因此,像MQTT这样的事件驱动技术对于实现UNS非常重要。MQTT 代理了解客户端状态变化。这种意识是通过 SparkPlugB 和 MQTT Last Will 功能实现的。借助 Last Will 和 SparkPlugB,MQTT 仅传达更改并确保过时的数据不会传递给订阅客户端。
UNS 是物理世界中业务的数字反映。它是由现实驱动的,而不是相反。我们需要生成数据的高级上下文将其转换为信息,例如站点的位置以及 PLC 属于哪条生产线和单元。
幸运的是,MQTT 的 Pub/Sub 消息传递模型提供了一种将 PLC 上下文映射到数字世界的简单方法。带有 MQTT 的 UNS 使用户能够浏览所有命名空间和功能。以及每个数据标签的实时状态。
MQTT 主题明确定义如下:
MQTT 主题 具有层次结构,可以很容易地想象为文件夹结构。通过将每个级别的命名空间添加为主题,我们可以在 MQTT 之上构建树视图。
当订阅者使用主题“企业 A/站点 A/区域 A/过程单元 A/生物反应器”中的数据时,它会自动知道数据的来源并对其采取必要的操作。他们可以使用通配符同时订阅多个数据点。
MQTT 可以帮助您定义元数据,确保 UNS 中不同系统之间的一致性和准确性。
MQTT是构建UNS的最 佳合作伙伴。然而,这不是强制性的。因此,您可以使用其他协议构建 UNS,例如 OPC UA 和 HTTP,甚至普通的 Modbus + TCP/UDP。在众多选项中,OPC UA 凭借强大的商业支持和标准的长期使用寿命,仍然是 IIoT 的流行方法。
然而,这不是一种或另一种情况;而是一种情况。最 好的方法是通过桥接来结合双方的优势,或者通过 MQTT 方法使用 OPC UA。
理论上,UNS是一个全局命名空间,统一了您业务的所有命名空间。每个工厂、每个站点和每个 PLC 都是一个独立的命名空间。
UNS 旨在将技术应用于整个业务,并以您可以驾驭的方式构建它。因此,所有其他解决方案都可以尽最 大努力构建在它之上。MQTT 负责连接来自 OT、CT 和 IT 世界的碎片化技术,并将它们无缝集成。
我们讨论了 MQTT 在 UNS 中的重要性以及为什么 MQTT 是所有 IT 系统的数据泵。在统一命名空间中采用 MQTT 可以带来诸多好处,可以彻底改变我们在数字世界中的连接和通信方式。组织可以简化数据流、创建响应速度更快、连接性更强的系统,并释放创新和增长的新机会。
MQTT代表消息队列遥测传输,是一种轻量级消息传递协议,专为受限设备和低带宽、高延迟网络而设计。它对于需要较小代码占用空间或网络带宽有限的远程连接特别有用。
MQTT 5 是该协议的最 新版本,比其前身提供了许多改进。新功能包括原因代码、会话到期间隔、主题别名、用户属性、订阅选项、请求/响应功能和共享订阅。
我们将探讨这些新功能,解释流行的代理和客户端 SDK 如何支持 MQTT 5,以及从 MQTT 3.1.1 迁移到 MQTT 5 时的一些关键注意事项。
MQTT 最初由 IBM 的 Andy Stanley-Clark 博士和 Arcom(现为 Eurotech)的 Arlen Nipper 于 20 世纪 90 年代末开发,用于通过卫星网络监控石油管道。初始版本 MQTT v3.1 被设计为轻量级且易于实现,使其适用于许多物联网设备。
OASIS 标准 MQTT 3.1.1 于 2014 年发布,其中包括对协议的细微更改,以提高其清晰度和互操作性。它在资源有限的情况下通过网络传递消息的简单性和效率使其在物联网应用中得到广泛采用。
然而,随着物联网行业的发展,其应用的需求也在不断变化。这导致了 MQTT 5 的开发,并于 2019 年发布,它引入了新功能来满足这些不断变化的需求。凭借其增强的功能,MQTT 5 能够更好地处理现代物联网应用的复杂要求。
与它的前身不同,MQTT 5 可以为每个确认数据包提供 原因代码 ,让我们更好地了解发生连接或故障的原因。此改进有助于故障排除并允许更精 确的错误处理。
例如,如果客户端无法连接到服务器,服务器将返回一个原因代码,解释连接失败的原因。这可能是由于一系列问题造成的,从不正确的登录凭据到服务器不可用。
此功能允许客户端指定 在客户端断开连接后服务器应维持其会话多长时间。在以前的 MQTT 版本中,会话要么在断开连接时立即结束,要么无限期地继续。
使用 MQTT 5,您可以定义断开连接后会话应保持活动状态的特定时间段。这为管理会话生命周期提供了更大的灵活性,并节省了服务器上的资源。
MQTT 5 引入了 主题别名 来减少消息头中的开销。在以前的版本中,每条消息中都需要包含主题名称,从而导致数据包尺寸较大。
使用主题别名,可以为主题分配一个简短的数字别名。此别名可用于代替后续消息中的完整主题名称,从而显着减小 MQTT 标头的大小并节省网络带宽。
此功能允许用户在 MQTT 数据包的标头中包含自定义元数据。这对于需要通过 MQTT 消息发送附加信息(例如消息的时间戳、设备位置或其他特定于应用程序的数据)的应用程序特别有用。用户属性提供了对 MQTT 消息传递的更大灵活性和控制。
MQTT 5 允许客户端指定 他们希望如何接收每个订阅主题的消息。例如,客户端现在可以指定是否要接收特定订阅的保留消息,或者是否要接收消息,即使它们具有与订阅相同的 QoS(服务质量)级别。
请求 /响应功能 允许客户端指定服务器可用于发送直接回复的主题。
在 MQTT 的早期版本中,如果客户端想要发送对消息的响应,它必须将响应发布到主题,并且原始发送者必须订阅该主题才能接收响应。借助 MQTT 5 的请求/响应功能,客户端和服务器之间的通信变得更加高效和直接。
此功能允许多个客户端共享订阅。当消息发布到共享主题时,服务器会将该消息分发到共享订阅中的客户端之一,从而有效地对消息进行负载平衡。
当您运行一个服务的多个实例并且您希望在它们之间均匀分配工作负载时,此功能特别有用。
MQTT 5.0 协议受到物联网社区的好评,众多 MQTT 代理 和客户端软件开发工具包 (SDK) 都增加了对其的支持。主要 MQTT 经纪商已在其平台中实施 MQTT 5.0 功能,允许用户利用新协议的优势。
在客户端 SDK 方面,像 Paho 这样拥有广泛用户基础的库增加了对 MQTT 5.0 的支持。这意味着开发人员现在可以在其物联网应用程序中利用 MQTT 5.0 功能。支持 MQTT 5.0 的客户端 SDK 的其他示例包括 MQTT.js 和 MQTTnet。
如果您当前正在使用 MQTT 3.1.1,那么可能是时候升级到 MQTT 5 了。以下是您在升级时应考虑的一些主要事项。
一旦您评估了当前的基础设施并决定继续迁移,下一步就是更新您的 MQTT 代理。这涉及安装支持 MQTT 5.0 的最 新版本的 MQTT 代理。
升级您的代理应谨慎进行,因为它会影响您的所有 MQTT 客户端。建议首先在非生产环境中测试新代理,然后再将其部署到生产环境中。另外,请确保根据需要更新代理的配置,以支持 MQTT 5.0 中引入的新功能。
更新 MQTT 代理后,下一步是更新 MQTT 客户端库。就像代理更新一样,您应该首先在非生产环境中执行此更新。另外,请确保您的应用程序代码已更新以处理新的 MQTT 5.0 功能。考虑到这可能涉及一些代码重构。
虽然 MQTT 5.0 带来了多项改进,但它也引入了新的安全考虑因素。例如,通过新的用户属性功能,客户端现在可以向经纪人发送自定义数据。
虽然这是一个强大的功能,但如果使用不当,它可能会被利用。因此,从安全角度评估所有新功能非常重要。
您可以采取的一些步骤来解决安全问题,包括使用新的增强型身份验证功能来增强安全性、限制客户端只能发送必要的用户属性,以及持续监控任何可疑活动。
最后,在迁移到 MQTT 5.0 并实现其功能后,持续监控您的系统非常重要。监控不应仅局限于技术方面,例如消息传递或客户端连接。
您还应该监控应用程序中新 MQTT 5.0 功能的使用情况。这将使您深入了解这些功能如何增强您的应用程序以及可以在哪些方面进行进一步改进。
IoT(物联网)是将日常设备连接到互联网,使它们能够发送、接收和处理数据的想法。这些设备配备了传感器、软件和其他技术,可以通过互联网与其他设备和系统进行通信和交互。它们可以被远程监控和控制,从而提高效率、准确性和经济效益。
工业物联网 ( IIoT ) 是物联网的一个子集,专门针对工业领域。它涉及物联网技术在工业应用和流程中的应用,例如制造、物流和能源管理。IIoT 利用机器学习、大数据、智能传感器和机器对机器 (M2M) 通信等技术来增强工业流程。
IIoT 不仅仅是一个流行词;这是一项变革性技术,可以提高行业的运营效率、生产力和安全性。它可以实现工业系统的实时监控和分析、预测性维护和自主操作等。
虽然工业物联网和物联网有一些共同的原则,但两者之间也存在明显的差异。最显着的区别是,物联网主要关注消费者使用和提高生活质量,而工业物联网则以工业应用为中心,旨在提高工业环境中的效率和生产力。
物联网和工业物联网的范围和规模根本不同。物联网通常是指连接到互联网的日常设备,例如智能手机、家用电器和可穿戴设备。物联网的目标是通过允许设备相互通信来让生活变得更轻松、更方便。
另一方面,工业物联网专门适用于工业领域。它涉及大规模机器对机器通信和复杂工业过程的自动化。IIoT 旨在提高制造、物流和能源等行业的效率、生产力和安全性。
就复杂性和精度而言,工业物联网采用了与物联网不同的方法。物联网设备虽然复杂,但通常执行简单的任务,例如调节室温或跟踪健身活动。
而工业物联网则操作复杂、精度要求高。例如,在制造工厂中,工业物联网系统可以根据实时需求自动调整生产线的速度或检测人眼看不见的产品中的微小缺陷。如此复杂和精 确的操作需要更强大和先进的技术。
连接性和互操作性是工业物联网和物联网存在分歧的其他关键领域。物联网设备通常通过标准家庭或办公室网络连接到互联网。他们经常使用 Wi-Fi、蓝牙或 Zigbee 等常见通信协议,从而实现不同设备之间的无缝互操作。
相比之下,工业物联网因其工业性质而需要更强大的连接解决方案。它通常采用专门的工业通信协议,例如 OPC UA 或 Profinet,专为高速、可靠和安全的数据传输而设计。此外,鉴于工业环境中的机械和设备多种多样,互操作性可能是工业物联网部署中的一个关键挑战。
物联网和工业物联网都使用通用的机器对机器协议。最重要的可能是 MQTT(消息队列遥测传输),它以其轻量级特性、高效的发布/订阅模型以及大规模操作的能力而闻名。MQTT 有助于高效的数据传输,尤其是在带宽受限的环境中。
安全性在物联网和工业物联网中都至关重要,但安全性的侧重点和方法各不相同。物联网设备虽然需要安全措施,但通常处理不太敏感的数据。因此,它们的安全协议可能不像工业物联网中的安全协议那么严格。
另一方面,工业物联网处理关键的工业数据和控制系统。工业物联网系统中的安全漏洞可能会导致灾难性后果,例如生产停机、财务损失,甚至对人身安全造成威胁。因此,工业物联网系统实施先进且严格的安全协议,包括数据加密、入侵检测系统和定期安全审计。
可编程性是工业物联网和物联网之间的另一个显着特征。大多数物联网设备都具有预编程功能,可以满足一般消费者的需求。虽然一些物联网设备允许定制,但它们的可编程性通常是有限的。
相反,工业物联网系统具有高度可编程性和可定制性,旨在适应不同行业和公司的特定需求。它们可以被编程来执行复杂的任务,做出自主决策,甚至使用机器学习算法从过去的行为中学习,从而提供一般物联网设备中不常见的灵活性。
在物联网和工业物联网之间进行选择很大程度上取决于您的具体需求和环境。如果您是一名消费者,希望通过互联设备简化生活并改善您的家庭,那么物联网可能是最 佳选择。它提供了各种用户友好的设备和应用程序,可以使您的日常活动更加方便和愉快。
如果您是企业或工业运营商,工业物联网可能更适合。它提供了强大的工具来提高工业环境中的效率、生产力和安全性。IIoT 可以提供有价值的见解和对复杂流程的控制,有助于降低成本和优化运营。
但请记住,工业物联网与物联网不一定是非此即彼的决定。许多企业甚至一些消费者将两者结合使用。例如,制造公司可能将工业物联网用于其生产流程,并将物联网用于其办公室和设施管理。消费者可能会在他们的私人公寓中使用智能家居设备,而他们居住的公寓大楼则使用工业物联网设备来提供空调和电梯维护等服务。
OPC UA(OPC统一架构)是一种独立于平台、面向服务、开放、安全的通信架构。它实现了不同供应商的工业自动化设备、系统和软件应用程序的互操作性。OPC UA信息模型定义了使用各种传输协议交换数据的代码和格式。
同一基金会开发了 OPC UA 及其前身开放平台通信 (OPC),但它们有显着不同。该基金会持续开发 OPC UA,以创建比原始 OPC 通信更理想、更符合不断发展的工业自动化需求的架构。
OPC基金会于2006年发布了OPC UA规范的第 一个版本,截至目前,OPC UA的版本为1.05。除了客户端-服务器(订阅)模型之外,OPC UA 还包括 Pub-Sub 机制,该机制允许通过 UDP 协议、 MQTT 协议或 AMQP 协议推送 JSON 规范(也使用标准定义的二进制规范 – UADP) 。
通过MQTT协议提供的快速、安全、可靠的传输通道,OPC UA可以直接使用互联网进行数据传输,同时保留OPC UA端到端安全性和标准化数据建模的关键优势。
l 功能等效性– 所有 OPC Classic 规范都映射到 UA,并且 OPC UA 包括 OPC Classic 中的 DA、A&E 和 HDA 功能:
功能性 | 描述 |
发现 | 查找本地 PC 和/或网络上可用的 OPC 服务器 |
地址空间 | 所有数据均按层次结构表示(例如文件和文件夹),允许 OPC 客户端发现和利用简单和复杂的数据结构 |
一经请求 | 根据访问权限读写数据/信息 |
订阅 | 监控数据/信息并在值变化超出客户端设置时报告异常 |
事件 | 基于客户端的设置通知重要信息 |
方法 | 客户端可以根据服务器上定义的方法等执行程序。 |
l 安全性——消息加密、身份验证和审核,组织在选择技术标准时最重要的考虑因素之一是安全性。OPC UA 通过在穿过防火墙时提供一组控制来解决安全问题:
功能性 | 描述 |
运输 | 定义了许多协议,提供超快速 OPC 二进制传输或更通用的 SOAP-HTTPS 等选项 |
会话加密 | 通过 128 位或 256 位加密级别安全传输信息 |
消息签名 | 消息接收时和发送时的签名必须相同。 |
测序数据包 | 通过排序消除已识别的消息重放攻击 |
认证 | 每个 UA 客户端和服务器均由 OpenSSL 证书标识,该证书提供对应用程序和系统如何相互连接的控制。 |
用户控制 | 应用程序可能需要用户身份验证(登录凭据、证书等),并且可以进一步限制或增强用户对权限和地址空间“视图”的访问。 |
审计 | 记录用户和/或系统活动以提供访问审核跟踪 |
l 综合信息建模:OPC UA信息建模框架,用于定义复杂信息,将数据转换为信息。它允许通过完全面向对象的功能来建模和扩展甚至最复杂的多级结构,并能够在配置文件中定义数据类型和结构。
OPC UA 信息模型(地址空间)是形成结构化图的节点和引用的网络。
标准形式的对象在地址空间中表示,其中模型元素称为节点。地址空间将对象及其组件表示为节点的集合,由属性描述并通过引用连接。OPC UA 建模就是创建节点以及节点之间的引用。
OPC UA 使用对象作为表示处理系统中的数据和活动的基础。变量、事件和方法通过对象内的引用互连。
l 属性描述节点,不同的节点类具有不同的属性集。节点类的定义包括定义属性,因此地址空间不包括属性。
l 引用表示节点之间的关系。地址空间中存在的引用类型节点的实例定义了引用。
l 节点模型的通用属性
源节点是包含引用的节点,目标节点是被引用的节点。引用的目标节点可以与源节点位于同一地址空间,也可以位于另一个OPC服务器的地址空间,甚至目标节点可以不存在。
OPC UA 中最重要的节点类别是对象、变量和方法。
l 对象节点:用户使用对象节点来形成地址空间,这些节点不包含数据。他们使用变量来公开对象的值。用户可以使用对象节点对管理对象、变量或方法进行分组;变量和方法总是属于一个对象。
l 变量节点:变量节点代表一个值。值的数据类型取决于变量。客户端可以读取、写入和订阅该值。
l 方法节点:方法节点表示客户端调用并接收结果的服务器中的方法。输入参数和输出结果以变量的形式作为方法节点的一部分。客户端指定输入参数,调用后得到输出结果。
MQTT 是一种轻量级、高效且可靠的 IoT 消息传递协议,采用发布订阅模型来支持实时通信。MQTT 非常适合资源受限的环境,特别是需要高效使用电源和带宽的场景。
SparkplugB 基于 MQTT 3.1.1 构建,通过行业既定规范确保工业物联网灵活、高效的基础数据建模。得益于 MQTT 的出色设计,SparkPlugB 实现了强大的互操作性和网络状态感知。
OPC UA和MQTT有一定程度的功能重叠,但它们的使用场景却截然不同:
l OPC UA通过使用标准化语言促进行业内不同设备和系统之间的无缝通信。
l MQTT 通过互联网高效处理实时传感器数据,解决物联网应用中的低带宽和不可靠的网络状况。其读取/发布机制在使用上提供了显着的灵活性。
在工业场景中,MQTT 擅长于分布式系统中的消息传递,而 OPC UA 则专注于提供互操作性。OPC UA对业务数据进行抽象和聚合,MQTT以其强大的连接能力促进无缝、分布式数据交换。
OPC基金会在OPC UA最 新规范中提出的Pub-Sub模型允许使用MQTT Broker将数据更改推送给订阅者。
Pub-Sub 安全性比客户端/服务器中的安全性要复杂一些,而且规范也没有那么详细。在 MQTT 网络中,安全性基于 SSL/TLS,除了启用 SSL/TLS 传输之外,代理还可以定义应用程序级身份验证。
原则上,这些安全模型对于每个可以加入网络的订阅者和发布者来说要么全部,要么全无。OPC UA 正在进行的标准化工作仍在进行中,目前还不清楚如何最 好地将丰富的 OPC UA 信息模型映射到 MQTT。
公众号 扫码咨询
![]() |
上海市闵行区中春路4999号莘庄商务楼1326室 |
![]() |
service@covond.com |
![]() |
www.covond.com |
![]() |
交换机:18017588179(孙经理) 无人机:13311882358(孙总) |