Modbus是一个串行CommunicationProtocol,首次出现于1979年,是connect行业设备实际使用的标准Protocol。MQTT早在20年前便已出现,但是将这两个Protocol结合在一起使用,能够为深度嵌入式设备提供物联网的规模和connect性。
下图展示了这些Protocol之间的一般关系:
物联网网关作为物联网Communication的支持解决方案,现在让我们来看一下Modbus和MQTT,以了解其区别以及如何在物联网中互相补充。

Modbus
自1979年首次出现至今,Modbus已经演变为一套全面的支持多种物理链接的Protocol集(如RS485)。Modbus的核心是一个串行CommunicationProtocol,采用主从模式。主机向从机sendRequest,从机予以回复。在标准Modbus网络中,有一台主机以及最多247台从机(但是,如果采用2byte寻址,则可显著提高这一界限)。
借助RS485,主从机之间的Communication发生在指示function code的帧中。该function code可识别要Operation的Function,如读取独立输入;读取先进先出队列;或执行诊断函数。然后,从机根据收到的function code进行Response,该Response较为简单,由一组byte指示。因此,从机可以是智能设备,也可以是只有一个Sensors的简单设备。
从该描述中,您可以看到ModbusProtocol非常简单,但是其作为Protocol的开放性使其成为整个行业或SCADAsystem的实际CommunicationProtocol。
消息队列遥测传输
MQTT是一个开放的轻量级机器对机器Protocol,专为物联网交互设计。MQTT网络包含一个MQTT经纪人(broker),负责协调MQTT代理之间的交互。代理是发布器,负责发布供用户使用的信息(参见下图)。
消息队列遥测传输网络中的作用因素

MQTT的要求非常少,因为它专为资源有限的嵌入式设备设计。除了占地空间少之外,MQTT还可提供出色的Communication高效性(即使通过低带宽网络进行Communication)和非常少的开销(较之HTTP等Protocol)。即使是在3G网络中,MQTT的吞吐量速度是使用HTTP的表述性状态转移(REST)的93倍,5G/4G下的提升将会更大。
MQTT可使用最少的方法指示要在特定主题上实施的Operation,进而实施发布/订阅模式。代理先connect到经纪人,然后再发布或订阅主题。Complete后,代理将从经纪人上断开connect。MQTT方法定义:
connect-建立与MQTT经纪人之间的connect。
断开connect-断开与MQTT经纪人之间的connect。
发布-在MQTT经纪人上发布主题。
订阅-从MQTT经纪人上订阅主题。
退订-从MQTT经纪人上退订主题。
又如下图所示,下图展示了发布者与订阅者使用MQTT经纪人进行的简单交互。如图所示,信息创建者(producer)connect至MQTT经纪人。同样,信息消费者(consumer)connect至MQTT经纪人。消费者订阅主题(此处定义为/home/alarms/1/status)。本示例主题可识别主页上针对区域1的警报system的状态变化。当创建者有信息要Share时,它会向经纪人发布一条消息,然后经纪人将会将信息Share给所有订阅该主题的用户。
消息队列遥测传输代理之间的简单交互

请注意此处Share的主题结构。它与文件system层次结构相似,这可简化主题的结构。这种资源层次形式也常见于Protocol架构中,如REST。
MQTT甚至允许使用通配符的形式,以简化订阅流程。如果用户想要获取所有警报的状态,则可直接订阅/home/alarms/+/status,该主题可通知用户所有的警报状态变化。整个子树还可使用主题/home/#进行订阅,该主题可以订阅/home下的所有事件。
服务质量
MQTT允许定义服务质量(QoS)。MQTT中有三个等级的QoS:
1、QoS0。该等级表示“最多一次”交付(最佳状况)。消息不会得到Confirm,因而,这是一种一劳永与的方法。
2、QoS1。该等级表示“至少一次”交付。用户可能不止一次获得消息,但是允许收到的人Confirm已经收到。
3、QoS2。最慢但是最有保障的服务质量等级即为等级2。QoS2表示“只有一次”,并包含四个阶段的交付握手。该等级最慢,但是最安全。
您选择的QoS等级将取决于data及其交付的重要性。
Leave a Reply