基于虚拟现实的仿真教学系统设计
2022-05-14汪华健汪志锋
汪华健,汪志锋
(上海第二工业大学,上海 201209)
1 引言
随着科学技术的不断发展,自动化生产线越来越普及,与此同时PLC编程控制自动化生产也广泛应用于人们生活的方方面面,对于该方面的人才培养需求也在增加。
但是目前我国高校中的PLC实验教学存在一些设备上问题,如需求量大、能够提供更新硬件机会较少、所需要的实验设备价格昂贵;学校的设备提供给学生实验时,学生很少有接触相关操作,器材的损坏率比较高且难维护;这也导致了各高校各个需要实验教学专业的可以使用的器材是越来越少,达不到很好的教学需求,从而实验教学效果并不显著。
针对这一难题,提出应用虚拟现实技术来开发一个虚拟仿真实训系统,能够在一定程度上解决器材缺乏的问题;运用虚拟现实技术可以模拟具有一些人类所拥有的感知功能,比如听觉、视觉、触觉等;当模拟环境的真实性足够时,用户可以在虚拟现实世界体验到最真实的感受,让人有种身临其境的感觉; 并且虚拟现实技术能够实现人机交互,使用户在操作过程中,可以随意操作并且得到环境最真实的反馈[1]。
研究中以德国费斯托的MPS实训教学系统为原型,该教学系统主要由工件传动系统和控制系统组成,按照一定的工艺顺序,通过气动、电动机、传感器等电气设备将一个物料分拣循环单元引入到气压传动控制课程综合实训中[4]。通过对该系统的学习能够很好地提升相关专业学生的专业知识和动手能力。
2 系统总体设计
研究中仿真教学系统框架如图1所示,主要包括三个部分:上位机、PLC和虚拟环境(下位机仿真软件端),上位机需要使用通讯线连接PLC进行编程,而PLC还通过通讯模块连接仿真软件端,在使用时用户通过鼠标键盘等外设控制上位机进行编程,编程后通过外设在虚拟环境中实时验证编程正确性,以达到PLC编程实验目的。
图1 系统框架图
其中上位机主要用于PLC组态及编程,应该通过电脑RJ45端口(网线端口)连接好PLC的通讯口或者使用串口与PLC通讯口连接;上位机应安装有PLC编程软件如TIA Protal或者WinCC等,并在使用前与通信模块完成编程前的一系列的配置,如设置计算机和PLC的IP地址在同一网段上、通讯校验一致等。
由于各种类型PLC使用通讯协议不同,所以通信模块需要根据PLC型号的不同来确定模块采用协议转换网关的型号。
仿真软件主要中包括虚拟场景、交互界面以及通信数据处理;虚拟场景中的设备和实验换环境可采用3D建模,而交互界面的搭建以及通信数据的处理可在Unity3d引擎开发平台中编写脚本实现。
由于德国FESTO公司的MPS模块化生产加工实训系统实际包含工位较多,研究中选取典型的4个工位进行虚拟场景的搭建:①提取单元:通过气阀将工件吸取到指定位置;②加工单位:工件钻孔等加工工艺;③检测单位:工件加工是否符合要求的检测;④分类单位:对工件进行分类。
3 仿真软件端的设计
通过对整个仿真教学系统进行分析,确定开发流程有以下几步:①建立虚拟MPS生产线的四个工位的模型,需要最大限度地模拟模型的动画,提高软件的仿真性;②分析MPS生产线,将其PLC的输入输出点(IO点)表格化,方便数据处理;③模型和动画导出为Unity3D可用的FBX格式,并导入Unity 软件中处理;④合理分配模型和UI界面占比,搭建软件最合适的操作界面;⑤编写脚本实现利用PLC控制虚拟生产线这一功能;⑥软件的测试及BUG修复。
3.1 开发工具
仿真软件端中的虚拟设备的建模直接决定着系统的仿真性,虽然Unity3D自带建模功能,但是其不能够满足软件的仿真性,所以需要使用一款强大的建模软件来相应的模型,并且模型能够导入Unity3D中使用。可提供选择的软件为3Dmax和Maya,3Dmax是Autodesk开发的一款建模软件,相对于Maya来说,尽管3Dmax操作方面比较生硬,但是3Dmax学习起来要稍微简单一些,有很多功能也比较智能,而Maya操作比较灵活,但功能比较零碎;综合考虑需要自动化生产线模型的复杂程度、软件学习的复杂程度,3Dmax更加适合作为本次开发的建模软件。另外,3ds Max具有非常好的性价比,它提供的功能远比自身的低价位强大得多,可以大大降低生产成本,对硬件系统的要求也相对较低[8]。一般的通用配置可以满足学习和使用的需要。
近年来,虚拟现实技术的高速发展也使得相关开发工具的选择有很多,例如Unity3D、虚幻引擎、Vega Prime、WTK、VirTools等。
研究中选择的是Unity3D开发引擎。其对比与其它工具主要有以下几个有点:
1)Unity3D为开发者提供了免费版本,该免费版本完全以满足仿真软件端的开发需求,从而降低开发成本
2)软件支持2D、3D开发,对各类常见的媒体文件都能够兼容,不仅能够建立一些模型,还能导入外部3D模型使用;
3)本软件使用的编程语言有C# 和JavaScript,其中C#在学习和使用等方面相对较为简单[2];
4)Unity3D软件提供Asset Store功能,可以在商店选用一些扩展资源来节省开发时间等。
3.2 建立模型
在三维模型建立之前,首先需要的是对于实际设施设备的深入分析以及外形素材收集,研究中通过3DMAX 软件对待仿真的设施设备—MPS模块化实训教学系统进行了建模工作,在模型制作完成之后。即可对模型进行贴图制作,贴图制作要充分运用3DSMAX 软件的UVW 贴图功能,保证贴图与真实情况尽可能的相符,如图2所示为使用3DMAX所建立的模型。
图2 三维模型图
模型建立主要对各种元器件进行建模,建模完成需要对单元中的工艺流程进行分析,如图3所示,以压力检测单元所需要实现的功能为例:①夹紧气缸夹紧到达工位的工件(左边);②转动臂带动工件转动到压力检测气缸下方(中间位置);③压力检测气缸下降到位,压力检测装置检测压力,检测结束检测气缸上升;④转动臂继续转动至与下一工位交接处(右边位置);⑤夹紧气缸伸出并松开工件,送至下一站,转动臂返回初始位置。
图3 检测单元示图
3.3 软件开发
使用Unity3D来开发仿真软件端,主要进行以下一些步骤:
1)搭建交互界面, 提供软件操作基础功能,软件进入试验后的交互界面如图二;
2)将模型导入Unity3D,并对模型进一步优化,提高仿真性;
3)编写软件脚本,实现控制模型动画的逻辑以及和PLC通讯的数据处理;
4)测试仿真软件端,主要进行PLC对仿真软件端的实时控制测试。
软件的人机交互界面(UI)的设计如图4所示,其中左边是软件端的首页UI界面,右边是软件的模型操作UI界面。
图4 仿真软件端UI界面示图
软件中设计手动控制和自动控制;手动控制用于模拟PLC信号控制,来对各个实验单元进行学习;自动控制用于控制真实PLC信号控制,来调试用户编写的PLC程序。而动画按钮主要用于预览整个工作流程,复位按钮主要实现整个模型动画的初始化。
PLC教学中很重要的一个教学点是对输入(Input)输出(Output)点的分析,软件将输入输出点(IO点)作为UI的一部分,展示给用户,如图1所示,在PLC传到仿真软件端中Q点(输出点)的信号为1时,其对应在模块界面中输入指示灯(Q)变亮,并进行表1中对应各个Q点的动作。
表1 输出点(Q点)功能表
当模块中检测到各个不同状态时,对应输出指示灯(I点)变亮(I点值为1),其中每个状态与表1中状态一一对应。
表1 输入点(I点)功能表
3.4 功能实现和优化
将模型导入Unity3D后主要是对模型材质和动画的调整,将模型优化,然后通过脚本实现点击按钮出现相应的动画以及IO点按键和灯的变化。例如将整体流程动画做好,例如通过以下示例脚本实现点击动画播放整体流程:
public void AniplayOnClick()
{
PlayButton.SetColor(true); ∥点击后按钮颜色改变
PlayAni[Temp0.clip.name].speed=1; ∥设置播放速度
PlayAni.Play();∥动画播放
}
脚本编写好后需要将动画以及UI中的按钮对应绑定才能实现UI控制动画;在所有功能完成后,将整个项目打包成计算机可运行程序EXE并安装在下位机上。
4 通讯模块设计
要使整个软件功能完整,需要实现Unity3D软件与PLC的通讯,这也是整个项目的关键技术,研究中使用的PLC是西门子S7-300系列的PLC;PLC所发出的是信号以PROFINET的形式,而在Unity开发的仿真软件端设有通信接口,通信协议为TCP /IP,要实现PLC和软件端的实时通讯,主要将PROFINET的信号形式通过通信协议转换为TCP /IP协议的信号传输。
根据通信协议转换的需要,研究中选取泗博TS-180网关和卓岚5143L网关来处理协议转换,编程计算机将编译好的PLC程序下载到西门子S7-300PLC中去,西门子S7-300通过以太网与TS-180网关进行通讯连接,TS180的目的是将S7-300的PROFINET形式的信号转换成RS232信号。TS-180网关通过RS232通讯线与RS232转TCP网关的RS232接口连接。RS232转TCP网关将RS232信号转换成TCP信号,再通过网线将TCP接口与安装有虚拟软件端的电脑网口连接,通过TCP/IP可以处理来自传输层的请求,将请求分组装入IP数据报,填充包头,选择去往信宿机的路径,然后将数据报发往适当的网络接口;并且能够很好地处理路径、流控、拥塞等问题[3];从而完成数据的双向传输,如图4所示。
图5 通讯模块示意图
通过对Unity3D软件与PLC之间的通讯进行分析得知,将PLC发出(接受)PROFINET的信号形式可以通过硬件(通讯网关)转换为TCP /IP协议的信号,而TCP /IP协议一般电脑都是支持的,其中可以通过Socket来实现数据传输;Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它可以创建一个套接字,或通过网络读写的文件描述符,socket、listen、connect等一系列操作系统提供的接口用于实现TCP协议相关的功能。在开发中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议;而TCP协议可以让PLC和Unity之间通过三次握手建立稳定的通信信道,发送字节流。
5 系统测试
系统完成开发后进行测试,测试中使用西门子S7-300进行测试;首先要对上位机进行配置,设置上位机的IP地址与TS-180、PLC同一网段,然后在博途编程软件中的网络视图界面将TS-180与PLC组态,并将TS-180分配给PLC,分配完成后双击 TS-180进入配置界面,在TS-180配置界面修改TS-180 IP地址与PLC在同一网段,再配置TS-180和扩展IO口地址一致。
图6 组态配置示意图
按照系统框架图所示连接好上位机、PLC和下位机后,开始对仿真软件端进行测试,软件首页可通过点击预览观看整个工作流程,也可点击单个单元进入模型操作界面,如图7所示(以压力检测单元为例)。
图7 操作界面示意图
模型操作界面中设有手动模式控制和自动模式控制,在手动模式下,左边的Q点按钮可以点击,模拟PLC输出到软件中的信号,右边的I点为各个传感器的状态,当I点变为绿色时,对应值为1;手动模式主要的作用也就是让使用者更好地了解MPS生产线以及直观的看到PLC的指令会如何控制执行对象,如图8所示,通过手动模式操作转动臂到达压力检测气缸的下方。
图8 手动模式操作演示图
在自动模式下,需要通过通讯模块连接上位机,在上位机中提前写好PLC程序写入到PLC中,点击自动模式可以理解为启动按钮,其中Q点变为不可点击状态,其功能和I点类似,Q点亮(红色变为黑色)表示PLC输出点值为1;整个单元的模型应该按照其工艺流程自动运行,如图9所示,通过自动模式将工件送到下一工位(最右边)处。
图9 自动模式操作演示图
系统测试除了基本的BUG测试与修复,还要通过让高校自动化学生经过多次对虚拟场景的控制实验测试,按照对实际生产线的了解来完成对整个系统的操作,来确定系统是否可稳定运行。
图10 系统运行示图
经过学生实际使用测试,学生们可以通过手动模式直观感受被控对象的运行,在短时间内了解系统的功能,还可以通过自动模式来检查自己对MPS生产线的了解,检验自己的PLC编程能力。将整个系统运用到实验课程中时,即使得教学资源得到了丰富,又在一定程度上提升了教学效果。
6 结束语
仿真系统经过测试后,总结了一些实验中遇到的问题,以及对改进方法的设想。
当前的教学系统还没有做到适配所有的PLC,但是各个类型的PLC发出和接收的信号只是协议上的区别,其它都是大同小异,在今后的进一步研究中,要去适配更多类型的PLC。
当前软件中的模型不能做到选用特定几个出来进行单独实验,实际上的MPS自动化加工生产线的每个模块可以单独使用,也可以任意拼装使用,所以软件在进一步更新中需要实现这个功能。