连铸生产虚拟仿真系统设计及关键技术研究
2020-10-09谷学静张彦鹏郭宇承刘海望
谷学静,张彦鹏,郭宇承,刘海望
(1. 华北理工大学 电气工程学院,河北 唐山 063210;2. 唐山市数字媒体工程技术研究中心,河北 唐山 063000;3. 华北理工大学 机械工程学院,河北 唐山 063210;4. 华北理工大学轻工学院 电气信息学院,河北 唐山 063000)
连铸工艺是钢铁企业十分重要的生产工艺,该工艺过程是将成分合格的钢水连续铸成钢坯。连铸工艺在缩短生产时间、节约能源以及提高钢坯质量等方面具有显著的优势。2017 年全世界采用连铸工艺生产的钢坯已占到总产钢量的 90%[1]。高校培养的连铸技术人才不仅需要理论知识,更需要对连铸生产过程的实际认识。然而连铸生产的实践教学往往受到时间、经费、安全等[2]因素的影响。本文以连铸车间为对象,将连铸生产过程与虚拟现实技术相结合,通过 3ds Max 软件、Unity3D 引擎搭建连铸生产虚拟仿真系统,以满足连铸生产实践教学的需求[3]。
1 连铸仿真系统概述
虚拟现实技术是通过搭建高度逼真的三维立体环境,实现以虚代实、人机交互的用户体验。连铸生产虚拟仿真系统以某钢铁企业的连铸车间为对象,结合实际教学以及培训过程中的关键问题进行设计,是一个自主性高且具有沉浸感[4]、交互性、想象性的学习平台,有助于提高学习者对于连铸工艺的认知水平,加快学习者对操作技能的掌握。
1.1 内容分析
连铸生产工艺的实践教学遵循循序渐进的原则,将连铸生产虚拟仿真教学过程分为认知篇、实践篇、诊断篇、仿真篇等4 个篇章。
认知篇:通过三维模型动画展示以及音频讲解和用户界面(UI),使学习者能够清晰、直观地认识连铸的生产设备和工艺流程。
实践篇:通过对连铸生产操作的虚拟化设计,以虚实结合的控制形式实现连铸生产过程的规范操作实践训练。
诊断篇:通过问答的方式,随机考查学习者对连铸生产中常见问题的诊断和处理能力。
仿真篇:利用Matlab 软件对连铸生产工艺参数进行仿真设置,使学习者深入了解各工艺参数对连铸生产过程的影响。
1.2 开发过程
根据系统的功能和篇目,连铸生产虚拟仿真系统的开发过程分为以下5 个步骤:
(1)收集连铸车间的各种素材,包括设备和场景图片、设备运行的视频、车间布置图纸资料等,通过对连铸生产中的素材整理分析,对连铸生产虚拟仿真系统的环境模型和工艺仿真进行设计;
(2)对连铸车间环境以及主体设备和辅助设备等素材使用3ds Max 进行三维建模,通过模型的搭建实现虚拟连铸车间的三维仿真,利用3ds Max 的动画制作功能对连铸生产过程进行表达;
(3)将3ds Max 软件中的资源导入Unity3D 引擎中,通过Unity3D 对虚拟现实的内容进行开发,使用编程语言C#编写相关运行程序,实现系统中设备运行仿真和人机交互;
(4)使用Visual Studio 开发工具创建主控程序及Winform 控件,通过 Winform 控件实现 Matlab 数学软件与 Unity3D 引擎结合,实现虚拟场景中的数据仿真;
(5)添加外部控制系统,增加连铸仿真系统的控制方式,调试优化后对系统进行集成发布。
系统的开发过程如图1 所示。
2 虚拟连铸车间环境的搭建
2.1 连铸车间资源分析
虚拟连铸车间环境主要是由虚拟场景的设计与建模实现的,构建虚拟环境的重点是连铸设备的三维模型设计与制作。连铸车间所用的设备通常可以分为主体设备及辅助设备[5]。
图1 系统开发过程
主体设备包括:钢包回转台、中间罐及其运载小车、结晶器及其振动装置、二次冷却支导装置、拉坯矫直设备、引锭杆、脱锭及引锭杆存放装置、切割设备。
辅助设备包括:(1)出坯及精整设备——辊道、拉(推)钢机、翻钢机、火焰清理机;(2)工艺性设备——中间罐烘烤装置、吹氩装置、脱气装置、保护渣供给与结晶器润滑装置、电磁搅拌装置;(3)自动控制和测量仪表——过程控制计算机、测温、测压、侧重、测长等仪表。
在保证视觉效果的前提下,使用建模技巧优化场景效果是三维场景制作的重点之一。
2.2 三维场景的制作
在使用三维模型搭建虚拟场景时,需要按照实际场景和教学需求对虚拟场景中各个模型进行结构分析,然后用3ds Max 软件制作虚拟场景中的模型。
制作3ds Max 模型,需要在保证模型真实度的情况下对模型进行优化,主要是对场景中的模型的大小和形状进行处理,其难点在于减少模型的点面结构。在模型制作过程中,可以使用多种方法(例如剔除不可见的面、以拉伸替代堆砌、合理切分模型等)对点面进行精简,然后通过材质处理增强模型的逼真度。材质处理主要是展UV 贴图以及烘培。3ds Max 中的模型 UV 贴图的处理需要使用 Photoshop 进行细节勾画;烘焙是指植入灯光效果后对场景进行渲染。烘焙渲染既增加虚拟场景真实感,又减少了后期场景中的实时光照,从而达到节约系统资源的效果。为了方便系统的搭建,建模的后期处理采用了组场景和动画制作同步进行的方式完成连铸场景的整体布局和设备模型动画的制作[6]。三维模型示例如图2 所示。
图2 系统中三维模型
3 Unity3D 虚拟仿真内容的开发
将 3ds Max 中创建好的模型以 FBX 格式导入Unity3D 中,使用Unity3D 引擎对连铸生产虚拟仿真系统4 个篇目的内容进行开发。认知篇与诊断篇的开发方式比较相近,在开发过程中使用了大量的UI 元素;实践篇的开发重点在于脚本的编写,通过脚本逻辑实现系统的漫游、虚拟操作以及连铸生产过程的仿真;仿真篇的开发则需要将 Matlab 引入连铸系统进行参数的仿真。本文仅描述实践篇和仿真篇的开发过程。
3.1 实践篇的开发过程
3.1.1 交互功能的开发
连铸生产虚拟仿真系统交互功能的开发,主要包括控制场景中漫游功能和操作台控制功能的设计与实现。虚拟漫游是指直接或间接控制虚拟摄像机观察虚拟场景的信息。虚拟摄像机是跟随目标物体而移动的,通过差值计算对摄像机角度进行调节,相关代码(以x轴为例)为:
tempXAngle = Mathf.LerpAngle (fromXAngle, toXAngle,deltaChangeValue);
当操作者点击场景中虚拟操作台上的按钮或旋钮时,系统会反馈给操作者操作信号,并在反馈过程中改变按钮或旋钮的亮度、发出声音效果。通过对交互过程进行优化,增加了虚拟操作过程的真实性,有助于学习者对仿真虚拟系统的操作。在交互时,系统根据操作台的信号给出虚拟连铸生产的动作指令,通过系统中模型在动作指令下进行生产过程的三维仿真。
3.1.2 连铸生产过程的三维仿真开发
连铸生产过程是一个多步骤操作的复杂生产过程,连铸生产虚拟仿真系统涉及多道生产工序。按照连铸生产工艺,钢水首先经冷却装置凝固为铸坯,然后铸坯经定尺切割和精整操作,生成方便钢铁生产输出和存放的铸坯产品[7]。根据连铸生产的操作实践,本系统的实践篇包括连铸设备及操作工艺中的准备工作操作、浇注操作、铸坯切割和精整操作等。
以铸坯切割工艺过程为例,火焰切割机定尺切割过程的仿真可以使用 Unity3D 设置动画效果实现[8]。但是,由于动画不满足实践操作实时性的特点,因此本过程采用了实时监测的方法,使用Unity3D 组件和代码进行开发。整个过程包括:使用粒子系统对火焰、水流、气体的模拟;通过调整模型的 Transform 组件实现切割设备的移动[9];使用 Unity 内置的 NVIDIA PhysX 物理引擎检测铸坯的切割过程。
3.1.3 铸坯的生成
为仿真铸坯的实时生成过程,可以考虑以一定的速度增加模型的数量。但增加模型的数量会增加系统的运行负荷,并且在一定程度上对虚拟拉坯的速度有所限制,不利于系统的稳定运行和仿真。本系统对铸坯生成的过程采用模型变换的方式进行仿真,即通过帧调用的方法,首先增加铸坯模型沿Z轴的尺寸系数,然后调整铸坯的位置,保证铸坯的生成位置不变,从而实现铸坯从铸机中连续被拉出来的仿真效果,避免了增加模型导致的负载增大的问题,并且可以根据培训需求调节虚拟拉坯的速度。
程序运行时,通过调用MonoBehaviour 类中的帧调用函数 Update(),对铸坯模型的生成进行控制的相关代码如下:
transform.localScale+ = new Vector3(0, 0, change *Time.deltaTime*c);
transform.Translate (Vector3.forward * change/2 *Time.deltaTime*c);
3.1.4 铸坯的准备
切割铸坯的过程是在铸坯的侧面先切开一个小缺口,然后缺口逐渐扩大直至铸坯完全切断。在仿真系统中,需要在虚拟切割前对铸坯模型进行细化,即在保证整体铸坯横向尺寸不变的情况下将铸坯分为数量足够多的条形子物体,通过条形子物体的逐个断开实现铸坯的切割过程。采用生成预制体(Prefab)的形式,先把整块铸坯在x轴上分解为91 条(piece),并将每一条用数组的形式进行编码,按顺序可以从piece[0]到 piece[90]。
3.1.5 铸坯的切割
设铸坯沿Z轴正向拉出(Unity3D 场景中的世界坐标系为左手坐标系),虚拟连铸生产中铸坯的切割过程主要有2 种:(1)切割枪运动方向与铸坯运动方向垂直进行切割(见图3);(2)切割枪运动方向与铸坯运动方向平行进行切割(见图4)。在图3 所示铸坯模型中,a段表示切割下的铸坯长度,b段表示铸坯的切口长度,c段表示切割后的铸坯长度,S1 为坯头位置,S2 为切下的铸坯(a)的尾端,S3 为切割位置,S4 为切割后的铸坯(c)的前端。
图3 第一种切割过程
图4 第二种切割过程
根据图 3 对虚拟切割的相关参数进行求解,以确定切割过程中三维模型的变化。已知条件包括切割位置 S3 以及切口长度(b),未切割铸坯的位置以及大小。
虚拟切割是根据切割位置的变化,改变模型的大小以及位置来表现切割的效果。第一种切割情况进行切割时:相关代码如下:
以上两种切割方法可以实现连铸生产过程中对铸坯切割的仿真。
3.2 仿真篇的开发过程
在连铸生产过程中应用到很多监测设备和计算终端,通过对连铸生产中的数据采集实现对生产过程的控制。在连铸生产虚拟仿真系统中,仿真篇的作用是通过 Matlab 数据仿真[10]让学习者能够对连铸生产有深入的理解。仿真篇的开发难点在于 Matlab 与Unity3D 的信息传输。本系统使用 Winform 控件和UnityWebPlayer 插件实现了两者之间的信息交流(见图5)。其过程是:(1)在Visual Studio 中创建和编辑Winform(窗口应用程序);(2)Winform 中引用 Matlab相关动态链接库(.dll)并在脚本编写时引用相应的命名空间,实现 C#代码对 Matlab 函数的调用;(3)安装UnityWebPlayer,并在 Unity3D 的开发程序中引入UnityWebPlayer 的动态链接库。
图 5 Winform 与Unity3D 通信过程
4 外部控制系统的添加
根据实际连铸生产中通过控制台控制连铸生产和 PLC 对连铸电气系统的控制方式[11],本系统开发了外部控制系统对仿真控制过程进行优化。通过外接真实的操作台以及 PLC 和数据转接箱的控制形式,实现了虚拟仿真的人机交互[12],实现了虚实结合的控制仿真系统。系统加入外部控制后的通信过程如图 6所示。
图6 系统的通信过程
5 结语
连铸生产虚拟仿真系统的开发过程包括内容设计、虚拟场景的搭建和系统运行的脚本编写,以及在Visual Studio 开发工具中集成调试并发布。利用三维建模技术、Unity3D 引擎、Visual Studio 开发工具、Matlab 软件等实现了系统集成与发布。该系统可以进行连铸生产的全过程模拟,为学习连铸生产设备、环境、工艺知识和实操提供平台支持。该系统的开发过程也可为其他虚拟仿真系统的构建提供参考。