伴随着“工业4.0”、“中国制造2025”及“两化融合”等战略的推进,信息技术与工业控制技术深度融合,物联网、边缘计算、云计算、机器学习等新技术应用日趋广泛,工业现场云边端的数据传递便成为了关键。在众多高效、实时、可靠的数据通信协议中,MQTT则是应用最广泛的一种。
什么是MQTT呢?
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),该协议由IBM公司在1999年开发,主要为了在不可靠的网络中实现可靠且轻量的消息传输,它被设计为极轻量级、基于发布/订阅方式的消息传输协议,它是基于TCP/IP应用层的通信协议,它的主要优点在于以极少的代码和有限的带宽,为远程设备提供实时可靠的消息服务。
MQTT如何工作的呢?
MQTT协议中有三种身份:发布者(Publisher)、Broker、订阅者(Subscriber)。其中,消息的发布者和订阅者都是客户端,一个客户端可以既是发布者又是订阅者。不同的客户端通过向Broker发布或订阅相同主题的消息实现信息的传递。Broker仅是消息的中转站, 它把接收的发布者发布的内容,发送给订阅该主题的订阅者,这么看来Broker就像是邮局,发布/订阅的内容就像邮件,主题可以看成地址,消息就像我们要传递的信件内容。
通过发布/订阅的方式,MQTT很容易实现双向通信,很容易解决工业现场通过云平台进行反向控制的痛点!
MQTT报文格式了解如何做到可靠且轻量?
MQTT的所有控制报文都包含固定报文头(Fixed Header),有些控制报文包含可变报文头(Variable Header)和有效负荷(Payload)。
消息格式:
固定报文头 | 可变报文头 | 有效负荷
1、固定报文头包含两部分,第一部分是第一个字节,主要用来表示控制报文类型和Qos(消息质量)等级;第二部分从第二个字节开始表示剩余报文长度,该长度是后面可变报文头和有效负荷的总长度。
2、可变报文头主要包含协议名、协议版本、连接标志、心跳间隔时间、连接返回码、主题名等,这部分之所以称为可变报文头,是因为针对不同的控制报文类型,部分的长度、内容、含义都是不一样的,主要是为了能辅助完成这14种控制报文类型。
3、有效负荷就是消息的主体,才是最终要传递的内容,只有以下几种消息类型,会带有效负荷:CONNECT、PUBLISH、SUBSCRIBE、SUBACK、UNSUBSCRIBE。
PLCnext融合MQTT
菲尼克斯PLCnext在物联网应用中不仅原生支持Proficloud,结合MQTT增加应用的多样性,以及对多平台的兼容性,比如对Visu+、第三方SCADA、手机客户端的通信等,方便快捷的实现远程监控、参数设定、故障检测等功能。
大家都知道PLCnext最大的特点就是支持高级语言编程,因此我们在对MQTT的应用上支持两种配置方式:
1、在IEC61131标准中,可以直接调用MQTT功能块,实现对Broker的连接和终止、发布和订阅等功能,结合ST编程可以快速实现有效载荷的解析。该功能块可以在PLCnext store中下载后,直接安装库文件后免费使用。
2、PLCnext支持多种高级语言编程,我们在GitHub发布了基于Paho MQTT C++ library开发的可以直接安装在PLCnext上的ACF程序,PLCnext的控制程序通过GSD调用MQTT客户端的数据。在GitHub上可以免费下载该库文件,部署完成后客户可以直接使用MQTT客户端功能进行二次开发。
PLCnext MQTT应用工程案例
国内某石油钻采设备厂商,需要通过云平台对海上设备进行数据采集、参数设定、反向控制等远程运维功能,海上钻采设备一般都采用无线连接公网,但周边无线基站信号一般都不稳定,这种不稳定的网络环境且期望小流量的应用场景,使用MQTT完全可以解决。
最终,客户选择把MQTT Broker部署在云平台,用菲尼克斯的PLCnext作为边缘控制器,PLCnext对下监控现场设备,对上通过菲尼克斯4G路由建立网络,通过PLCnext的MQTT客户端功能实现现场设备的远程运维。
PLCnext原生支持Proficloud,加上MQTT的加持,菲尼克斯可以提供完整的IIoT:工业物联网解决方案!