堆垛机的数字孪生系统可视化模型搭建与实现
2022-05-12宫瑞哲吴睿婧
宫瑞哲,饶 丰,任 楠,吴睿婧,蔡 苗
(1.北京机械工业自动化研究所,北京 100120;2.北自所(北京)科技发展股份有限公司,北京 100120)
0 引言
1)数字孪生概念
上世纪七十年代,孪生体的概念第一次由美国国家航空航天局(NASA)提到。2003年,数字孪生(Digital Twin)由Grieves教授(美国密歇根大学)正式提出并对Digital Twin进行了定义[3~5]。数字孪生的目标是对物理模型实体构建具有实时同步、高保真度等特性的虚拟映射模型。数字孪生需要运用跨学科的知识和技术[8]并且通过采集物理实体的实时数据和分析历史运行数据来进行虚拟模型的构建。数字孪生实现了物理世界与信息世界的交互与融合[1]。
2)数字孪生国内外现状
数字孪生概念最早在国外得到成功应用。在美国,美国空军研究实验室(AFRL)、美国国家航空航天局[6]等研究中心将数字孪生应用至航空航天的发动机剩余使用寿命预测、故障预测与健康管理等方面;佐治亚理工学院(Georgia Tech)和宾夕法尼亚州立大学(PSU)等科研院校探索数字孪生在智慧工厂方面的应用。在欧洲,Olaf Sauer(弗劳恩霍夫研究院的工业4.0专家)指出数字孪生是德国工业4.0的主攻方向;亚琛工业大学(RWTH)等高校在数字孪生领域开展大量研究[7]。
近年来,国内的科研院所和高校对数字孪生展开了大量的研究。中国信息通信研究院(CAICT)和中国电子技术标准化研究院(CESI)等科研院所对数字孪生技术进行了大量标准化工作,为数字孪生在国内的发展奠定坚实基础[7];国内高校在数字孪生技术理论研究中也取得重要进展,如北航陶飞团队对数字孪生开展大量研究,提出数字孪生车间等概念,创办Digital Twin国际期刊,并在智能制造工厂开展数字孪生的实践[2]。
1 数字孪生在智能工厂中的应用
制造企业在传统生产模式下,各环节之间的信息交互通信不够及时、全面,对工厂生产过程的可视化程度低,工厂每天都产生大量的数据,但是这些数据利用程度很低。
目前,国内企业正在由传统生产模式向智能化数字化生产模式的转型过程中,数字孪生是企业通向数字化转型的重要桥梁。数字孪生技术的引入,实现设备监控,实时采集设备运行数据,设备运行状况以可视化的形式进行呈现。通过数据的积累(如关于设备故障的数据),结合关联规则挖掘技术进行故障信息的预测、调度方式的分析与优化。数字孪生技术在智能工厂的引入推动了智能工厂在数字化和网络化的发展,在智能制造的进程中起到重要的推动作用。
自动化立体仓库是智能工厂仓储物流的重要系统,堆垛机是自动化立体仓库的关键设备。将数字孪生技术应用到堆垛机系统,可以实现对堆垛机系统的全方位可视化监控。将实时数据与历史数据,结合机器学习算法,实现故障预测、设备健康管理、优化调度算法和运行模式。
2 系统分析和数据准备
2.1 系统分析
在搭建堆垛机数字孪生体的准备阶段,对堆垛机的作业模式进行分析,获得堆垛机工作模式及相关参数;对堆垛机上的机械结构进行分析,了解堆垛机设备上各个组件的作用以及相互之间的关系;对堆垛机执行作业时的调度逻辑进行分析,分析其运行调度逻辑;对堆垛机上各智能传感器应用原理及作用进行分析,获得在运行期间各个传感器信号变化的意义。
堆垛机在运行过程中,主要有三个方向的运动:沿轨道水平方向移动、沿轨道垂直方向移动和在取货或者放货时垂直于巷道平面的移动。堆垛机定位一个货架位置需要通过层数、列数和排数三个属性值。堆垛机作业是一个立体空间内的载具转移:通过三个方向的移动使得堆垛机从起始层、列、排到达目的层、列、排。根据运动类型的不同,堆垛机运行模式可以分为入库、出库等。入库即堆垛机将外部设备上的载具运载至货架货位。出库是入库的一个逆过程。
堆垛机可以分为三个模块:堆垛机主体部件、堆垛机载货平台和堆垛机载货货叉。三个模块分别是沿轨道水平方向移动,沿轨道垂直方向移动以及沿垂直轨道面的方向移动。如图1所示,将堆垛机主体部件的移动方向设为X轴,堆垛机载货平台的移动方向设为Y轴,堆垛机载货货叉的移动方向设为Z轴。堆垛机设备可以抽象看作在一个三维空间内,各部件沿不同的坐标轴进行移动。
图1 堆垛机三维空间示意图
堆垛机的作业是由调度程序进行控制的。对于入库作业,调度程序按照预置的单一或组合入库策略(就近原则、货架受力均匀、物料分区存放等)计算出载具最优入库货位地址,并由堆垛机执行完成。对于出库作业,当上位管理程序下发出库作业后,调度程序按照预置的单一或组合出库策略(路径优化、复合任务等)计算载具的最优出库作业模式,并由堆垛机执行完成。
堆垛机上各智能传感器,在堆垛机运动过程中信号跟随发生变化,通过传感器信号值,了解当前堆垛机状态改变。如:通过采集堆垛机水平与竖直编码器值,实时获得堆垛机在巷道内的某一个精确位置;通过载货信号开关,明确当前堆垛机上是否有载具。
2.2 数据准备
要建立堆垛机孪生体,真实反映设备的实时运行,需采集堆垛机的动作数据、检测开关数据、故障数据、运行数据、作业数据、货架数据、历史故障数据等。动作数据、检测开关数据、故障数据和运行数据等可以从设备实时采集到;作业数据、货架数据和历史故障数据等可以从与其他系统交互中获得。
所采集的各种数据主要包括以下内容。动作数据指堆垛机的运行状态信息,如堆垛机的运行方向、动作等;检测开关数据指堆垛机上的全部光电开关数据,如堆垛机的精确位置、是否带载等;故障数据指堆垛机实时发生的各种故障信息,如堆垛机的变频器故障等,这类数据对堆垛机的运维具有重要的参考价值;运行数据指堆垛机当前运行的各类参数数据,如堆垛机水平运行速度、垂直运行速度等。作业数据指堆垛机执行作业的详细信息,比如作业类型、起始地址、目的地址等;货架数据指所有货架的状态、存储的载具信息;历史故障数据指堆垛机故障的历史日志,利用这类数据可对堆垛机进行设备健康诊断。
堆垛机采用PLC进行控制,通过读取PLC的数据进行设备信息采集。本系统堆垛机使用西门子公司生产的PLC,利用其对应的通信工具S7.net进行数据采集程序开发。在开发中,通过调用ReadClass方法进行数据块读取,为了使得数据读取延迟降低,采用各数据块多线程同步数据读取方式。使用单线程读取方式和多线程读取方式,各进行多次数据采集,记录读取时延,如图2所示。从图中可以看出,使用多线程读取数据,效率得到明显提升。
图2 单线程、多线程设备数据采集时延变化曲线图
除了从堆垛机直接进行数据采集外,还需从其它相关系统(如MES、WMS等)获取与堆垛机运行相关的数据。通过系统间接口进行数据的交互。
3 堆垛机数字孪生系统搭建
基于上述对堆垛机的分析和数据的准备,本节通过堆垛机模型的建立、模型的处理、模型的数据驱动开发等环节完成数字孪生体的构建。使用SOLIDWORKS建立堆垛机和货架三维模型,模型包含堆垛机设备全部细节与组件,按照1:1000比例系数进行缩放。将建立的堆垛机模型导入到3DMax中,使用3DMax对模型进行轻量化;同时完成对模型的贴图、上色等美化处理,如图3所示。处理完成后,将模型导出为Unity3D可以识别的.pfx格式文件。
图3 3Dmax优化后的载货台组件
模型处理完,模型的结构依旧是比较离散的,所有组件都存放在同一集合内,这种关系模式对后续模型的动画驱动会造成很大负担。因此,在编写脚本前,首先要根据对模型实际运动情况的分析,完成模型关系重新建立。通过系统分析环节介绍,将堆垛机模型分为三个模块:堆垛机主体部件、堆垛机载货平台和堆垛机载货货叉。在模型进行数据驱动时,可以将堆垛机载货平台作为堆垛机主体部件子物体,这样前者只需完成垂直方向运动,其水平方向运动会跟随后者完成;同理,堆垛机载货货叉作为堆垛机载货平台子物体。通用模型格式的堆垛机3D模型如图4所示。
图4 通用模型格式的堆垛机3D模型
完成堆垛机模型关系整理后,建立模型与数据的连接,为后续模型驱动做准备。数据连接包含模型与设备的连接、模型与其他系统的连接。通过采集到的设备数据,对模型的各部件进行数据驱动。
堆垛机主体部件的数据驱动,通过式(1)将读取到的设备水平方向的实际数值(Stacker_z)映射为模型中对应的数值F(Stacker_z):
式(1)中,StackerPYL为偏移参数,StackerMutiple为比例参数。这两个参数均根据堆垛机主体部件现场实际情况进行调整后获得。
当前模型中堆垛机主体部件的位置为StackerZ,与F(Sacker_z)进行比较,计算差值Stacker_zdiff:
如果差值Stacker_zdiff大于0.001f,则更新堆垛机主体部件的位置transform.localPosition。
堆垛机载货平台的数据驱动,采用与堆垛机主体部件数据驱动类似的方法,通过式(3)将读取到的当前设备垂直方向的实际数值(ZHT_y)映射为模型中对应的数值,并与当前模型中堆垛机载货平台的位置ZHTY进行比较,计算差值ZHT_ydiff:
式(3)中,ZHTPYL为偏移参数,ZHTMutiple为比例参数。这两个参数均根据堆垛机载货平台现场实际情况进行调整获得。
如果差值ZHT_ydiff大于0.001f,则更新模型中堆垛机载货平台的位置transform.localPosition。
堆垛机载货货叉的数据驱动,将到位信号以及收叉伸叉信号映射为模型中的对货叉移动速度调整的判定量。为了让模型中的载货货叉能够逼真地反映货叉物理实体,让货叉移动速度自学习,不断进行自我迭代,设计了以下迭代算法。
首先记录模型中每个货叉的最大伸叉长度L,通过统计伸叉时间T来计算伸叉速度。。不断地使用下次伸叉速度对其进行修正:
其中,Vnew表示当前修正得到的速度,Vi表示上一次修正得到的速度,Vj表示此次伸叉过程计算得到的速度,ω为权重系数(根据现场情况,进行调整后获得)。为了记录每次系统运行后得到的Vnew,将该数值写到本地文本中。下一次启动本系统时,从本地文本中读取最近一次得到的Vnew。
堆垛机载货货叉伸叉过程的数据驱动方式如式(5)所示:
当货叉左伸时,μ取1;当货叉右伸时,μ取-1。根据HCX数值的变化更新模型中堆垛机载货货叉的位置transform.localPosition。
4 模型UI可视化
使用可视化的UI界面对数据进行可视化展示。使用图表的方式能够更加直观的呈现数据所包含的信息,帮助发现规律[4]。
1)设备运行状态可视化
从堆垛机设备上获取的系统实时的开关信号量、故障信号量和运行数据信息等。对于布尔类型的数据,通过指示灯(使用Image组件绘制)进行表示;整型以及浮点类型数据,通过文本框(使用Text组件绘制)进行展示。界面如图5所示。
图5 设备实时数据可视化
2)系统数据可视化
从其他系统获取到的数据,如作业信息数据、货架信息数据。这些数据都是通过接口程序从其他系统获取的,其形式均为数据集合。使用表单UI对该类数据的可视化展示。将这些数据与表单UI的文本组件绑定,定时动态进行数据的刷新。如图6所示。
图6 货架数据可视化
3)运维数据的可视化
通过采集设备数据,获得实时故障信息;通过与其他系统的交互,获得历史故障数据;建立算法对故障位置、频率、作业特点等数据进行分析处理,输出设备故障统计信息并提出维护建议。如图7所示。
图7 运维数据可视化
5 结语
本文实现了堆垛机的数字孪生系统的搭建,将堆垛机物理模型映射到三维堆垛机虚拟模型,使用可视化手段对堆垛机的实时运行状态、堆垛机状态数据、系统信息数据和运维数据进行展示。未来,数字孪生将结合机器学习和深度学习技术对堆垛机系统的数据分析建模,实现历史故障进行诊断、未来趋势预测,通过孪生体模拟运行的反馈,实现堆垛机调度优化与效率提升[1]。