什么是I-IoT
自1760年引入蒸汽机之后,蒸汽就被用于驱动从农业到纺织品的各种事物。这引发了第一次工业革命和机械制造时代。19世纪末,电力,组织工作和大规模生产的新方式应运而生,标志着第二次工业革命的开始。在20世纪下半叶,半导体的发展和电子控制器的引入引发了自动化时代和第三次工业革命。在2011年汉诺威工业博览会上,Henning Kagermann,Wolf-Dieter Lucas和Wolfgang Walster创造了“工业4.0”一词,该项目旨在利用最新的数字技术更新德国的生产系统。
工业4.0有望实现以下功能:
- 将生产与信息和通信技术相结合
- 结合客户数据和生产数据
- 充分利用机器间通信
- 自主,灵活,高效地管理生产,节省资源
世界经济论坛的创始人兼主席克劳斯·施瓦布(Klaus Schwab)认为,第四次工业革命的独立性可以由三个因素来证明。
- 发展步伐。与以前的革命不同,这场工业革命不是线性发展,而是呈指数级增长。这是我们赖以生存的多层面,相互依存的世界的产物,也是新技术本身综合了越来越先进和高效的技术的事实。
- . , , , . , «» «» , , «» .
- . , , .
根据定义,物联网是该行业进一步发展的关键,包括大数据分析,云技术,机器人技术等技术,最重要的是,IT与制造业之间的集成与融合。
I-IoT(工业物联网)一词是指IoT的工业子集,它是自然业务的数字化转型。 I-IoT使业务更灵活,更盈利,更易理解,并创建了新的数字价值链。
传统的生产链是简单而连续的步骤,例如产品开发,原材料的采购和采购以及产品的制造和维修。新数字化转型的实质是围绕某个数字核心创建服务生态系统和新业务模型,从而为生产赋予新的品质。例如降低生产准备,调试和运营的不同阶段之间的成本。不同部门和阶段之间的联系变得越来越快,这使得在市场上更有效地工作和更具竞争力成为可能。
预计I-IoT将创造更多的商业价值,并对人类社会产生深远的影响,以迎接第四次工业革命。
据《福布斯》报道:
- IoT 157 2016 457 2020 , 28,5%
- , , IoT 2020 , 40 .
IoT I-IoT –
- , . , , . , .
- , , ; .
- I-IoT , .
- — , , . I-IoT, , .
- .
- , . , , , .
- . I-IoT .
- , .
CIM(计算机集成制造)是1990年代开发的制造系统的逻辑模型,用于在公司或企业级别集成制造过程,自动化系统和信息技术系统。CIM不应被视为创建自动化工厂的设计方法,而应被视为实现工业自动化的参考模型,该模型基于通过软件应用程序和通信网络在不同系统和子系统之间的数据和信息的收集,协调,共享和传输而实现。CIM通常被描述为具有六个功能级别的金字塔,如下图所示
级别1-传感器,传感器和执行器
电子传感器是一种结构完整的测量仪器,能够将一个或多个物理量转换为电信号,以便随后进行测量信息的转换,传输,处理和显示。执行器(actuator)是将控制命令转换为对过程的物理影响的设备。实际上,其功能是传感器的补充。致动器接受控制信号作为对控制系统的输入,并将能量作为输出传递至机构。
2级-RTU,微控制器,CNC,PLC和DCS
- (Remote terminal unit RTU) — , . , , . , .
- (Embedded controller), , , . .
- (CNC) – , . . , - .
- PLC — , . PLC , , , . , , , . 10 100 .
- DCS通常用于连续过程中,例如精炼厂,发电厂或化工厂。它们结合了在PLC中实现的控制功能和监督控制系统(SCADA)功能。尽管PLC和SCADA是两个独立的系统,每个系统都有各自的地址空间,但在DCS中,这些系统使用相同的变量和数据结构。
3级-SCADA,历史学家
SCADA系统是一个软件包,用于实时收集,处理,显示和归档有关监视或控制对象的信息。数据收集系统(Historian)收集有关设备运行状态的实时信息。SCADA系统实现以下主要功能:
- PLC, , RTU , CIM.
- , .
- , , .
- - (HMI).
- HMI PLC.
4 -MES
MES是位于ERP和SCADA或PLC之间的软件系统,旨在有效地管理公司的生产过程。MES的主要功能是通过组合计划和控制级别以优化流程和资源来同步业务和生产系统的管理。
MES系统的主要特点是:
- 订单管理和生产计划
- 原材料和半成品进货的管理
- 资产管理与监控
- 生产追踪
- 维修管理
- 质量检查
5级-ERP
ERP包括组织用来管理其业务的日常活动(例如会计,采购,项目管理和制造)的软件包。ERP集成并定义了一组业务流程,这些业务流程控制着所涉及系统之间的信息和数据交换。ERP从组织的不同部门收集并传输交易数据,从而通过充当单一来源来确保数据完整性。
生产网络
集成的生产系统需要不同类型的通信网络,每种通信网络专用于特定任务
- 第1级:现场总线
- 级别2:控制器网络
- 3、4、5级:公司网络
现场网络已被引入接口控制器,传感器和执行器,从而减少了对复杂接线的需求。在现场总线中,传感器和执行器配备了最少的一组处理程序,以确保确定性地传输信息。
控制器网络必须在PLC节点之间提供通信。数据传输必须按特定的时间间隔进行。由于数据和信息传输的时间安排,控制网络和现场总线通常也称为实时网络。
公司网络是位于管理系统与计划和管理系统之间的网络。网络的这一层应保证在较短的时间内处理复杂的信息。因此,该网络层不需要紧迫的时间框架。
OPC服务器
没有任何其他工业通信标准在OPC之类的许多行业和设备制造商中得到如此广泛的接受。它用于集成各种工业和商业系统。 SCADA,安全系统(SIS),可编程逻辑控制器(PLC)和分布式控制系统(DCS)使用OPC相互通信,以及与Historian数据库,MES和ERP系统通信。 OPC成功的原因很简单-它是唯一可用于与各种工业设备和应用程序通信的真正通用接口,而与控制系统中使用的制造商,软件或协议无关。 OPC标准出现后,几乎所有SCADA都被重新设计为OPC客户,每个硬件制造商都开始为其控制器,I / O模块,智能传感器和执行器提供标准的OPC服务器。
OPC经典版(数据访问DA)
1995年,各种公司决定成立一个工作组来定义互操作性标准。这些公司是:Fisher Rosemount,Intellution,Intuitive Technology,Opto22,Rockwell,Siemens AG。
还邀请Microsoft成员提供必要的支持。该工作组的任务是根据当时的现代技术定义Windows环境中信息访问的标准。开发的技术被称为过程控制(OPC)的对象链接和嵌入(OLE)。1996年8月,定义了OPC的第一个版本。
下图显示了OPC Classic的不同层以及主要的通信协议-COM,DCOM和远程过程调用(RPC)
COM是Microsoft开发的用于构建组件应用程序的软件体系结构。当时,这允许程序员以某种方式封装可重用的代码段,以使其他应用程序可以使用它们,而不必担心其实现细节。可以用较新的版本替换COM对象,而不必重写使用它们的应用程序。 DCOM是COM的网络版本。 DCOM试图向软件开发人员隐藏一台计算机上运行的COM对象与另一台计算机上远程运行的COM对象之间的差异。为此,必须按值传递所有参数。这意味着,在调用COM对象提供的函数时,调用者必须按值传递关联的参数。另一方面,COM对象也将通过按值传递结果来响应调用者。将参数转换为通过网络传输的数据的过程称为编组。封送处理完成后,数据流将在连接的另一端进行序列化,传输并恢复为其原始数据顺序。
DCOM使用RPC机制在同一网络上的COM组件之间透明地传输和接收信息。RPC机制由Microsoft开发,允许系统开发人员请求执行远程程序,而不必为服务器开发特殊的程序。客户端程序将带有适当参数的消息发送到服务器,服务器返回一条消息,其中包含已执行程序的结果。
OPC Classic包含许多限制:
- 仅在Microsoft Windows家族的操作系统上可用;
- 与DCOM技术的连接,该技术的源代码已关闭。
- 与DCOM有关的配置问题;
- DCOM通信中断消息不正确;
- DCOM无法通过Internet交换数据;
- DCOM无法确保信息安全。
OPC Classic数据采集模型
OPC经典标准的目标如下:
- 在服务器端对数据进行结构化,以便更轻松地在客户端收集数据。
- 定义通信服务和标准通信机制
本质上,OPC Classic标准的工作原理如下。
服务器管理所有可用数据。
服务器按需发送来自设备的数据请求,并定期更新内部缓存。服务器为OPC客户端请求的每组变量初始化和管理缓存。 OPC客户端的扫描速率不能小于OPC服务器从设备收集数据并更新其内部缓存的扫描速率。我们建议您将OPC客户端配置为从缓存中读取并以OPC服务器扫描设备的速率的两倍来更新它。交换的每个数据都有自己的含义,由时间戳和质量表示。数据交换包括值更改时的读取,写入和自动更新。读取或轮询由OPC客户端执行,该客户端定期发送对组数据的请求。记录阶段可以是同步或异步的。自动更新使用OPC客户端提供的请求速率。 OPC服务器检查每次更新,以查看缓存值的绝对值减去当前值是否大于客户端指定的死区乘以为该变量配置的范围。可以这样写:
if (abs(last_cached_value – current_value) > (PERCENT_DEAD_BAND/100) * range) {
//cache is updated, and the client is notified through a callback mechanism
}
来自OPC服务器的信息被组织为相关项目组,以提高效率。有两种不同类型的组:
- 公开组:任何客户均可使用
- 本地组:仅对创建它们的客户可用
OPC UA
OPC基金会对COM和DCOM应用日益增长的局限性的第一反应是开发OPC XML-DA。它保留了OPC的特性,但采用了与制造商或特定软件平台都不相关的通信基础结构。已经证明,将OPC-DA规范转换为基于Web服务的版本不足以满足越来越多与企业和外部世界进行交互和集成的企业的需求。
有关OPC UA架构的信息,请参见opcfoundation.org/developer-tools/specifications-unified-architecture。
因此,开发了OPC UA协议以替换所有现有的基于COM的版本并克服了安全性和性能问题。该标准解决了对平台无关接口的需求,并允许创建可扩展的数据模型来描述复杂的系统而不会损失功能。OPC UA基于IEC 62451标准定义的面向服务的方法,其目标如下:
- 在非Windows平台上使用OPC组件
- 允许您将其主要组件集成到小型设备中
- 跨基于防火墙的系统实现标准通信
从技术角度来看,OPC UA的工作方式如下:
- API将客户端和服务器代码与OPC UA堆栈隔离
- UA堆栈将API调用转换为消息
- UA堆栈通过API将消息发送到客户端或服务器来接收消息
OPC UA信息模型
OPC UA中信息建模的基本原理:
- 使用包括继承层次结构在内的面向对象的方法。
- 使用相同的机制来访问类型和实例。
- 通过使用网络中完全连接的节点可以获取信息。
- 节点之间的数据类型层次结构和链接是可扩展的。
- 对信息建模没有任何限制。
- 信息建模始终托管在服务器端。
OPC UA服务器提供给客户端的一组对象和相关信息是地址空间。您可以将地址空间视为OPC UA信息模型的实现。
OPC UA地址空间是通过链接链接的节点的集合。每个节点都有称为属性的属性。所有节点上必须存在一组特定的属性。节点,属性和链接之间的关系如下图所示
节点可以根据其特定用途而属于不同类别的节点。一些节点可以表示实例,其他节点可以表示类型,等等OPC UA具有八种标准节点类:变量,对象,方法,视图,数据类型,变量类型,对象类型和引用类型。在OPC UA中,最重要的节点类是对象,变量和方法。
OPC UA会议
OPC UA提供了包括状态信息的客户端-服务器通信模型。此状态信息与会话有关。会话被定义为客户端和服务器之间的逻辑连接。每个会话都独立于基础通信协议;协议级别的任何问题都不会自动结束会话。在客户端明确请求之后或由于客户端不活动,会话结束。在会话创建期间设置空闲间隔。
OPC UA安全模型
OPC UA安全模型是通过定义会话所基于的安全通道来实现的。安全通道按以下方式交换数据:
- 使用数字签名确保数据完整性。
- 通过加密提供隐私。
- 使用X.509证书对应用程序进行身份验证和授权。
该图显示了以下层:应用程序层,会话层和传输层。
应用层用于在建立OPC UA会话的客户端和服务器之间传输信息。OPC UA会话在安全通道上建立。传输层是负责通过套接字连接发送和接收数据的层,对其应用了错误处理机制以确保保护系统免受诸如拒绝服务(DoS)之类的攻击。
OPC UA数据交换
在OPC UA客户端和服务器之间交换数据的最简单方法是使用读取和写入服务。读写服务经过优化,可以传输一组数据,而不是传输单个数据或多个值。它们允许您读取和写入节点的值或属性。读取服务具有以下参数:
maxAge:这是获取值所花费的最长时间。这由客户端指示。如果其缓存中的副本早于客户端配置的maxAge参数,它将强制服务器联系设备(例如传感器)。如果maxAge设置为零,则服务器应提供当前值,并始终直接从设备读取它。
时间戳记类型:OPC UA定义了两个时间戳记:源时间戳记和服务器时间戳记。原始时间戳是来自设备的时间戳,服务器时间戳是来自运行OPC UA服务器的操作系统的时间戳。
节点和属性的列表如下所示:
- 节点编号
- 实例值的AttributeId
- DataEncoding:这允许客户端选择适当的数据编码,默认值为XML,UA二进制
OPC协议的功能
OPC协议不能完全免费。要使用OPC SDK开发软件,您必须是OPC Foundation的成员。但是,现在有客户端和服务器库的免费实现,例如freeopcua.github.io,但是它们还没有 pub / sub实现。
与MQTT等其他协议相比,OPC并非轻量级。
PLC可编程逻辑控制器
术语PLC(可编程逻辑控制器,PLC)随后在EN 61131(IEC 61131)标准中定义。PLC是专门为工业环境设计的统一数字电子控制系统。PLC不断监视输入设备的状态,并根据用户程序做出决定,以控制输出设备的状态。
PLC要求:
- 它必须能够在恶劣的工业条件下运行,例如极端温度,灰尘,劣质电源网络。
- 它应与行业专用的24VDC或240VAC离散输入和输出信号以及模拟信号(±10V,4-20mA等)一起运行。
- 编程语言必须由自动化工程师理解
- PLC必须持续监视工业设施的运行
- 操作系统必须足够快才能执行扫描周期(20-100ms)
下图显示了PLC基本操作模式的结构(以CPU Simatic为例)。
带SIMATIC S7-1500的OPC UA
先决条件- SIMATIC TIA门户V13-16必须安装
为了模拟与OPC服务器的控制器,SIMATIC S7-PLCSIM高级版本2或3必须安装和配置。
Support.industry.siemens.com/cs/document/109772889/trial -download%3A-simatic-s7-plcsim-advanced-v3-0?dti = 0&lc = zh-WW我已经在具有现有Simatic TIA Portal V14 SP1软件包的系统上安装了模拟器版本3。在安装之前,安装程序会通知PLCSIM V14与SIMATIC S7-PLCSIM V3不兼容,必须将其删除。我按照以下步骤操作,然后暂停了安装。已在TIA Portal中使用CPU 1512C-1 PN创建了一个测试项目。一个特殊功能是无法使用“开始模拟”按钮执行模拟,但是在PLCSIM Advanced运行时,“下载到设备”按钮可以使用。
要通过网络访问模拟器,必须启用PLCSIM Virtual Eth。适配器,您必须首先为其安装WinPcap软件。接下来是标准的以太网设置。
按下“开始”按钮后,模拟器将激活并在网络上可见
接下来,需要在对话框的“保护”选项卡上设置“在块编译期间支持仿真”复选框,以在项目根目录中调用“属性”快捷菜单。
下一步是激活项目中的OPC服务器并选择许可证类型(您可以忽略它,之后将不编译项目)
此外,将软件上载到PLCSIM Advanced的过程类似于上载到标准模拟器的过程,只是前面所述的情况除外。
在TIA Portal测试项目中,创建了一个带有“压力”标签的DB1,并分配了数字输出“ Q0.1 Tag_2”。
要连接到OPC服务器并监视网络,节点和标签,可以使用UaExpert OPC客户端,该客户端可以从www.unified-automation.com/products/development-tools/uaexpert.html下载。
要连接到OPC服务器,您需要添加一个新连接并注册先前在TIA Portale的OPC服务器项目设置中设置的端点URL,在我的情况下为opc.tcp://192.168.1.113:4840
将OPC客户端连接到模拟器服务器时,可以观察创建的节点和变量。
要以编程方式实现OPC客户端和服务器之间的交互,可以使用Python github.com/FreeOpcUa/python-opcua中该库的开放源代码实现,还有带有代码的示例。在使用之前,您需要安装必要的依赖项:
pip install freeopcua
pip install cryptography
创建带有三个标签的OPC服务器的最简单示例
from opcua import Server
from random import randint
import datetime
import time
class Opc:
def __init__(self):
self.server = Server()
self.url = "opc.tcp://127.0.0.1:4848"
self.server.set_endpoint(self.url)
self.namespace_uri = "OPCUA_SIMULATION_SERVER"
self.namespace = self.server.register_namespace(self.namespace_uri)
self.root_node = self.server.get_objects_node()
self.parameters = self.root_node.add_object(self.namespace, "Parameters")
def create_variable(self, name, initial=0):
variable = self.parameters.add_variable(self.namespace, name, initial)
variable.set_writable()
return variable
def main():
opc = Opc()
tag_1 = opc.create_variable("Temperature", 25)
tag_2 = opc.create_variable("Pressure")
tag_3 = opc.create_variable("Time")
opc.server.start()
print("Server started at {}".format(opc.url))
while True:
#tag_1.set_value(randint(10, 50))
tag_2.set_value(randint(200, 999))
tag_3.set_value(datetime.datetime.now())
time.sleep(2)
if __name__ == '__main__':
main()
客户端部分的最简单示例
from opcua import Client
import time
url = "opc.tcp://127.0.0.1:4848"
client = Client(url)
client.connect()
print("Client connected")
Temp = client.get_node("ns=2;i=2")
Temp.set_value(25)
if __name__ == '__main__':
while True:
temperature = Temp.get_value()
print(temperature)
time.sleep(1)
也可以使用UaExpert客户端观察连接
I-IoT Edge概念
Edge是生产环境与云中的IoT世界之间的枢纽。 Edge可以分解为三个宏组件:Edge Gateway,Edge工具,Edge Computing
在2017年,Gartner宣布以下内容:“ Edge将吞噬云。”尽管此声明听起来有些争议,但它突出显示了Edge多年来发挥的作用。在过渡到云的阶段之后,工业公司意识到并非总是可以在远程位置进行所有操作。原因如下:
- . . , , . .
- : . , , , , 1 50 .
- 网络延迟:与数据更改相关联的高级过程控制或分析功能在较短的时间范围内会影响设备性能,因此网络延迟较高。为了在一定时间间隔内最快地执行,必须优化设备。
- 数据连接。为了优化工作流程或维修设备,需要在不访问Internet连接的情况下更换组件。
边缘网关
边缘网关是边缘设备的核心。边缘网关的主要职责是连接到工业资源,以使用传输协议(例如MQTT,CoAP,HTTPS或AMQP)收集数据并将数据发送到I-IoT中心。
边缘网关最重要的组件是工业适配器和IoT适配器。工业适配器通常从Field区域预订数据并将其发布在数据总线上。通常,它为所选设备实现连接器,充当I-IoT数据流中的源并使其在Edge数据总线上可用。另一方面,IoT适配器从数据总线接收值并将其传输到IoT Data Hub。网关边缘的重要部分是存储转发组件。它是将数据存储在临时本地存储中的通用机制。它提供了针对网络不稳定的数据传输的鲁棒性。在全球网络中,通信通道的不稳定性和等待时间非常高。存储转发机制可以如下:
- 有限的内存缓冲区,涵盖了短暂的不活动时间
- 磁盘上的专用存储区域,可以覆盖长时间不活动或大量数据流量。
必须确保数据传输的时间窗口范围取决于特定方案以及边缘内存和存储的物理资源。
配置实用程序(Edge工具)
边缘工具应具有以下功能:
- 能够轻松地远程和本地管理和配置数据收集的能力
- 可以注册修复和更新
- 记录动作的可能性
- 使用用户界面查看和修改数据的能力
- 启动时在云中进行自我配置和自我注册
- 能够从云接收和执行命令
边缘计算
边缘计算具有以下功能:
- 能够使用I-IoT(中间件)软件执行离线和在线操作。
- 托管定制应用程序的可能性
- 与I-IoT中间件结合使用或离线运行分析的功能。
- 能够从I-IoT中间件执行操作或加载分析
- 能够按需或有条件启动将非结构化和特定数据发送到I-IoT中间件
边缘实现
云供应商和原始设备制造商(OEM)会根据自己的操作系统开发各种解决方案,或者提供与云无关的软件开发工具包(SDK)。
Azure IoT边缘
Azure IoT Edge是Microsoft针对Azure IoT的Edge解决方案。该平台支持存储和转发,Edge Analytics,以及用于将本机或标准协议转换为Internet协议的多个适配器。Azure IoT Edge在其OPC Classic和OPC-UA实施中还支持OPC服务器。产品概述:
- 与支持容器子系统的Linux或Windows设备一起使用。
- 免费,开放源代码,MIT许可的运行时
- 来自Azure服务或Microsoft合作伙伴Cloud Frontend的与Docker兼容的容器。允许您使用IoT中心从云远程管理和部署工作负载
绿草地
Greengrass是AWS的下一代IoT Edge。AWS提供了用于构建AWS Edge的SDK,并通过Greengrass将云功能扩展到了边缘设备。这使设备可以在仍然使用云进行管理,分析和持久存储的同时在本地采取行动。Greengrass支持OPC UA,不支持OPC Classic。优点:
- 近实时事件响应
- 离线办公
- AWS IoT Greengrass通过LAN和云对设备数据进行身份验证和加密
- 带有容器支持的简化设备编程
Android Things
Google提供了用于Edge开发的SDK。它赞助Android作为下一代Edge设备。平台功能:
- 使用Android SDK和Android Studio开发
- 通过Android平台访问显示器和摄像头等硬件
- 将应用程序连接到Google服务
- 通过外围设备I / O API(GPIO,I2C,SPI,UART,PWM)集成其他外围设备
- 使用Android Things控制台通过无线发送更新和安全更新
节点红色
这是一种用于物联网的可视化编程工具,它允许设备,API和在线服务相互连接。Node-RED运行时建立在Node.js之上,因此可以充分利用其事件驱动的非阻塞模型。Node-RED是最初由IBM Emerging Technology Services团队开发的流式编程工具,目前是JS Foundation的一部分。
特征:
- 直接在浏览器中创建程序逻辑
- Node-RED运行时基于Node.js构建
- 在Node-RED中创建的流(逻辑单位)被保存到JSON文件中,可以轻松导出和导入
- 可以在任何支持node.js的设备上运行
- 大量的扩展
英特尔物联网网关
特征:
- 云和企业连接。
- 可连接传感器和现有控制器。
- 预过滤所选数据以进行传送。
- 本地决策,以确保轻松连接到旧系统。
- 硬件数据加密和软件锁定。
- 设备上的本地计算和分析。
商标
Flogo项目是一个轻量级的,基于Go的开源生态系统,用于构建事件驱动的应用程序。触发器和操作用于处理入站事件。交互界面提供关键功能,例如应用程序集成,流处理等。
- 具有条件分支和可视化开发环境的集成流程应用程序引擎
- 流是基于管道的简单流处理操作,具有跨多个触发器聚合事件和跨时间窗口聚合的能力。
- 实时上下文决策的声明性规则
- 用于基于内容的条件路由,JWT验证,速率限制,电路断开等的微网关模式
日食库拉
Eclipse Kura是基于Java / OSGi的开源,可扩展的IoT Edge框架。Kura提供对IoT网关的硬件接口(串行端口,GPS,看门狗,GPIO,I2C等)的API访问。它包括现成的现场协议(包括Modbus,OPC-UA,S7),应用程序容器和基于Web的可视化编程,用于数据采集,处理和发布到云平台。
EdgeX铸造厂
EdgeX FoundryTM是Linux Foundation支持的与供应商无关的开源项目,可为IoT边缘计算创建通用的开放环境。该项目的核心是一个互操作性基础架构,该基础架构托管在一个独立于操作系统的完整参考软件平台上,以创建一个即插即用的生态系统,从而统一市场并加速IoT解决方案的部署。
工业数据源的边缘连接选项
- 现场总线上的优势
- OPC DCOM上的优势
- OPC代理上的Edge
- OPC UA上的Edge
- 控制器上的OPC UA
OPC UA和控制器上的Edge
连接OPC UA服务器是首选方案,因为它可以最大化OPC UA的功能。与OPC服务器的连接可以通过两种不同的方式进行部署。在第一种情况下,Edge通过其OPC UA客户端接口连接到OPC UA服务器。数据源可以是以下之一:PLC,DCS,SCADA或Historian。
在第二种情况下,如先前与Simatic CPU 1500讨论的那样,Edge连接到直接安装在PLC上的OPC服务器。
MQTT协议
Pub / sub是一种将发送消息的客户端与另一个接收消息的客户端分离的方法。与客户端-服务器模型不同,客户端不知道任何物理标识符,例如IP地址或端口。 MQTT是发布/订阅体系结构,而不是消息队列。本质上,消息队列存储消息,而MQTT不存储消息队列。在MQTT中,如果没有人订阅(或收听)某个主题,则该主题将被忽略并丢失。
发送消息的客户端称为发布者;收到消息的客户端称为订户。 MQTT代理位于中心,该代理负责连接客户端和过滤数据。此类过滤器提供:
- 按主题过滤-根据设计,客户订阅主题和某些主题分支,并且不会收到比他们想要的更多的数据。每个发布的消息都必须包含一个主题,经纪人负责将此消息转发给订户或忽略它;
- 内容过滤-经纪人可以检查和过滤发布的数据。因此,任何未加密的数据都可以在存储或传输到其他客户端之前由代理进行管理。
- 按类型过滤-侦听其订阅的数据流的客户端也可以应用自己的过滤器。可以分析传入的数据,并据此对数据流进行进一步处理或忽略。
MQTT中的服务质量分为三个级别:
- QoS-0 ( ) – QoS. « », . ;
- QoS-1 ( ) – . , PUBACK;
- QoS-2 ( ) – QoS, , . - . QoS-2, PUBREC. , PUBREL. PUBREL . PUBREL PUBCOMP. PUBCOMP , .
目前,MQTT协议规范有两个版本:3.1.1和5.0。该协议的更详细的描述可以在这里找到和我的演讲的记录github.com/vladipirogov/Message-Queue-Telemetry-Transport,www.youtube.com/watch?v=fYoGubQFz5c&t=5s和www.youtube.com/watch?v=8mupuCjedlc。
在下一篇文章中,我将尝试展示一个使用Edge-red作为边缘网关,使用Apache Kafka作为数据管理器和临时存储,使用Kafka Streams作为规则引擎,使用Mosquitto(可以实现另一种实现)作为MQTT连接器的自定义Edge I-IoT平台的实现示例。 ... InfluxData技术将用于存储时间序列数据。
链接到聚会的视频。
信息来源
- 数字化转型平台
- OPC统一架构规范
- ACS TP百科全书
- FreeOpcUa是一个实施开源(LGPL)OPC-UA堆栈和相关工具的项目。
- GR Kanagachidambaresan工业物联网4.0
- Max Hoffmann工业智能代理4.0
- Wolfgang Mahnke OPC统一架构
- 克劳斯·施瓦布第四次工业革命
- Perry Lee物联网架构
- Ismail Butun工业物联网
- MQTT规格