基于 MQTT 网关连接 PLC 与阿里云物联网平台的工业物联网系统
扫描二维码
随时随地手机看文章
引 言
MQTT 已成为国内工业物联网的首选云通信协议,尤其在大规模设备厂家远程运维系统中采用 MQTT+SSL/TLS 已成标配。消息队列遥测传输(Message Queuing Telemetry Transport,MQTT)是 IBM 开发的一种即时通信协议, 该协议支持所有平台。但对于云平台的程序员来说,如何将Modbus TCP,OPC-UA 等各种工业协议转为 MQTT 是一个难题。由于云平台软件大部分采用 Java 语言开发,基于JSON 格式的 MQTT 协议更易受到云平台开发人员的喜爱。但对于工业自动化的工程师而言,MQTT 还是一个比较陌生的协议。针对这一实际问题,本文提出了 MQTT 网关的概念, 提供轻量级、支持 Publish/Subscribe 消息的推送模式,使设备与云平台之间的通信更为简单 [1-3]。
1 系统设计
1.1 总体方案设计
系统包含设备层和数据处理层。设备层包含现场不同厂商的 PLC 及 MQTT 网关。不同的 PLC 通过 OPC-UA 通信将数据发送至 MQTT 网关,再由 MQTT 网关将数据转送至云平台,本文使用阿里云作为云平台,作为国内领先的云服务供应商,阿里云在物联网领域可提供完整的解决方案,并能与其他云产品互通,为后续大数据分析和管理提供便利 [4]。
在数据处理层中的物联网平台支持设备使用 CoAP, MQTT,HTTPS 协议接入。IoT Studio 是阿里云针对物联网场景提供的工具,它可覆盖各物联网行业核心应用场景,为物联网开发服务提供移动可视化开发、Web 可视化开发、服务开发与设备开发等。本案例使用基于 Web 的可视化开发插件,用户通过远程输入地址即可轻松实现对数据的读取和写入。此外后续还可以通过使用云数据库结合机器学习 PAI 实现基于大数据的预测,或通过阿里云的其他服务实现更多功能,其总体框架如图 1 所示。本文侧重介绍前段通信的建立, 针对大数据分析不做详细介绍。
系统中主要的设备为 MQTT 网关,MQTT 中定义了两种对象,即客户端和发布服务器。发布服务器是整个通信系统的网络核心,可以连接多个客户端,客户端则作为框架中信息的产生者和接收者 :
(1)客户端通过 Subscribe向发布服务器声明自己想接收的 Topic信息 ;
(2)相关客户端通过 Publish 向发布服务器上某个 Topic发布信息 ;
(3)发布服务器将该信息转发到对该 Topic感兴趣的客户端。
MQTT 运行原理如图 2 所示。
实验中使用的 MQTT 网关采用 BECKHOFF 公司开发的TwinCAT 3 作为软件平台。TwinCAT 3 是一款基于IEC 61131 编程语言的自动化软件,其工程环境完全集成在 Microsoft Visual Studio 框架中,除了系统配置、运动控制、I/O 控制之外,还可以进行编程和调试。
作为网关的输入端,该平台可以支持市面上 90% 以上的 通 信 协 议 , 如 OPC-UA/DA,Modbus TCP,EtherCAT, PROFINRET,EtherNET/IP,CANopen,DeviceNet,Profibus DP 等,可以真正实现与不同厂商 PLC 进行数据对接。作为网关的输出端,连接互联网后可以直接通过 MQTT 协议与阿里云的物联网平台进行数据对接 [5-6]。
1.2 MQTT 网关与物联网平台的连接
在物联网平台中建立连接,需在云端创建产品和对应设备。产品相当于某一类设备的集合,该类设备具有相同的功能,可以根据产品批量管理对应设备。
为了保证传输数据的安全性和可靠性, 每个设备需要具备物联网平台颁发的凭证才能连接, 凭证内容包含ProductKey,DeviceName 和 DeviceSecret,在云服务器中可以找到对应信息。设备凭证是设备与物联网平台交流的重要依据,需要在 PLC 程序中进行相关加载 [7-8]。
1.3 MQTT 网关与 PLC 的连接
为了收集现场不同 PLC 所采集的过程数据,需要将它们连接至 MQTT 网关。本文采用 OPC-UA 作为通信协议, OPC UA 技术在国内正形成一个热潮,在工业 4.0、智能制造等领域被广泛认可。OPC-UA 与 MQTT 网关采用客户端 / 服务器的通信模式,这种对等方式可提供安全和确定的信息交换 [9-10]。
不同 PLC 供应商所提供的 OPC-UA 设置软件略有不同, 在此不做过多介绍,可以在对应厂商的官网找到相关资料。MQTT 网关作为 OPC-UA 客户端可以同时连接多个 OPC Server 的 PLC,其网络拓扑如图 3 所示。在本文中分别使用了 4 款不同系列的 PLC,分别为 SIEMENS 的 1500 和 1200 系列,FESTO CECC 和 BECKHOFF CX2020 系列。
2 系统关键模块功能的实现
2.1 MQTT 网关与物联网平台的连接
作为MQTT网关,TwinCAT3软件可以通过库文件“TC3_ IotBase.library”实现与 MQTTBroker的数据交互。网关可以收集下位机或本地所采集的数据,通过将数据进行 JSON格式的转换上传至云端,其结构示意如图 4 所示。
2.1.1 MQTT 通信的建立
MQTT 网关的编程基于 IEC 61131-3 中的结构化文本, 与通信建立相关的主要代码如下 :
2.1.2 物联网平台数据的 Publish/Subscribe
在 MQTT 中,数据的发送和接收通过 Publish/Subscribe 实现,对应的 Topic 信息可以在云端设备信息中查阅,针对本次测试,对应的 Topic 如下 :
2.2 MQTT 网关与 PLC 的连接
将 4 台 PLC 通过交换机连接,在各 PLC 中添加一个温度变量传输至 MQTT 服务器来模拟效果,硬件连接如图 5 所示。
图 5 实际硬件连接
TwinCAT 3 OPC-UA Client 的设置界面中分别添加4 台 PLC 的 Server 信息,其 URL 为 OPC UA Server 所在主机的 IP 地址 :端口号,例如 opc.tcp ://192.168.1.1 :4840,随后找到节点名称,即设备在 OPC UA Server 中的变量节点DisplayName 的值即可。
2.3 测试与结果
采集的温度发送至 MQTT 网关,再传输至物联网平台后通过适当的设置即可直接在控制台信息中找到实时温度数据,如图 6 所示。
为了显示更详细的数据,如实时数据和历史数据,可以在 IoT Studio Web 中进行可视化图形界面的开发,本案例将温度数据与趋势图插件的数据源接口进行对接,设置好映射关系后,该可视化界面就完成了部署到云端的工作。最终用户只要通过带浏览器的手机、笔记本电脑直接打开网页就能实时访问数据,可视化界面如图 7 所示。
图 7 可视化界面
为测试系统的响应性能及网络延时,每分钟通过 PLC 向云端发送一条温度数据以测试系统整体的实时性能,本实验维持了 12 h, 取每小时的平均值, 最终的平均值为3.7 ms,其结果如图 8 所示。
3 结 语
实验表明该 MQTT 网关具有较高的安全性、可扩展性和实时性等优点,能够实现现场设备数据采集并连接至云服务器,对将来的大数据分析有着非常重要的指导意义。
本文仅是抛砖引玉,基于该 MQTT 的工业物联网系统可用到更为广泛的应用场景,比如基于大数据的设备预防性检测等,希望大家在工业 4.0 的大环境下能够更好地利用云资源。