基于阿里云的裁断机监控系统设计
2021-06-02
(浙江工业大学 信息工程学院,杭州 310023)
0 引言
随着智能制造时代的来临,在工业生产领域提出了工业物联网[1]的概念,其目的是通过工业资源的网络互联、数据互通和系统相互操作,实现制造过程的合理优化和制造环境的快速适应,以达到资源的高效利用。同时,云平台技术的提出使得互联网真正进入了云计算时代,依托云平台将本地软、硬件资源虚拟化,可以改变工业生产的模式并提升效率。
皮革加工行业中,裁断机作为一种被广泛使用的传统手工设备,加工企业主要依靠人工方式进行裁断作业,该方式不仅需要大量劳动力,且对于冲裁料的利用率低下,难以达到理想的效果。为了在一个有限的冲裁区间内实现对冲裁样片的充分排列,提高冲裁料的利用率,许继影[2]等人提出基于两阶段排放算法的矩形排样优化方法、Satoshi Fujita[3]等人研究了可旋转物品在二维装箱问题中的解。如今对于裁断机等传统工业设备的联网研究多数只是对其运行数据进行监测[4],如孙恺廷[5]等人设计的工业机器人三维虚拟监控系统、胡晓轩[6]等人面向船舶制造车间的数据采集与监控系统,这些研究往往是依靠各种传感器设备将设备运行数据进行采集,之后通过对采集的数据做进一步分析,得出设备是否运行正常等结论,但并未改变设备的控制模式。目前,裁断机的控制系统大多采用客户端/服务端模式搭建,并嵌入了排样算法实现裁床对冲裁料的自动加工。该模式下,对于每个机床终端在本地均需要为其配备一套相关设备[7],并安装客户端软件,当终端数量增加时,其配套设备的成本会十分巨大。
针对上述问题,本文在裁断机原有的客户端/服务端控制模式基础上,结合云技术和WEB技术设计了一款基于阿里云的裁断机监控系统,依靠云平台减少了系统对本地硬件资源的需求。系统主要分为本地运动控制端和阿里云WEB监控端。其中,WEB监控端采用前后端分离的方式搭建,前端用户操作界面基于VUE框架编写,后端基于Django框架编写。本地运动控制端的工作主要是在本地服务器搭建了上位机系统,采用OPC UA协议实现了与裁断机设备控制器的信息交互,采用MQTT协议完成了与云端的信息交互。最终使得用户可以通过访问部署在阿里云的操作界面完成对本地裁断机设备的监控。
1 裁断机监控系统设计方案
1.1 系统硬件结构框架
系统硬件结构如图1所示。本地运动控制端由服务器、控制器和裁断机设备组成。服务器搭建有上位机系统,该上位机系统通过OPC UA协议[8]实现一台服务器与多个控制器间的数据交互,控制器采用AM335X芯片并搭建CodeSys系统,通过EtherCAT总线实现对裁断机设备的控制。WEB监控端则部署在阿里云服务器上,实现用户能够通过访问相关的网站地址,对本地的设备完成监控。
图1 系统硬件结构图
1.2 系统软件结构框架
整个监控系统以基于CoDeSys[9]开发的裁断机控制系统为研究对象进行搭建,主要完成阿里云WEB监控端和本地上位机系统的开发,实现对裁断机的监控,整体软件设计框图如图2所示。
图2 系统软件结构图
通过在本地服务器搭建上位机系统,实现云端与本地控制器的数据交互。上位机主要采用Winfom框架开发,通过嵌入MQTT客户端[10]和MySQL客户端[11]实现与云端的数据通讯;通过嵌入OPC UA客户端实现与控制器的数据通讯。其中MQTT主要完成一些实时控制命令的下发;MySQL用于存储设备的运行数据;OPC UA实现将裁断机运行数据下发至设备控制器以及回传设备当前的运行状态信息。
阿里云WEB监控端分为前后端两部分,前端采用VUE框架开发,用户可以操作前端页面生成相关控制命令并依靠嵌入的MQTT客户端完成命令的下发;后端采用Django框架[12]搭建,编写了排样算法负责生成裁断机设备的运行数据,并保存至数据库。
系统整体的监控流程如下:用户使用平板电脑等移动终端访问部署在云服务器的WEB界面,生成合适的刀模排样结果[13-14]并下发控制命令至本地服务器,本地服务器中的上位机监听到云端的控制命令后,会去数据库中读取对应的冲裁数据并下发至目标裁断机的控制器,控制器根据这些数据控制裁断机完成对冲裁料的加工。在冲裁的过程中,本地服务器会实时返回冲裁过程中裁断机的运行状态,如当前正在冲裁的样片序号、本次对冲裁料的加工是否完成等。
2 本地上位机系统
本地对于裁断机设备的控制系统主要采用C/S(客户端/服务器端)模式进行搭建,主要由服务器与设备控制器组成。在服务器搭建有上位机系统并嵌入了OPC UA、MQTT以及MySQL客户端。其中,OPC UA客户端用于和裁断机控制器实现信息的交互;MQTT客户端模块实现与云端实时数据的传输;MySQL客户端模块实现对云端MySQL数据库的存取操作。
2.1 基于OPC UA Client的数据交互模块
传统的工业自动化解决方案由于在设备间的通信上采用不兼容和不可互操作的差别化标准,因而存在数据交互的困难。OPC UA协议采用客户端/服务器模式和发布者/订阅者模式为不同设备间实现信息的交互提供了方法。通过在地址空间定义节点类并实例化,采用层次结构进行访问简化了客户端的访问。C#语言可以实现OPC UA的自动化接口,开放给用户一些方便的接口,支持自动配置、过程控制和数据存取功能的开发。通过在窗口界面中搭建用户输入和响应事件模块,实现了浏览OPC UA服务器、修改数据以及订阅数据等功能,其流程图如3所示,具体实现方式如下:
图3 OPC UA协议数据交互流程图
(1)访问OPC UA服务器节点:在主程序中引用“OpcUaHelper.Forms”库,使用库中的FormBrowseServer()函数实例化一个MyForm对象,该对象能够以结构层次的方式对OPC UA服务器中的节点进行访问。在访问过程中,能够游览服务器所开放的相关节点信息。
(2)订阅节点数据:使用“OpcUaHelper.Forms”库中的OpcUaClient()函数实例化一个OPC UA客户端对象,该对象内部包含了一系列对于服务器节点信息操作的方法。本系统采用其中的ConnectServer()方法实现对OPC UA服务器的连接,采用ReadNode()方法实现对OPC UA服务器的设备运行数据的采集,将所采集的数据转成字符串形式并用C#语言中的String变量进行保存,用于后续与云端MQTT服务器进行数据交互。
(3)修改节点数据:采用“OpcUaHelper.Forms”库中的WriteNode()方法实现对OPC UA服务器相关数据的修改,该函数均是通过访问OPC UA服务器中节点的各个层次结构,在TCP/IP通讯协议的基础上完成对裁断机设备运行参数的修改。
2.2 基于云平台的数据交互模块
为了实现本地与云端的数据交互,在上位机中嵌入了MQTT客户端模块和MySQL客户端模块。其中,MQTT主要用于和云端的实时数据交互,比如接收下发的运行设备编号和回传设备运行状态信息等,MySQL主要存放生成的排样方案所对应的裁断机运行数据。
(1)MySQL客户端模块:MySQL是一个关系型数据库管理系统,关系型数据库会将数据保存在不同的表中以增加存取速度并提高灵活性。如今,MySQL已经为各种编程语言提供了API接口,同时能够作为一个库嵌入其他的软件中,使嵌入客户端的方式实现数据的存储得以实现,不仅提高了数据交互的实时性,也降低了本地客户端的内存空间消耗。本系统的数据读取模块采用C#语言进行搭建并嵌入到本地上位机系统,在功能上实现对设备运行数据的读取和解析。
(2)MQTT客户端模块:目前基于HTTP协议的物联网系统开发的方式被频繁采用,但在一些嵌入式系统或网络带宽昂贵的开发情况下,HTTP协议并不适用。MQTT作为一种低开销、低带宽占用的即时通讯协议,在工业物联网、小型设备等方面有广泛的应用。因此本客户端选择采用MQTT协议搭建数据交互模块,实现对设备冲裁指令的下发和冲裁状态信息的回传。
3 阿里云WEB监控端
阿里云WEB监控端基于B/S(浏览器/服务器)架构进行搭建,采用前后端分离的方式开发并部署至阿里云服务器。其中,前端WEB操作界面基于VUE框架编辑,开发了用户操作界面和排样结果可视化区域。后端采用Django框架搭建,主要编写了刀模样片排样算法,可以根据刀模图形的DXF文件信息[15]生成裁断机设备的控制参数。在此基础上,通过嵌入MQTT客户端模块实现和本地服务器的信息交互,监控端功能框图如图4所示。
图4 WEB监控端功能框图
3.1 刀模排样算法
为了实现对冲裁料的充分利用,需要对刀模样片进行排样。排样的目标是在特定区域的矩形冲裁料内放置尽可能多的样片,且样片之间不能互相重合。本文根据实际冲裁情况设计了针对单一刀模样片的排样算法,算法将冲裁方案主要分为水平垂直正排、水平对头单排垂直正排、水平正排垂直对头单排3种。
如图5所示,将图中冲裁料坐标系记为{B},冲裁料第i行、j列刀模样片的坐标系记为{Bij},{Bij}的原点相对于坐标系{B}的坐标值为xij、yij,其旋转角度为θij。令dij(θij,θj(j+1))为冲裁料上排列的第i行、j列样片与第i行、j+1列样片的水平步距,d01为{B11}坐标原点到冲裁料Y轴的水平距离,dN(N+1)为第1行、N列样片坐标系{B1N}的坐标原点到该样片右侧边缘切线的水平距离。hij(θij,θ(i+1)j)为在冲裁料排列的第i行、j列样片与第i+1行、j列样片的垂直步距,h01为{B11}坐标原点到冲裁料X轴边界的水平步距,h34为第3行、1列样片坐标系{B31}坐标原点到该样片上方边缘切线的垂直距离。
水平垂直正排方案的排列情况如图5所示,在该方案下,冲裁料上排列的样片旋转角度均一致。
图5 水平垂直正排示意图
水平对头单排垂直正排方案的排列情况如图6所示,在该方案下,冲裁料上排列的样片奇数列和偶数列的旋转角度差180°。
图6 水平对头单排垂直正排示意图
水平正排垂直对头单排方案的排列情况如图7所示,在该方案下,冲裁料上排列的样片奇数行和偶数行的旋转角度差180°。
图7 水平正排垂直对头单排示意图
记冲裁料一行能够排列的样片个数为N,m为一行样片的总宽度,M为冲裁料的宽度,有m=d01+…+d(N-1)N,m 图8 排样方案生成流程图 为了能够实现云端对本地设备进行实时的数据交互,本系统依靠MQTT协议在阿里云服务器搭建了实时监控平台,实现了与MQTT服务器的数据交互、裁断机冲裁命令的下发以及冲裁过程状态信息回传等功能,具体实现方式如下: (1)与MQTT服务器交互:在前端VUE项目中引入Paho功能包,实现MQTT客户端功能,生成MQTT客户端前先编辑用于连接MQTT服务器的参数列表,如服务器IP地址、端口号等,具体如下ServerUri=′mq.tongxinmao.com′ServerPort=18832;TimeOut=5;KeepAlive=100;CleanSession=false;SSL=false;在此基础上调用new Paho.MQTT.Client函数,创建MQTT Client实例,编写onConnect()函数和onConnectionLost()函数用于登录和断开MQTT服务器;编写WriteToStatus()函数,用于描述MQTT状态;编写onMessageArrived()函数,用于接收MQTT服务器的消息,实现与MQTT服务器数据交互功能。 (2)冲裁命令的下发:在前端VUE项目中编写MQTT客户端函数,当用户点击发送按钮时,将待运行的裁断机编号传至MQTT服务器中特定的主题文件,本地服务器监听到该主题有数据会将主题中的数据读至本地并去云端数据库中取得运行数据,完成下发。 (3)冲裁过程状态信息实时回传:当裁断机设备在运行时,搭建在本地服务器会通过MQTT协议以一定的时间间隔将运行数据上传至云端,该数据会被搭建在前端界面的MQTT客户端订阅并在可视化区域进行标记,实现了冲裁过程中对裁断机运行状态的实时监控。 对于本文设计的控制系统,通过实验验证其可行性。在WEB游览器中输入云端IP地址访问操作界面,在界面中选用具有明显大小头的且形状不规则1号刀模,点击3种排样方式最优解按钮,在可视化区域可观察到1号刀模样片在一张宽为1 400 mm冲裁料上的排样结果,如图9所示。 图9 排样结果显示 当确定最优排样方案后,选择待运行的裁断机编号并点击下发裁断任务按钮,系统会将排样区域中第i行、j列样片旋转中心相对冲裁料原点的二维坐标值xij、yij以及自身旋转角θij存入后端数据库中,并发送裁断机编号至本地服务器,数据库中第一行冲裁样片的排样数据如表1所示。 表1 第一行冲裁样片的排样数据 本地服务器收到裁断命令后,会读取云端数据库中的运行数据,并下发至裁断机控制器,控制器界面显示了裁断机的运行状态,并支持用户对裁断机做一些简单的手动操作,控制器界面如图10所示。 图10 裁断机控制器界面 综上,测试结果表明本文所设计的系统能够很好的对裁断机进行监控。由表1可知,系统所设计的排样算法能够生成裁断机所需的运行数据,并且依靠相应的传输协议可以将数据发送至设备控制器,实现对冲裁料的加工。 本文设计了一种基于云平台的裁断机监控系统,在本地服务器基于Winform框架搭建了上位机系统,通过OPC UA协议实现了与裁断机控制器的数据交互。在阿里云服务器基于VUE框架设计了前端用户操作界面,并通过Canvas标签搭建了排样结果可视化区域。基于Django框架设计了后端,主要编写了刀模排样算法用于生成单一刀模样片在从材料上的排样方案。同时,通过搭建MQTT数据交互模块实现了裁断机控制命令的下发和运行数据的回传。通过该系统,用户可以完成对裁断机设备的监控。本文下一步研究工作的重点是将裁断机设备的运行数据进行采集并根据数据对设备进行故障分析。3.2 数据实时监控
4 实验结果与分析
5 结束语