张微
(中车永济电机有限公司,陕西 西安 710000)
摘要:本文针对电机故障预测与健康管理系统采集数据的特点及传输需求,对几种常见的物联网通信协议进行比较,选择采用MQTT协议进行数据传输并实现。
关键词:MQTT协议、物联网、数据传输
0 引言
牵引电机故障预测与健康管理系统通过列车车载单元按照规定的采样间隔和采样时长周期性地采集传感器信号,信号包括电机的振动、转速、温度、电流、电压等数据,并对采集的数据进行预处理和特征提取。处理后的数据通过网络实时传输至地面平台。
采集的数据为连续的数据流,数据量大,且传输要具有实时性,因此对数据传输协议的选则至关重要。
1 常见物联网通信协议比较
在物联网网络中,通常设备和网络性能是受限的,因此在选择数据通信协议时要考虑设备的存储、计算、能耗,窄带宽和网络不稳定等因素。常见的数据通信协议有:HTTP、 XMPP、 COAP、 MQTT。下面对这几种数据通信协议的优、缺点进行阐述和综合对比。
1.1HTTP协议
简介:HTTP协议是一个基于请求与响应模式的、无状态的、应用层的协议,只有遵循统一的 HTTP 请求格式,服务器才能正确解析不同客户端发的请求,同样,服务器遵循统一的响应格式,客户端才得以正确解析不同网站发过来的响应,为web的标准协议,已被广泛使用。
适用范围:在物联网中可以采用HTTP协议,例如手机、PC等终端设备。但是HTTP协议更适应于浏览器场景,并不适用于物联网的其他备。
优势:工作模式简单;完整的方法定义;合理的状态码设计;友好的媒体类型支持:文本、图片、视频。
缺点:单向传输,可以通过客户端轮询实现类似推送效果;安全性不高,HTTP是明文协议;HTTP是文本协议,对于运算、存储、带宽资源受限的设备来说开销大。
1.2XMPP协议
简介:XMPP(Extensible Messaging and Presence Protocol)是一种以XML为基础的开放式实时通信协议,它将需要实时通信的消息嵌入到XML结构体中,不仅具有很好的可扩展性,还拥有较强的可读性。
适用范围:用于即时通信、状态信息(如即时通信客户端显示用户在线、忙碌、视频中等)、通讯录管理。
优势:去中心化,类似于邮件网络架构;安全,支持SASL安全认证和TLS加密;灵活,基于XML的数据格式自定义功能;应用广泛。
缺点:不支持服务质量;网络负载高;二进制数据传输支持较差。
1.3CoAP协议
简介:CoAP (Constrained Application Protocol)是IETF组织为了满足物联网,M2M场景制定的协议,它借鉴了HTTP大量成功经验,同样使用请求/响应工作模式。
适用范围:适用于局域网环境下一对一M2M通信。
优势:采用和HTTP相似语义的请求和响应码,并使用二进制报文减小了报文大小;传输层基于UDP协议,比TCP数据包小,并不需要建立连接带来握手的开销;资源发现支持,通过观察者模式实现类似发布/订阅效果。
缺点:基于UDP的不可靠传输,但通过四种报文类型的组合及重传机制提高传输的可靠性;基于UDP的无连接传输,不利于不同网络间消息的回传。
1.4MQTT协议
简介:MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)协议,是一种基于发布/订阅范式的“轻量级”消息协议。
适用范围:适用于低带宽、不可靠连接、嵌入式设备、CPU、内存资源紧张等各种受限的环境。
优势:可以保持长连接,具有一定的实时性,使用发布/订阅模式,提供一对多的消息发布,使消息发送者和接收者在时间和空间上解耦;二进制协议,网络传输开销非常小(固定头部是2个字节);活的Topic订阅、 Qos等特性。
缺点:集中化部署,服务端压力大,需要考虑流程控制及高可用;对于请求/响应模式的支持需要在应用层根据消息ID做发布主题和订阅主题之间的关联。
1.5综合对比
总体来看,HTTP和XMPP网络开销大,而且不够灵活。 CoAP和MQTT更适合物联网受限环境中设备的通信,CoAP和MQTT的区别在于MQTT的采用长连接,CoAP采用无连接方式。从市场应用层面看,MQTT发展相对成熟、应用相对广泛,也比较适合设备的远程监控与管理。MQTT除了可以应用于物联网领域,在手机消息推送、在线聊天等领域都有所作为。
2.MQTT协议特点及实现方式
2.1 MQTT协议基本特点
(1)运行在TCP/IP或其他网络协议,提供有序、无损、双向连接。
(2)使用发布/订阅消息模式,提供一对多消息分发,以实现与应用程序的解耦,信息冗余小。
(3)对负载内容屏蔽的消息传输机制。
(4)对传输消息有三种服务质量(QoS):
a.最多一次,这一级别会发生消息丢失或重复,消息发布依赖于底层TCP/IP网络。
b.至多一次,这一级别会确保消息到达,但消息可能会重复。
c.只有一次,确保消息只有一次到达。在一些要求比较严格的计费系统中,可以使用此级别。
(5)数据传输和协议交换最小化(协议头部只有2字节),以减少网络流量。
(6)通知机制,异常中断时通知传输双方。
2.2 MQTT协议实现方式
实现MQTT协议需要客户端和服务器端通讯完成,在通讯过程中,MQTT协议中有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。其中,消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者。
MQTT传输的消息分为:主题(Topic)和负载(payload)两部分:
Topic为消息的类型,订阅者订阅(Subscribe)后,就会收到该主题的消息内容(payload);
payload为消息的内容,是指订阅者具体要使用的内容。
3.数据传输的实现
通过对几种常见物联网通信协议的比较,牵引电机故障预测与健康管理系统选择MQTT协议进行数据传输,与Kafka结合,将数据存到数据库中。数据流向如下图所示。边缘端采集数据,基于MQTT协议发送至服务器端的EMQ服务,构建EMQ消费者进程获取数据,并对部分数据进行计算。所有数据在进行格式转换后,根据分类写入Kafka不同的Topic中,通过构建Kafka消费者进程获取不同种类数据,并将数据写入数据库的不同表中。
作者简介:张微(1981年5月-),女,满族,辽宁省北宁市人,硕士学历,工程师,研究方向:大数据。