APP下载

手机组装数字化车间设计与实现

2022-02-25张小文李吉平

软件导刊 2022年1期
关键词:产线视图车间

张小文,李吉平

(1.华南农业大学数学与信息学院,广东 广州 510642;2.佛山智能装备技术研究院,广东 佛山 528234)

0 引言

制造业是国家的重要支柱产业,是核心实力的重要体现。近年来,智能制造成为各国在制造业的主流发展方向,如我国提出《中国制造2025》,以智能制造为主攻方向,建设世界制造强国;德国提出“工业4.0”战略,旨在打造以智能制造为核心的智能工厂;《美国先进制造领先战略》指出要发展智能制造技术、人工智能增材制造等15 个重点领域[1-2]。

数字化车间能有效提高生产效率,是智能制造的重要体现。近年来,随着数字孪生车间概念的提出,数字化车间在智能制造中受到越来越多关注。为提高手机组装车间的智能化程度,本文基于自研仿真软件框架进行二次开发,实现手机组装车间的数字化,通过数字化车间建模、数据采集、视图优化等方面描述数字化车间构造的全过程,最后对构造的数字化车间进行演示。仿真结果显示,通过数字化车间能实时了解车间运行状况,回溯车间历史运行状况,提高了生产智能化水平。

1 相关研究

通过物联网技术采集连接信息、过程信息,可使物与物、物与人之间建立联系,从而实现对制造过程的感知,为决策和预警提供支持。例如,陈伟兴等[3]基于数据驱动的制造过程事件感知模型,提出了基于制造物联的生产过程关键事件主动感知技术架构;Dai 等[4]提出一种知识驱动的自主服务管理,为自管理和自适应工业信息物理系统提供了设备级智能控制;Tao 等[5]提出一种基于信息与物理融合的数字孪生产品设计、制造和服务方法;陶飞等[6]提出数字孪生车间的概念,阐述了数字孪生车间的系统组成、运行机制、特点、关键技术等;Zhuang 等[7]提出一种基于数字孪生的复杂产品装配过程的智能生产管理和控制框架,阐述了装配车间数字孪生模型的构建方法,并结合数字孪生和大数据提出一种预测机制,实现了对装配车间的管理和控制;胡祥涛等[8]设计了基于Unity3D 的虚拟车间三维监控系统。

不同于常见的直接利用Unity3D 实现数字车间,本研究基于仿真软件,结合数字孪生研究成果与Unity3D 实现了三维数字车间,为基于OSG 视图的仿真软件实现具有数据驱动和视图优化的三维车间提供了参考,这也是本文的创新点所在。

2 产线仿真软件介绍

该产线仿真软件为企业自主研发,其通过导入模型,根据相对位置进行模型布局,设置模型动作,并由信号量控制动作的先后逻辑以实现车间仿真。该软件暂时只能导入常见的STL 格式模型,不能设置模型材质贴图。软件界面基于C#语言的Winform 开发,视图显示基于开源三维引擎OpenSceneGraph。该软件可通过组件式方法快速构建虚拟车间,其优点为快速导入模型并构建虚拟车间,具备完善的交互功能;缺点为导入模型格式单一,无法对模型进行优化,显示效果不佳。图1 为该软件界面。

Fig.1 Production line simulation software interface图1 产线仿真软件界面

3 手机组装数字车间系统

手机组装数字车间系统能够实现数字车间实时数据驱动与车间历史状况回溯功能,总体设计框架如图2 所示。首先在物理车间观察车间运行细节,对车间场景与设备进行取景,根据车间布局确定设备相对位置。从厂家直接获取车间设备的三维模型,利用Solidwork 构建车间场景模型(厂房墙壁、窗户、地板等)。将STL 格式的场景模型、设备模型和产品模型导入产线仿真软件中,通过产线仿真软件搭建虚拟产线与车间场景布局,然后将虚拟车间项目导出。采用3D MAX 软件对机器人、手机壳、手机电池模型进行贴图,导出为fbx 格式。在Unity3D 中导入厂房墙壁、窗户、地板等模型,构建车间厂房并嵌入贴图后的机器人和产品模型到该项目中,发布为可执行程序。开发采集器程序,获取实际产线数据,进行数字车间驱动。现有仿真软件视图效果较差,嵌入之前发布的Unity3D 可执行程序至产线仿真软件Winform中,将OSG 图元信息发送到Unity3D 可执行程序中,利用嵌入的Unity3D 实现视图显示,可达到良好的视图效果。

手机组装数字车间系统的构建共有6 个阶段:①建立模型阶段;②产线仿真软件中虚拟产线搭建与车间场景布局阶段;③Unity3D 车间厂房构建阶段;④视图优化阶段;⑤数据驱动阶段;⑥测试验证阶段。图3 为手机组装数字车间系统开发流程。

Fig.2 Overall design of the mobile phone assembly digital workshop system图2 手机组装数字车间系统整体设计

Fig.3 System development flow图3 系统开发流程

4 模型建立

车间产线设备模型、手机壳以及手机电池模型均为生产厂家直接提供的STL 格式的三维模型,厂房、窗户、地板等车间场景模型通过Solidwork 建模软件制作。机器人、手机电池、手机壳等模型需要在3D Max 中进行贴图,图片为各自照片。模型贴图后导出为fbx 格式留作后续嵌入Unity3D 车间场景项目中[9]。在3D Max 中对厂房、窗户、灯等用于在Unity3D 中构建车间场景的模型进行格式转换,导出为fbx 格式,之后导入Unity3D 构建车间场景。在Unity3D 中构建车间场景的厂房与宏观环境,厂房内的电脑、产线围栏、桌椅等可以直接由产线仿真软件导入。

车间模型主要分为3 个部分,分别为车间宏观场景、主机设备和工件。车间宏观场景主要包括地板、窗户、墙壁等,主机设备主要包括机器人、传送带、加工设备、生产装置等,工件为待组装的手机壳等产品。为达到较为真实的仿真效果,还需要对模型贴图。贴图通常选用拍摄的实物照片,在3Dmax 中将照片贴到对应的三维模型上,再导出模型及其贴图后图像,将其打包嵌入到Unity3D 中,用于后期视图显示[10]。图4 为模型分类图。

Fig.4 Model classification图4 模型分类

5 产线搭建与车间配套环境布置

在产线仿真软件中导入模型,并搭建好产线,设置好各个机器人与传动带的具体运动轨迹,以及各个运动之间的先后逻辑。搭建好产线后,导入电脑、桌椅、围栏等模型,构建车间内部环境。在产线仿真软件中搭建的产线与车间内部环境分别如图5 所示。将搭建好的车间项目导出,用于后续导入二次开发后的产线仿真软件中进行显示。

6 Unity3D 车间场景构建与模型嵌入

在Unity3D 中导入厂房、窗户、地面模型,并设置模型材质。根据实际车间搭建数字车间场景,并设置光照情况[11-12]。图6 为Unity3D 中构建的车间厂房远视图。在Unity3D 中构建好车间宏观场景后,需要将贴图后的3 种机器人模型、手机壳、手机电池模型嵌入该项目中,并将其发布为可执行程序[13]。

Fig.5 Workshop built by production line simulation software图5 产线仿真软件构建的车间

Fig.6 Workshop building constructed in Unity3D图6 Unity3D 中构建的车间厂房

7 视图优化

将前述Unity3D 的可执行程序嵌入产线仿真软件的界面控件中,并调整嵌入后的窗口大小至合适状态。以下为Unity3D 可执行程序嵌入控件的部分代码:

privatevoidEmbedProcess(Processapp,Controlcontrol)

{//Get the main handle

if(app == null || app.MainWindowHandle ==IntPtr.Zero||control== null)return;

try

//Put it into this form

SetParen(tapp.MainWindowHandle,control.Handle);

catch(Exception)

{}

try

//Remove border and whatnot

SetWindowLong(newHandleRef(this,app.MainWindowHandle),GWL_STYLE,WS_VISIBLE);

SendMessage(app.MainWindowHandle,WM_SETTEXT,IntPtr.Zero,strGUID);

catch(Exception)

{}

try

{//Move the window to overlay it on this window

MoveWindow(app.MainWindowHandle,0,0,control.Width,control.Height,true);

catch(Exception)

{}

Unity3D 嵌入后,每次启动可执行程序前都需要检查OSG 至Unity 的TCP 连接是否成功,若成功,则开始由OSG端发送模型信息至Unity3D 可执行程序端,并启动可执行程序。

OSG 端主要发送两类信息,一类是模型的变换矩阵、位置坐标和姿态矩阵,以及模型的颜色信息,另一类是模型三角片图元的顶点信息,这些数据可以通过调用OSG 的有关库函数直接获取。视图界面的模型显示主要有3 种情况:①添加新模型;②已有模型进行运动等导致姿态与位置变化;③删除已有模型[14-15]。每次添加新模型后,获得该模型的三角片顶点、坐标位置、姿态、颜色等信息,将该模型信息打包后以socket 的方式发送至嵌入的Unity3D 端,用于显示新加入的模型。对于已有模型的位置、姿态变化,只需将变化后的位置与姿态信息打包后发送给Unity3D端。对于删除模型而言,只需将被删除模型对应的序列号发送给Unity3D 端,将该序号对应的模型删除即可[16]。

8 数据驱动实现

数据驱动是数字车间的重要组成部分,用于获取物理车间数据并对其进行解析,以实现数字车间模型驱动。数据驱动主要分为两个部分:①采集物理车间实时数据,实现数字车间的模型驱动,达到虚实映射的效果;②通过历史数据实现车间历史状态回溯。

物理车间的数据经设备传感器采集后统一放至可编程逻辑控制器(PLC),数据采集器通过TCP 通信将PLC 处存放的物理车间实时数据发送至Redis 和InfluxDB,经解析后保存。InfluxDB 为时间序列数据专门编写的自定义高性能数据存储,用于储存车间历史数据[17]。Redis 作为内存数据库,具有读写速度快的特点,用于储存实时数据[18]。根据Redis 发送的实时数据实现数字车间实时数据驱动,将InfluxDB 中存储的历史数据写至Redis,通过接收Redis发送的历史数据实现数字车间历史状态回溯。图7 为数据驱动实现流程。

Fig.7 Data-driven implementation process图7 数据驱动实现流程

导入前述构建的工程文件,产线仿真软件读取文件后在视图界面显示静态车间。若要进行实时仿真,需根据界面操作执行实时仿真的程序。首先从服务器端发送数据至Redis 和influxDB,解析配置文件,读取从Redis 发送的数据后更新内存,同时根据读取的数据变化调用相关视图函数以更新视图界面的显示。

Redis 作为缓存数据库,其数据以Key-Val 的形式存储,需通过其Key 值读取。用于实现模型驱动的有关变量需与Redis 中的Key 对应起来,方可将从Redis 接收的数据用于模型驱动。将Redis 中的数据与本地模型驱动程序中的相关变量对应起来则是通过编写和读取配置文件实现。

配置文件主体格式为数组嵌套,最外层数组定义了从Redis 进行TCP 连接的相关信息,包括发送实时数据的Redis 端的IP 地址和端口号,以及进行历史回溯时Redis 端的IP 地址和端口号。最外层数组嵌套了设备数组,设备数组嵌套了各个产线的运动模型数组,产线运动模型数组中为该模型相关属性名称与Redis 中Key 值构成的键值对,或属性名称与数据驱动程序中相关名称构成的键值对。

以下为配置文件中前屏机器人的相关配置信息:

“note”:“2 号工作站--前屏工作站”,

“name”:“CS6_DT6020S-5”,

“type”:“Robot”,

“isAngle”:1,

“axisKeys”:[“CY_d2_j_1”,“CY_d2_j_2”,“CY_d2_j_3”,“CY_d2_j_4”],

“workObject”:[

“modelName”:“M615_Q11”,

“grabOnKey”:“CY_d2_air==1&&CY_SHELF_MODEL==1”,

“grabOffKey”:“CY_d2_air==0”

},

“modelName”:“M645_Q11”,

“grabOnKey”:“CY_d2_air==1&&CY_SHELF_MODEL==2”,

“grabOffKey”:“CY_d2_air==0”

},

“modelName”:“BA520_Q11”,

“grabOnKey”:“CY_d2_air==1&&CY_SHELF_MODEL==3”,

“grabOffKey”:“CY_d2_air==0”

],

“AGV”:0,

“postionOffset”:{

“xKeyName”:“xPostion”,

“yKeyName”:“yPostion”,

“initX”:133.3,

“initY”:133.3

}}

由构建的数字车间可知,运动模型可分为3 类,分别为机器人模型、工艺设备模型和传送带模型,故模型驱动也分为上述3 类[19]。定义管理内存的数据库主要实现了获得模型树根节点、获得工具路径信息、获得模型信息(图元信息、变换矩阵等)、更新数据库的功能。定义数据节点,实现树状组织数据节点的基本操作接口,如获取和设置节点id 等。

机器人模型驱动主要分为两类:一类是非AGV(Automated Guide Vehide)机器人(前屏机器人、中壳机器人、拧钉机器人、后壳机器人、下料机器人)模型驱动,另一类是AGV 机器人模型驱动。机器人数据结构封装了机器人姿态设置和获取、机器人末端执行器设置和获取、指向机器人指针获取的函数。机器人节点继承于数据节点类,绑定了机器人数据结构,并定义了返回指向机器人指针的函数,可以实现由节点返回绑定模型的指针。工件数据结构定义了工件的模型信息、模型路径、模型名称、模型颜色、模型id 以及以上信息的获取和设置函数。工件节点绑定了节点数据结构,能够通过节点获取绑定的模型信息并对模型进行设置。

首先获得模型树根节点,遍历模型树,根据节点名称获得所有工件节点,再由工件节点获得内存中所有工件模型的信息,同法获得所有机器人模型的信息。然后逐次获得所有机器人模型的名称,当机器人模型名称与配置文件中机器人模型名称相同时,将配置文件中该机器人的相关属性值赋值给机器人驱动程序中的变量。例如前述前屏工作站中的"isAngle":1,"AGV":0,中的1 和0 分别赋值给机器人驱动程序中的nIsAngle 和nIsAGV。将axisKeys":["CY_d2_j_1","CY_d2_j_2","CY_d2_j_3","CY_d2_j_4"]中Redis 的Key 值赋值给机器人驱动程序中的角度数组。遍历获得的工件模型,并根据模型名称将工件模型和配置文件中该机器人下的工件模型配对,将“grabOnKey”“grabOffKey”赋值给模型驱动程序变量,其他变量的配对同理。通过上述方法实现配置文件中机器人及其关联工件与模型驱动程序之间的配对以及机器人的初始化。Redis 以TCP 的方式发送数据,首先获得机器人的轴关节数据,如果是AGV 机器人,还要获取机器人移动后的位置数据。利用指向OSG 视图接口的指针调用OSG 视图函数更新视图显示,然后更新工件模型的夹紧状态值(该部分实现了工件在夹具上夹紧状态的视图更新)[20]。根据获得的机器人轴数据判断机器人是否发生运动,若机器人轴数据有变化,则根据轴数据的变化更新机器人动作,使机器人做插值运动、更新工件位置等。该过程通过指向OSG 视图接口的指针调用视图更新函数,同时通过指向数据库接口的指针更新内存。通过以上方式实现机器人模型的数据驱动,工艺设备模型和传送带模型的数据驱动原理与上述方法类似。

若Redis 中的数据为从PLC 接收的物理车间实时数据,则实现实时数据驱动,此时数字车间的运行状况与物理车间同步。若Redis 接收的是从InfluxDB 发送的历史数据,则再现车间历史生产状况。

9 运行效果

基于仿真软件框架开发的手机组装数字车间运行效果良好,完成了预期目标,能够满足日常需要。图8 为数字车间运行状况。

Fig.8 Operation effect of digital workshop图8 数字车间运行效果

10 结语

本文基于产线仿真软件框架开发了手机组装数字车间,利用3D Max 和Unity3D 快速构建产线的优势,实现了数据驱动且优化了视图显示,可实时远程监控车间运行状况并对历史运行状况回溯,具有良好的使用体验,方便操作人员对车间进行管理,提高了生产效率。然而,该数字车间系统还存在以下需要改进之处:①可以开发VR 功能,增强交互的真实感;②可以开发设备信息描述模块,点击设备模型可显示设备属性和当下运行状态;③缺乏由数字车间到物理车间的驱动,可尝试从数字车间向物理车间发送指令,远程操控物理车间运行。后续可在本文研究结果的基础上从以上方面进行优化。

猜你喜欢

产线视图车间
昆玉棒材轧制产线提速增效工艺改进措施
梅钢1780产线高速钢轧辊使用维护
多品种小批量智能制造产线关键技术及应用探讨
宽厚板钢轧一体化智能制造示范产线推进实践
招工啦
“扶贫车间”拔穷根
视图
Y—20重型运输机多视图
SA2型76毫米车载高炮多视图
把农业搬进车间