基于OPC与MQTT的工业物联网网关的设计与实现

基于OPC与MQTT的工业物联网网关的设计与实现
赵晓峰;李海波
【摘 要】在工业物联网中,远程的设备控制与维护是工厂智能制造系统的重要组成.OPC技术被用于解决工业设备和应用程序之间的接口标准化问题,通过组态软件实现本地的过程控制.分析工业网络传统模式的问题,结合OPC与MQTT的相关技术,设计出工业物联网网关模型,并利用C#语言实现网关程序,实现工业设备的远程控制和数据采集.美国qe4
【期刊名称】80式通用机《柳州职业技术学院学报》
【年(卷),期】2018(018)003
【总页数】5页(P114-118)
【关键词】OPC;MQTT;物联网网关;JSON
【作 者】赵晓峰;李海波
【作者单位】无锡商业职业技术学院物联网技术学院, 江苏 无锡 214153;无锡商业职业技术学院物联网技术学院, 江苏 无锡 214153
【正文语种】中 文
【中图分类】TP311.11
0 引言
随着工业控制技术的发展,企业内部的工业自动化控制水平逐步提高,传统的过程控制已经不能满足工业智能化的需求。一直以来,PLC被广泛地用于生产设备的自动化控制,结合上位机的组态软件,形成生产现场的过程控制体系。在互联网背景下,原来下位机/上位机的模式已经不能适应工业物联网智能化控制的要求,本文提出的OPC/MQTT网关解决了PLC与云端应用的实时通讯问题。
1 工业网络结构
传统工业控制模式只考虑现场某个设备和流水线的自动控制,系统封闭,不同设备和系统
间的数据共享困难。由独立的上位机组态软件与下位的PLC进行通讯,面向过程只是解决了本地控制问题,构成了工厂内部的集中式控制[1],不能实现手机或PC的远程监控,在数据处理、数据分析上都存在不足。
另外,对于设备生产商而言,由于现场控制网络的封闭性,维护人员无法远程获取设备的相关信息,给设备维护工作带来不便,维护成本高。
本文对传统的工业控制网络进行扩展,基于OPC和MQTT设计工业物联网网关实现了远程控制和消息传递,结合云端应用解决了实时数据分析、远程智能控制,该工业物联网模型如图1所示(虚线框内是传统工控网)。
2 工业物联网网关的设计
在工业控制中,OPC (OLE for Process Control)是一个工业标准,它采用客户/服务器模式,把开发访问接口的任务放在硬件生产厂家或第三方,以OPC服务器的形式提供给用户,统一了用户访问的接口[2-3],通过OPC Server管理OPC Goup,每个Group下包含一组Item,每个Item描述了数据寄存器与服务器之间的连接 (地址)[4]。MQTT(Message Q
ueuing Telemetry Transport,消息队列遥测传输)是由IBM开发的一个即时通讯协议,现已被广泛用于物联网,可用于解决设备与设备之间、设备与云端系统之间的实时通讯问题[5]。
因为PLC的数据由OPC Server负责同步,网关主要任务是完成OPC Server中的OPC数据与来自云端的MQTT数据之间的双向通讯和数据格式转换。(1)通过OPC Client读取设备数据转换成MQTT消息传递给云端的MQTT Broker(消息服务器),Broker通知订阅者(Web 应用)处理消息,获取实时数据。(2)MQTT Broker收到Web应用发送的MQTT消息,通知网关进行数据解析,由网关通OPC Client同步到OPC Server,实现对设备的控制。网关的功能结构如图2的虚线框内所示。
网关核心的功能是数据同步,MQTT Client与MQTT Broker之间,为提高效率,采用了消息机制中的订阅/发布模式,系统中的网关配置唯一的网关ID,根据这个ID号,在Broker端为数据的上行和下行创建相应的上行主题和下行主题[6-7]。数据同步模式图如3所示。
图1 工业物业网结构
图2 网关功能结构图
图3 网关数据同步模式
(1)网关的数据同步引擎对OPC Server的读取,一般用订阅模式,当OPC Server中的数据发生变化时,可以获得变化的项目及值,相对于使用轮询方式,订阅的通讯数据量相对较少,效率更高一些。网关读取数据后,进行相应的解析,通过MQTT Client将此数据发布到指定的主题,实行数据上行。Web应用或移动应用通过订阅指定主题的方式获取数据,然后进行解析,实现相应的业务逻辑。
(2)当Web应用或移动应用需要控制设备运行或发送数据到设备,在应用端将数据封装成相应的格式,并以MQTT消息的形式发布到指定的数据下行主题,同步引擎会对消息进行解析,并将数据写入OPC Server,通过OPC Server数据进入PLC,控制设备运行。
(3)数据同步引擎和云端应用之间的数据通讯,通过MQTT消息机制实现,消息的内容(即消息体)采用JSON格式的字符串,网关无论是发布消息,还是收到订阅的消息,都按JSON格式进行消息的处理,消息中往往包括多个PLC项目,可以使用JSON数组描述,同一网关中的OPC项目名不允许重复[8]。
美国地震局
网关的访问控制模块是只允许指定的用户角对网关进行参数配置和实时数据显示,防止非法访问;设备保护模块是根据运行的实时数据和指定的业务逻辑,达到设备故障条件时,实时报警,中止设备运行,相关参数记入事件日志中;事件日志模块记录设备运行的开启、关闭,运行过程中的意外事件,管理者可以浏览事件日志记录。
3 技术实现
由于微软的COM/DCOM技术是OPC技术的基础,OPC Server运行在Windows平台上,基于稳定性、运行效率的考虑,网关与OPC Server可运行在同一台工控机上。下面给出基于.NET的C#语言描述网关核心功能的技术实现。
3.1 OPC数据的读取
对OPCServer的访问,采用OPC基金会提供的Opc.NET API库,在C#工程中添加对OpcNetApi.dll,OpcNetApi.Com.dll的引用, 过程如图4所示。关键代码如下:
(1)创建OPC Server服务器对象,完成连接Opc.URL url=new Opc.URL ("opcda://localhost/S7200.OPCServer");//资源url
(2)创建订阅组
图4 OPC数据读取处理流程
图5 WQTT同步OPC.Server
(3)通过subscription_DataChanged上传数据,发布到MQTT主题
3.2 MQTT数据的同步
采用MQTTnet库作为C#的MQTT客户端,在C#工程中添加对MQTTnet.dll,MQTTnet.Core.dll引用,过程如图5所示。
凡宇资讯(1)连接 MQTT Broker
(2)通过连接成功事件MqttClient_Connected,订阅网关的下行主题
(3)通过数据下行事件 MqttClient_ApplicationMessageReceived
4 性能测试
朗琴h3000
MQTT根据Qos定义的等级来传输消息,消息的Qos=0表示此消息“至多一次”,会发生消息丢失或重复,Qos=1表示此消息 “至少一次”,确保消息到达,有可能重复。Qos=2表示此消息“只有一次”,确保消息到达一次[9]。消息的Qos值越大,可靠性增加,但处理时间增加。在此,以jMeter3.2为测试工具,对阿里云服务器(windwos 2008 R2,2G内存,2M带宽)的MQTT服务进行网关性能测试,相关测试结果如表1所示。(测试包1024个字符,发布消息间隔100ms,每用户发100个消息)
表1 网关向MQTT发布消息的性能比较用户数 最大时间(m s)最小时间(m s)平均时间(m s)吞吐率 错误率 Q o s 1 0 0 1 6 0 0 1 6 5.7/s e c 0.0 0% 0 1 0 0 0 3 2 0 0 1 6 4 3.0/s e c 0.0 0% 0 1 0 0 4 0 4 1 4 1 8 1 6 0.1/s e c 0.0 0% 1 1 0 0 0 6 1 4 1 3 2 5 1 5 6 1.7/s e c 0.0 0% 1 1 0 0 4 3 9 2 6 3 3 1 5 8.0/s e c 0.0 0% 2 1 0 0 0 5 9 2 2 6 8 2 1 4 5 6.8/s e c 0.0 0% 2
测试结果表明,消息的Qos越大,平均处理时间越长,如果发送频率高且不太重要的消息,建议Qos设置为0,提升传输效率,重要消息或由云端向下推送的控制消息设置Qos=2,确保消息一次到达。

本文发布于:2024-09-22 07:39:53,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/124120.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:消息   设备   网关   控制   数据   工业   运行   实现
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议