物联网(IoT,或者说工业互联网)的基础在于设备之间的通信,通信协议在将海量设备连接到互联网时发挥着重要作用。本文介绍IoT中的通信/通讯协议,并对常用的协议如:MQTT, CoAp, OPC UA, Modbus, Profinet ,介绍其特点,并进行比较,说明协议的适用场景。先上一张大图。
IoT中的常用协议
MQTT
MQTT全称消息队列遥测传输(Message Queue Transfering Transport),是一种轻量级,可扩展的互联网协议,可用于支持物联网全局通信。MQTT专为物联网交互设计,通信对设备的资源要求低,保证了通信的高效性(支持低带宽网络)。和HTTP等协议相比,其网络开销非常小。同时,MQTT允许定义服务质量,分为最多一次发送(QoS 0),至少一次发送(QoS 1)和只有一次发送(QoS 2)三个等级,通信质量由低到高,资源占用由少至多。MQTT网络由发布者(Publisher),代理(Broker)以及订阅者(Subscriber)三者构成,如图。
MQTT常用网络结构
客户端通过代理向服务端订阅消息主题。当服务端发布消息时,代理将该消息发送给订阅此主题的客户端。
ModBus/MBus
Modbus核心是一个串行通信协议,采用主从模式,主机向从机请求数据,是短距离连接行业设备的标准协议。标准Modbus最多支持247台从机(采用2字节寻址,可提高从机数量)。经过四十年发展,Modbus已经演变为支持多种物理链接的协议集(如RS-485)。借助RS-485,主从机之间的通信发生在指示功能码的帧中。该功能码指示要操作的功能:读取输入/队列 或执行诊断函数,从机根据功能码进行响应。Modbus协议非常简单,其开放性使其成为整个行业或SCADA系统的实际通信协议。
ModBus和MQTT在网络中的位置
应用IP技术的网络有多种类别:
消费者与工业
网页服务
物联网服务
发布/订阅
请求/响应
在设计新系统时必须考虑这些类别。让我们看一下物联网应用的IP网络,并定义选择标准。
互联网
Internet是将IP数据包从数据源路由到目的地的、所有网络设备的总和。相比之下,万维网是一种在互联网上运行的应用系统。Web是人们为交换信息构建的工具,在过去的20年中,Web已经趋于完善,以便普通的非技术人员可以轻松高效地使用Internet。例如,因特网的人机界面现在包括电子邮件、搜索引擎、浏览器、移动应用程序、Facebook和Twitter、以及其他流行的社交媒体。
相比之下,在物联网中,我们最基本的想法是电子设备之间通过互联网交换信息。但是这些设备并没有浏览器或社交媒体一样的机器来促进沟通。由于物联网设备需要协同工作,在速度、规模和功能的需求上,物联网也与Web不同。这些要求远远超出了人们的需求或使用范围。我们正处于为这些系统开发新工具和服务的开始阶段,这也是难以锁定物联网定义的原因之一。在现实应用中,存在许多愿景相互冲突,包括如何定义它能够做什么,可能做什么或应该做什么,等等。
TCP/IP协议栈
TCP / IP协议栈是Internet和Web的核心。它使用七层开放系统互连参考模型(OSI)来表示,如下所示(图1)。最顶端的三层组合在一起,简化了模型。
图1 | 七层OSI参考模型。
以下是从嵌入式系统集成角度对重要OSI层的快速描述:
1.物理和数据链路层
嵌入式系统使用的最常见的物理层协议是:
以太网(10 Mbps,100 Mbps,1 Gbps)
Wi-Fi(802.11b / g / n)
串行点对点协议(PPP)
GSM,3G,4G,LTE
2.网络层
这是互联网的生活方式。互联网 – 网络间的简称 – 之所以如此命名,是因为它提供了网络之间、物理层之间的连接。这是我们找到无处不在的IP地址的地方。
3.传输层
在IP之上,我们有传输控制协议(TCP)和用户数据报协议(UDP)这两种传输协议。由于TCP用于我们与Web的大多数人工交互(电子邮件,Web浏览等),因此人们普遍认为TCP应该是传输层使用的唯一协议。TCP提供了逻辑连接的概念、传输的数据包的确认、丢失的数据包的重传以及流量控制 – 所有这些都是很棒的事情。但对于嵌入式系统,TCP可能是过度的要求。因此,即使UDP长期以来已经被降级,仅应用于域名服务器(DNS)和动态主机配置协议(DHCP)等网络服务,现在也在物联网的传感器数据获取和远程控制领域找到了自己的位置。对于语音和视频等实时数据应用,如果您需要某种类型的数据管理,UDP也比TCP更适合。原因是TCP的数据包确认和重传功能对这些应用程序来说是无用的开销。如果一段数据(例如一些语音音频)没有及时到达其目的地,则重传该分组是没有意义的,因为它将不按顺序到达并使语音乱码。
TCP有时优先于UDP,因为它提供持久连接。要使用UDP启用相同功能,必须在UDP上方的协议层中实现此功能。
当您决定如何将数据从“物”通过本地网络连接到IP网络,您有多种选择。由于所使用的技术是成熟的,并且可以开源获得——通过网关链接两个网络,或者可以将网关构建到“物”本身。现在,许多微控制器(MCU)都在芯片上安装了以太网控制器,这使得这项工作变得更加容易。
物联网协议
图片来源:https://entrepreneurshiptalk.wordpress.com/2014/01/29/the-internet-of-thing-protocol-stack-from-sensors-to-business-value/
使用现有的Web技术构建物联网系统是可能的,即使它不如新协议那么高效。超文本传输协议(HTTP / S)和WebSockets是有效载荷的通用标准,以及可扩展标记语言(XML)或JavaScript对象表示法(JSON)。使用标准Web浏览器(HTTP客户端)时,JSON为Web开发人员提供了一个抽象层,通过保持打开两个HTTP连接,创建一个具有到Web服务器(HTTP服务器)的持久双工连接的、有状态Web应用程序。
HTTP
HTTP是用于Web的客户端 – 服务器模型的基础。在IoT设备中实施HTTP的最安全方法是仅包括客户端,而不是服务器。换句话说,当IoT设备可以启动与Web服务器的连接,但不必是接收连接请求时则更安全; 我们不希望外部计算机访问安装了IoT设备的本地网络。
的WebSocket
WebSocket是一种通过单个TCP连接提供全双工通信的协议,通过该连接可以在客户端和服务器之间发送消息。它是超文本标记语言5(HTML5)规范的一部分。WebSocket标准简化了双向Web通信和连接管理的复杂性。
XMPP
可扩展消息传递和在线协议(XMPP)是现有Web技术在物联网领域寻找新用途的一个很好的例子。
XMPP来源于即时消息和状态信息,并已扩展到语音和视频调用、协作、轻量级中间件、内容联合以及XML数据的通用路由。它是管理大规模白色家电(如洗衣机,烘干机,冰箱等)的有力竞争者。
XMPP的优势在于其寻址、安全性和可扩展性。这使其成为面向消费者的物联网应用的理想选择。
HTTP,WebSocket和XMPP是为物联网服务的技术示例。其他团队也在IoT领域,努力向我们展示新的解决方案。
Wannabe通用协议
许多物联网专家将IoT设备称为受约束系统,因为他们认为物联网设备应尽可能便宜,并使用可用的最小MCU,同时仍然运行通信堆栈。
目前,为物联网调整互联网是许多全球标准化机构的主要优先事项之一。表1包含当前活动的简短摘要。
表1 | 约束系统标准化工作。
如果您的系统不需要TCP的功能并且可以使用更有限的UDP功能,则删除TCP模块显着有助于减小产品总代码占用空间的大小。这就是为物联网领域带来的,用于无线传感器网络(WSN)和约束应用协议(CoAP)轻型互联网协议的低功耗无线个域网(6LoWPAN)的IPv6网络。
CoAP协议
虽然Web基础架构可用于物联网设备,但对于大多数物联网应用来说,它太庞大了。2013年7月,Internet Engineering Task Forcce(IETF)发布了CoAP,用于低功耗和有损节点网络(LLN)。与HTTP一样,CoAP是RESTful(Representational state transfer, 通过统一的应用程序编程接口(API)协议操作资源和资源标识符的能力)。
CoAP在语义上与HTTP对齐,甚至与HTTP进行一对一映射。网络设备受限于闪存和RAM、或较小MCU的限制,而本地网络的约束来源于高的分组错误率和低吞吐量(几十kbps)。CoAP可以是用于电池或能量收集的设备的良好协议。
CoAP的特点:
由于CoAP使用UDP,因此某些TCP功能可直接在CoAP中复制。例如,CoAP区分可确认(需要确认)和不可确认消息。
请求和响应通过CoAP消息异步交换(与使用现有TCP连接的HTTP不同)。
所有标头,方法和状态代码都是二进制编码的,这样可以减少协议开销。但是,这需要使用协议分析器来解决网络问题。
与HTTP不同,缓存CoAP响应的能力不依赖于请求方法,而是依赖于响应代码。
CoAP完全解决了对极轻协议的需求,该协议表现出类似于永久连接的行为。它对HTTP具有语义熟悉,并且是RESTful。如果您有网络背景,使用CoAP相对容易。
MQTT
消息队列遥测传输(MQTT)是一种开源协议,针对受限设备和低带宽,高延迟或不可靠网络而开发和优化。它是一种发布/订阅消息传输,非常轻量级,非常适合以较小的带宽将小型设备连接到网络。MQTT具有带宽效率、与数据无关,并且具有连续的会话感知,因为它使用TCP。它旨在最大限度地减少设备资源需求,同时还试图确保可靠性和一定程度的服务等级交付保证。
MQTT针对需要从Internet上的后端服务器进行监视或控制的大型小型设备网络。它不是为设备到设备传输而设计的,也不是为了将数据“多播”到许多接收器而设计的。MQTT很简单,几乎没有控制选项。使用MQTT的应用程序通常很慢,因为在这种情况下“实时”的定义通常以秒为单位进行测量。
MQTT与CoAP
MQTT发布/订阅可以很好地扩展,并且已经证明了该架构的优点。在最新的IETF评论请求(RFC)中,CoAP引入了对发布/订阅的支持。
CoAP的轻型有效载荷非常适合无线传感器网络。传感器网络的MQTT(MQTT-SN)采用了这一想法并对其进行了再现。
两个主要的专用物联网协议是相互借鉴的。这两个协议是否能成为主流?我们相信,至少需要五到十年。
潜在的物联网协议的比较
思科是互联网的核心; 它的IP设备无处不在。思科积极参与物联网的发展,并看到了连接物理对象,从我们的环境获取数据以及处理这些数据以提高我们的生活水平的潜力(表2)。
表2 | 思科在物联网标准方面的工作。
表2中所示的特定于因特网的IoT协议已经开发出来,以满足低存储能力、低带宽和高延迟的网络的设备的要求。图2提供了这些协议为物联网带来的性能优势的另一个很好的总结。
图2 | Web和IoT协议的比较。 资料来源:Zach Shelby,Micro:bit Foundation [1]。
选择正确的物联网协议
连接传感器和对象打开了一个可能的、全新的用例世界——正是这些用例将确定何时为正确的应用程序使用正确的协议。
每种协议的高级定位都是类似的。除了HTTP之外,所有提到的协议都被定位为实时发布/订阅IoT协议,支持数百万台设备。根据您定义“实时”(秒,毫秒或微秒)和“物”(WSN节点、多媒体设备、个人可穿戴设备,医疗扫描仪、引擎控制等)的方式,针对这些产品,协议选择至关重要。从根本上说,这些协议绝对不会是相同的。
今天,Web运行在数百种协议之上;物联网将支持数百个。在设计系统时需要做的是非常精确地定义系统需求,并选择正确的协议集来解释。互联网协议是一个载体; 它可以为IoT封装尽可能多的协议,就像今天的Web一样。
许多行业专家都在寻求协议标准化但是如果有很多协议用于网络,为什么物联网的协议数量不会那么多呢?您可以选择符合要求的协议。唯一的区别是物联网协议仍然很年轻,必须证明其可靠性。请注意,当互联网成为现实时,IPv4才出现。我们现在正在大规模部署IPv6,物联网是电信运营商一直在等待证明所需投资的杀手级应用。
作者:输配电世界
链接:https://www.jianshu.com/p/7902d2a42f37
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
作者:cooooooooodeway
链接:https://www.jianshu.com/p/112055661233
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。