工业4.0的提出极大推动了制造业的发展,伴随着工业4.0的浪潮,制造业信息化迅速发展,车间的智能化程度日益增强,车间智能化与车间内的智能化设备有着直接的联系。伴随车间智能化程度的提高,车间设备也更加多元化,如数控机床、工业机器人、AGV、嵌入式系统设备等。种类各异的底层设备也给车间数据采集与传输带来了如下难点:①对于智能化物联网车间,底层设备种类繁多,其通信协议也各不相同,使得车间的数据采集和通信系统的整合所需要的成本投入十分巨大;②对于各种车间信息管理系统,不同协议的信息传输直接影响各个层次间数据通信的统一管理,而这正是车间信息管理系统所追求的目标;③由于没有统一的通信协议,车间制造执行系统在设计时,只能被动地集成各种不同的通信协议,进而与底层设备相适配,这无疑提高了系统开发的难度,阻碍了整个车间信息化建设。所以,在工业4.0万物互联的要求下,在智能车间内不同的设备之间建立一种简单可靠的统一通信模式具有重要意义,而过程控制统一对象模型(OLE for process control unified architecture,OPC UA)技术可以很好地解决上述问题。
OPC UA是一个开放的跨平台架构,由全世界30多家知名制造企业联合开发,目前已成为工业4.0中的通信标准。OPC UA 协议不受限于操作系统,具有很强的独立性,并且拥有很高的安全保护机制,可以确保信息通信安全可靠。OPC UA还能支持各类设备复杂的数据结构通信,通过将设备的各种数据以及结构节点封装为对象来对设备信息模型进行描述,以此来实现复杂数据结构的通信。同时,OPC UA服务器可以通过将底层设备的实时数据传输给OPC UA客户端,并提供历史数据查询来实现设备的远程监控[1]。刘洋等[2]对基于消息代理的OPC UA发布订阅模式进行了研究。王民等[3]对基于OPC UA的数字化车间信息交互模型进行了研究。顾岩等[4]设计了基于OPC UA的3D实时监控系统。在企业应用方面,ABB、爱默生、罗克威尔、西门子等企业已经实现了OPC UA应用程序的开发和应用。德国在“阿尔法文图斯”海上风电厂并网发电项目中采用OPC UA技术,在SCADA系统中进行数据采集和监控[5]。近年,国外一些自动化设备大厂(如西门子)已经将OPC UA的整套服务集成在产品之中,但这些OPCUA系统较为封闭,不适合二次开发。与国外相比,OPC UA在我国的应用还处于初级阶段。目前国内市场上还很少看到成熟的OPC UA产品,但OPC UA技术已被国内许多工业控制软件开发者所认可,OPC UA技术在智能制造车间的应用前景十分广泛[6]。
本文提出了一种基于OPC UA的车间信息物理系统通信架构,实现了车间设备的数据采集和通信,为智能制造车间提供了一种更为安全可靠的通信机制。
OPC UA是一种不依赖于平台且具有更高安全性和可靠性的标准。OPC UA为自动化生产系统提供了新的信息模型和抽象体系结构,构建了一个统一的对象模型,解决了平台依赖关系问题,添加了命名空间机制,并将复杂的数据类型嵌入服务器地址空间中,同时还能支持大量的通用服务。OPC UA技术使用面向服务的体系结构(service-oriented architecture,SOA )来实现数据交换,通过通信堆栈发送信息,支持用于通信的HTTP/UA TCP协议,只要端口允许,OPC UA就可以通过任何端口发送数据。地址空间是OPC UA的核心概念,组成地址空间的基本单位是节点,即实际设备在地址空间中的映射,地址空间为各类设备提供了统一的抽象模型,通过抽象模型实现了对节点的统一管理[7-9]。节点由属性与引用两部分构成,节点的结构和节点之间的关系如图1所示。
图1 地址空间的节点模型
Fig.1 Node model of address space
数据编码就是将包含其自身输入和输出参数的服务消息序列化为网络格式。目前,OPC UA规定了两种编码方法,即UA二进制编码和XML编码。在工业控制系统中,实时性能和生产线开销往往是人们关注的一个重要问题。随着设备整合的高速发展,数据传输量日益增加,因此,UA工作组为适应工业领域的环境定义了UA二进制代码。 UA的二进制编码只占用数据线上的较小体积并能实现高速数据编码和解码。
OPC UA映射到通信协议(例如TCP传输控制协议),能以不同形式的编码(例如,UA二进制格式或XML等)发送数据,并且可以标准化各种系统和设备接口,以便在所有网络中实现它们之间的无障碍通信。由于OPC UA基于TCP/IP协议,采用三次握手原则来建立通信,故确保了数据传输的可靠性。OPC UA通信模式如图2所示。
图2 OPC UA通信模式
Fig.2 OPC UA communication mode
将OPC UA技术运用于车间的实现方法是将OPC UA服务器嵌入各类底层设备之中,对各类底层设备所采集的数据通过服务器转换为支持 OPC UA 协议的数据。当车间制造执行层(manufaturing execution system,MES)从数据采集与监控(supervisory control and data acquisition,SCADA)系统获取数据或信息时[10],采用联合服务器和客户端的概念,OPC UA客户端和OPC UA服务器之间的通信使用请求/响应机制。当服务器调用服务时,客户端必须向服务器发送请求消息。处理完请求后,服务器将回复消息发送回客户端。在客户端和服务器之间发送的信息和数据必须首先通过相应的消息模式的格式检查,并由客户端或服务器通过适当的分析来获取所需的信息。基于OPC UA的信息交互网络框架如图3所示。
图3 基于OPC UA的信息交互网络架构
Fig.3 Information interaction network architecture
based on OPC UA
OPC UA信息交互网络架构分为以下3层:①底层。底层是由生产加工设备、生产辅助设备和传感器构成的设备层。在这一层,设备的基本数据和状态数据首先封装在OPC UA服务器中,然后通过OPC UA的订阅/发布或查询模式传输到高层的应用程序。②通信层。通信层连接底层设备和管理信息系统,连接企业外部的互联网和各种云应用,同时,通信层的设备控制网络和企业信息网络也向融合的方向发展。③信息管理层。该层的作用是根据车间业务流程的需要,通过OPC UA客户端收集设备层的数据,存储在企业本地数据库、云数据库或其他应用系统中,从而实现企业资源计划(enterprise resource planning,ERP)、MES的业务应用。从该数据采集框架中可以看出,OPC UA 不仅仅是工业领域通用的数据传输标准,而且,它还通过信息模型的封装实现了智能制造车间各层之间的数据语义统一,因此,OPC UA又被称为工业4.0的基础,对实现车间信息物理系统(cyber physical system ,CPS)具有重要的作用[11-14]。
在实际的车间生产过程中,使用的自动化设备不尽相同,所产生的数据类型也种类繁多,给车间的设备监控和信息化管理带来很大的障碍,为了将这些底层数据统一进行传输和管理,本文选用OPC UA技术来完成这一目标。但是对于中小企业,采用OPC UA技术进行数据交互通信往往需要购买专业化设备,并使用配套的通信模块,这对于中小企业来说成本较高,难以实施,故本文提出一种适合于中小企业的基于OPC UA技术的车间信息通信方案。对于底层设备,数据采集往往使用C/C++语言编程来实现,而对于上层的监控系统和Web应用,往往采用Java语言编程实现,为了方便结合这两种语言,本文采用Python语言来实现OPC UA编程。
基于OPC UA架构的车间数据通信的设计思想如下:将种类繁多的底层设备如机器人、传感器、PLC设备、数控机床、AGV等所采集到的数据全部采用OPC UA格式标准进行封装和传输,以此来统一管理底层设备信息,通过OPC UA统一架构存入数据库中,再由MES、ERP等上层应用系统来调用,完成对底层设备的监控和业务应用,也可以将这些信息存入云端,供今后进行大数据分析使用。基于OPC UA架构的车间数据采集系统如图4所示。
图4 基于OPC UA架构的智能制造车间数据采集框架
Fig.4 Data Acquisition Framework for Intelligent
Manufacturing Workshop Based on OPC UA Architecture
图4中,车间数据通信的具体流程如下:①对每个不同的底层设备所需要传递的信息分别建立信息模型结构,确定需要对外暴露的信息以及信息的层级结构;②根据所需要的底层设备信息在数据中心构建数据库;③使用Python语言,调用OPC UA API,针对不同的底层设备建立对应的OPC UA服务器;④将需要传输的底层设备数据根据信息模型装入OPC UA服务器的节点中,使用OPC UA通信协议将数据封装发出;⑤在上层信息管理系统中,使用Python语言构建OPC UA客户端,对底层传输来的信息进行解析,然后将其存入数据库;⑥上层应用系统从数据库中读取数据,完成设备监控和业务应用操作。数据通信流程如图5所示。
图5 基于OPC UA架构的数据通信流程
Fig.5 Data communication process based on
OPC UA architecture
在智能化工厂中,工业机器人的使用得到了广泛的普及,工业机器人操作系统一般使用ROS(robot operating system)。ROS系统是由斯坦福大学人工智能实验室开发的基于Linux系统的机器人软件控制平台,不同于传统的Linux操作系统,ROS属于二级操作系统,它提供了一个结构化的通信层。作为机器人操作平台,ROS通信主要有以下特点:①节点。节点是ROS执行各种功能的程序进程,进程以节点的形式运行。节点之间的通信是通过消息的发布和订阅来实现的;②消息。消息是节点间通信的内容。ROS支持多种消息类型,如pointcloud、map信息等[15]。③主题。主题是指特定消息的名称,用于描述消息的内容。节点可以发布某个主题的数据消息,或者订阅某个主题的数据。④服务。服务和主题之间的区别在于主题可以由多个节点订阅,但是服务在形式上是一对一的,即在节点之间建立服务之后,它的通信模式通常是一种请求模式和一种响应模式[16]。
ROS与许多编程语言兼容,如C /C++、Python、Java、LISP等。它还具有跨语言和跨平台的能力,大大提升了机器人开发的可移植性,使得机器人开发变得更加便捷。图6所示为ROS中话题和节点之间的关系。
图6 ROS话题和节点之间的关系图
Fig.6 Relationship graph between ROS topics and nodes
鉴于ROS的上述特点,尤其是跨平台性以及节点通信和消息发布订阅模式,非常适合与OPC UA架构相结合。ROS系统与OPC UA结合通信思路如下:在ROS系统中将需要传输的数据作为话题发布,再对这些话题进行订阅,将订阅得到的话题中的数据进行封装,放到OPC UA服务器的节点中,再根据建立的信息模型对这些节点进行封装,利用OPC UA通信协议传输到上层,由上层的OPC UA客户端对信息进行解析后存入数据库。
在智能制造车间中,还存在着大量的传感器,这些传感器所采集到的设备数据往往存在于嵌入式系统中,如树莓派、ARM等,也很有必要被统一化管理。OPC UA与传感器结合进行数据通信的思路如下:将传感器连接树莓派等硬件系统,并在树莓派系统中集成OPC UA服务器,对传感器所采集的数据进行建模,并将这些数据封装到OPC UA服务器节点中,与上层OPC UA客户端通过OPC UA协议通信,这样便实现了传感器数据的统一通信管理。以转速传感器为例,可以将该传感器与树莓派硬件开发板相连接,使用C语言编程实现数据采集,然后将该C语言代码作为Python的API库进行加载,在Python代码中根据实际需求建立OPC UA客户端,将采集到的数据进行封装,然后使用OPC UA协议进行通信。
不论工业机器人ROS系统,还是底层传感器嵌入式设备,或者数控机床、PLC、AGV等,都可以使用OPC UA进行通信。使用OPC UA可以很好地兼容各类底层设备及其操作系统,对这些设备的数据进行整合,真正实现只用一种通信方式就能够统一智能工厂多设备多类型的数据采集和通信,为智能工厂的信息化管理提供了很大便利。基于OPC UA架构的智能工厂通信架构图见图7。图7中,该工厂底层设备由AGV小车、数控机床、机器人、PLC设备和传感器构成,这些底层设备全都集成了OPC UA服务器。将设备所采集到的信息封装入OPC UA服务器中,使用OPC UA通信协议通过WiFi与OPC UA客户端进行通信,实现了多种数据类型的通信统一,OPC UA客户端得到底层数据后,将数据存放在云端数据中心,供管理信息系统(如MES、ERP)使用。
某智能制造车间在实施制造执行系统时需要对车间内的数台六轴工业机器人和PLC控制设备的运行状态进行实时监控,但对于这些不同厂商生产的工业机器人,其控制系统和数据传输方式各不相同,若采用传统的数据采集和通信方式实现统一的集成化管理比较困难。通过实际调查发现,这些不同厂家的工业机器人都是通过ROS系统来实现开发和控制的,机器人运行的各项参数(如关节电机的转速、机械手臂的位置等信息)在ROS系统中都可以查询到,因此可以采用OPC UA通信技术和ROS系统结合实现该车间所有工业机器人的监控。同理,PLC、传感器等嵌入式控制设备也可以采用OPC UA架构来实现数据采集和通信。
图7 基于OPC UA的智能工厂数据通信架构
Fig.7 Data communication architecture of smart factory based on OPC UA
基于OPC UA架构的车间数据采集和通信方案如图8所示。该框架分为三层,即硬件系统层、服务器层和管理系统层。硬件系统层包括传感器、PLC、机器人、C语言数据采集程序、Python获取数据程序、ROS系统和OPC UA服务器,服务器层包括OPC UA客户端和MySQL数据库,管理系统层包括客户端PC和MES系统,硬件系统层和服务器层之间通过OPC UA协议进行通信。
图8 基于OPC UA架构的车间数据采集和通信方案
Fig.8 Workshop Data Acquisition and Communication Scheme Based on OPC UA Architecture
数据在各层间的传递过程如下:首先在硬件系统层中,对于传感器和PLC,将C语言数据采集程序作为库文件加载到Python程序中,然后使用Python来调用该程序获取传感器数据,再将采集到的数据封装入OPC UA服务器中。对于ROS机器人,使用ROS系统发布机器人信息话题,再使用Python程序订阅该话题,并将数据封装入OPC UA服务器中。在服务器层中,OPC UA客户端通过OPC UA协议与硬件系统层的OPC UA服务器进行通信,将得到的数据存入MySQL数据库中,供管理系统层的MES使用。
基于OPC UA架构的ROS系统工业机器人通信流程如图9所示。首先构建机器人信息模型,再根据所建立的模型使用Python语言代码构建OPC UA服务器,使OPC UA服务节点与机器人信息模型一一对应。同时在机器人ROS系统中将机器人的关节电机转速等信息作为话题进行发布,然后在Python代码中对机器人关节话题进行订阅,并将订阅得到的信息存入OPC UA服务器的对应节点中,OPC UA服务器与客户端通过OPC UA协议进行通信,OPC UA客户端获取数据后将数据存放到数据库中,再由ERP、MES等软件来使用这些数据。
图9 基于OPC UA架构的工业机器人ROS
系统通信流程
Fig.9 Communication Flow of ROS for Industrial
Robot Based on OPC UA Architecture
编程时,OPC UA服务器先暴露其IP地址和端口号,然后与OPC UA客户端进行连接,连接成功后使用OPC UA协议格式通信。OPC UA客户端接收数据时,可以直接从OPC UA服务器定义的信息模型中取出对应的节点数据,这些数据对客户端而言是语义已知的,故可以直接存入数据库所建表的对应字段中。MES等上层应用系统只需从数据库中读取数据即可。OPC UA服务器的部分关键Python代码如下:
server=Server()#新建OPC UA服务器;
url=“opc.tcp:∥192.168.18.134:4841”server.set_endpoint(url)#定义服务器的地址和端口号;
name=“OPC UA_SIMULATION_SERVER”
addspace=server.register_namespace(name)#定义地址空间;
node= server.get_objects_node()
Param= node.add_object(addspace,“Parameters”)#定义节点;
Moto1= Param.add_variable(addspace,“MOTO1”,0)#数据封装入节点;
OPC UA客户端的部分关键代码如下:
conn=cx_Oracle.connect(‘cjpt/123456@localhost/MES’)#指定所需连接的数据库;
url=“opc.tcp:∥192.168.18.134:4841”
client= Client(url)#指定OPC UA服务器的地址和端口号;
client.connect()#请求连接;
#获取节点中的数据;
whileTrue:
Mos1=client.get_node(“ns=2;i=2”)
Motorspeed1=Mos1.get_value()
print(Motorspeed1)
上述代码运行后,先在设备端建立OPC UA服务器,并订阅ROS系统发布的机器人驱动电机状态话题。然后,建立OPC UA客户端,采用循环请求的方式获取服务器中的数据。服务器与客户端之间采用OPC UA协议进行数据通信,确保数据传输的可靠性。图10所示为采用OPC UA通信方案实现的该车间工业机器人监控界面。
图10 基于OPC UA架构的MES机器人监控界面
Fig.10 MES Robot Monitoring Interface Based on OPC UA Architecture
本文从实际需求出发,创造性地将OPC UA通信架构与工业机器人ROS系统、传感器嵌入式系统以及PLC控制系统等进行整合,实现了车间内不同厂家的工业机器人、PLC设备、各种嵌入式设备之间的数据通信的统一操作,使得车间数据采集和信息传输更加简便可靠。基于OPC UA的技术特性,该架构能很好地支持各种自动控制设备的通信,具有很高的通用性和兼容性,实现了智能车间设备信息的集成管理,在保证拥有良好性能的同时又兼顾了可扩展性。与市面上各大公司推出的OPC UA专用通信模块相比,该架构具有良好的二次开发能力,可以对特定工厂环境进行高度定制开发,并且实施方法简便,成本低廉。本文研究结果为工业4.0时代车间信息的采集、传输和存储提供了统一的信息传输架构,为实现数据驱动的智能制造服务打下了良好基础。
[1] 卢志远,马鹏飞,肖江林,等.基于机床信息的加工过程刀具磨损状态在线监测[J].中国机械工程,2019,30(2):220-225.
LU Zhiyuan, MA Pengfei, XIAO Jianglin,et al.Online Monitoring of Tool Wear Status Based on Machine Tool Information[J].China Mechanical Engineering, 2019, 30(2):220-225.
[2] 刘洋,刘明哲,徐皑冬, 等.基于消息代理的OPC UA发布/订阅模式研究与实现[J].高技术通讯,2018,28(6):553-559.
LIU Yang, LIU Mingzhe, XU Weidong, et al. Research and Implementation of OPC UA Publish/Subscribe Mode Based on Message Broker[J].High-tech Communication, 2018,28(6):553-559.
[3] 王民,曹鹏军,宋铠钰, 等.基于OPC UA的数控机床制造数字化车间信息交互模型[J].北京工业大学学报,2018,44(7):1040-1046.
WANG Min,CAO Pengjun,SONG Kaiyu,et al.The Digital Workshop Information Interaction Model of CNC Machine Tool Manufacturing Based on OPC UA[J].Journal of Beijing Polytechnic University,2018,44(7):1040-1046.
[4] 顾岩,程奂翀,王震, 等.基于OPC UA的3D实时监控系统设计与实现[J].系统仿真学报,2017,29(11):2767-2773.
GU Yan,CHENG Huanchong,WANG Zhen,et al. Design and Implementation of 3D Real-time Monitoring System Based on OPC UA[J].Journal of System Simulation,2017,29(11):2767-2773.
[5] 李金亮. OPC UA客户端访问与测试功能研究及开发[D]. 北京:华北电力大学,2011.
LI Jinliang. Research and Development of OPC UA Client Access and Test Function[D]. Beijing :North China Electric Power University, 2011.
[6] JO G, JANG S H, JEONG J. Design and Implementation of CPPS and Edge Computing Architecture Based on OPC UA Server[J]. Procedia Computer Science,2019,155:97-104.
[7] LIU Wei,ZU Yunxiao,LI Weihai. Streaming Information Transmission Based on OPC UA[J]. Journal of Physics: Conference Series, 2019,1187(4): 042091.
[8] KRETSCHMER F, von ARNIM C, LECHLER A,et al. Persistent Data Backend for OPC UA Namespaces in IT Infrastructures[J]. Procedia CIRP,2018,72:174-178.
[9] 秦硕硕. 支持EDDL技术的OPU UA服务器地址空间及设备集成模型的研究及开发[D]. 北京:华北电力大学,2012.
QIN Shuoshuo. Research and Development of OPU UA Server Address Space and Device Integration Model Supporting EDDL Technology[D].Beijing:North China Electric Power University, 2012.
[10] SCHLEIPEN M, GILANI S S, BISCHOFF T,et al. OPC UA & Industrie 4.0—Enabling Technology with High Diversity and Variability[J].Procedia CIRP,2016,57:315-320.
[11] 刘丹,赵艳领,谢素芬.基于OPC UA的数字化车间互联网络架构及OPC UA开发实现[J].中国仪器仪表,2017(10):39-44.
LIU Dan,ZHAO Yanling,XIE Sufen.Digital Workshop Interconnection Network Architecture Based on OPC UA and Development of OPC UA[J].China Instrumentation,2017(10):39-44.
[12] 姜泽苗,孔庆奎,范瑜.OPC UA技术在冶金设备监测系统中的应用[J].自动化仪表,2014,35(10):56-58.
JIANG Zemiao, KONG Qingkui, FAN Yu.Application of OPC UA Technology in Metallurgical Equipment Monitoring System[J].Automation Instrumentation, 2014, 35 (10): 56-58.
[13] SCHFER F, BAKAKEU J, KLEINERT B,et al. Designing an OPC UA Based Ecosystem for Smarter Homes[J].Advanced Engineering Forum,2016,4420(19):83-91.
[14] JIANG Zemiao, FAN Yu, ZHANG Chunting,et al. Realization of Public Building Energy Efficiency Monitoring Simulation System Based on OPC UA[J]. Advanced Materials Research,2014,926/930:615-618.
[15] 陈盛龙,平雪良,曹正万,等.基于ROS串联机器人虚拟运动控制及仿真研究[J].组合机床与自动化加工技术,2015(10):108-111.
CHEN Shenglong, PING Xueliang, CAO Zhengwan,et al.Research on virtual Motion Control and Simulation of ROS Series Robot Based on ROS[J].Modular Machine Tool & Automatic Processing Technology, 2015(10):108-111.
[16] 高民东,张雅妮,朱凌云.基于ROS的机器人室内巡检技术仿真[J].重庆理工大学学报(自然科学),2018,32(7):195-201.
GAO Mindong,ZHANG Yani,ZHU Lingyun.Simulation of Indoor Inspection Technology for Robot Based on ROS[J].Journal of Chongqing University of Technology(Natural Science),2018,32(7):195-201.