虚机实电机械手PLC 控制技术
2021-11-26程嘉豪杜宝江
程嘉豪,杜宝江
(200093 上海市 上海理工大学 机械工程学院)
0 引言
随着自动化生产的不断发展,工业机器人和PLC 已经成为现代工业生产中不可或缺的一部分。在高校,对学生在工业机器人PLC 控制应用能力上的培养变得越来越重要。高校开展PLC 控制实验的目的在于培养学生在机电自动控制中的理论结合实践的工程应用能力。在前期阶段,考虑到电气设备的危险性和学生对电气原理及操作的不熟练,使用虚拟PLC 控制虚拟设备来进行教学与实验。之后,学生需要进一步使用实物PLC来进行接线编程的实操训练。但由于学生实操编程经验不足,往往容易发生误操作和控制错误[1],引起设备损坏,尤其是高成本的大型设备,如工业机器人等[2]。
目前,高校里的实物PLC 控制实验的控制对象主要为一些简易被控装置,如电机、信号灯等。对于接近实际的被控对象,如机器人、自动生产线等大型设备,由于成本、场地以及实操存在危险等原因,难以大量应用[3]。考虑到制造业的发展趋势,工业机器人PLC 控制实验大量应用于高校教学中就显得尤为重要。
针对实物机器人难以大批量用于学生PLC控制实验的问题,厦门大学航空航天学院的卓勇教授提出了借助虚拟现实技术、Unity3D 来构建虚拟机器人仿真环境的方法解决实物机械手的场地、成本以及机械伤害的问题[4]。基于该思路,本文进一步探讨了虚实交互功能的开发,并应用于学生实验的可行性。
本文提出了构建基于Unity3D 的虚机实电机械手PLC 控制实验平台的方案,满足了学生实验的通用性和使用的便捷性,有效地降低实验的危险性以及设备的损耗。学生可以在编写完程序后,通过搭建实物PLC 控制系统并挂接虚拟样机的方式来模拟运行,使用校验模块来进行测试校验。
1 总体方案设计
本平台用于PLC 控制实验。对于虚拟环境的创建,应有真实的物理引擎及丰富的UI 交互开发工具,所以本平台选用Unity3D 引擎搭建,使用C#来进行编程开发。选用高校常用的三菱PLC 应用于实物PLC 控制系统。
学生在实验中,首先需要编写PLC 程序,然后完成实电部分实验装置的搭建,再配合实验平台的虚机部分进行模拟运行[5]。整个实验流程如图1 所示。
图1 实验流程Fig.1 Experiment process
针对整个实验流程,本系统分成了4 个部分来构建,分别是机械手虚拟样机的构建、实物PLC 控制系统的搭建方案、虚实通讯模块以及PLC 编程及校验模块,整体的方案框如图2 所示。
图2 整体方案Fig.2 Overall program
机械手虚拟样机的建立是虚机实电中虚机部分的构建,通过建立模型并参照实物机械手的运动特性,确立虚拟机械手各轴之间的运动关系,最终构建出能够按照实物机械手的工作方式来运行的虚拟机械手。
PLC 实物控制系统是虚机实电中实电部分的实验装置搭建。对于实物PLC 控制系统挂接虚拟样机模拟运行的实验方式,学生通过搭建实物PLC 控制系统来完成实电部分操作,并用于与虚机配合完成实验。
虚实通讯模块是虚拟机械手和实物PLC 控制系统连接通讯的重要技术手段,虚拟机械手通过接收通讯模块发出的数据来驱动运行。
PLC 编程及校验模块是学生实验的内容设计部分。学生在编程模块按要求编写PLC 程序来用于控制实验。校验模块在学生编写完PLC 程序,搭建完实物PLC 控制系统接入PC 机进行模拟运行时配合使用,用于校验PLC 程序以及控制系统。
2 机械手虚拟样机的建立
针对实物机械手的虚拟样机设计,通过分析实物机械手的运动特性,完成了虚拟机械手模型的建立,确立了虚拟机械手的运行方式,从而完成了虚机的构建。
本文选用ABB IRB1600 来进行虚拟样机设计。IRB1600 机器人为六轴多关节串联机械手,6个关节均为转动副,常用于上下料、弧焊等领域。在实际运动中,各关节间存在父子关系,比如:1 轴转动会带动23456 轴转动,3 轴转动会带动456 轴一起转动等。
2.1 模型的建立
机械手各轴的模型使用工业软件完成建模装配即可。由于机械手各轴之间存在转动关系,所以虚拟机械手各轴需要确定旋转轴的方向和位置。使用3DMAX 来调整虚拟机械手各轴模型的自身坐标系位置及方向。根据Unity3D 的模型格式要求,导出FBX 格式。导入U3D 后,模型效果如图3 所示。
图3 机械手虚拟样机Fig.3 Manipulator virtual prototype
参照机械手的实际运动特性,在U3D 中进一步调节各轴模型间的父子关系,调整后结果如图3 右侧,保证六轴角度的变化能够驱动虚拟机械手如实运动。
2.2 虚拟机械手的运行方式
虚机接收到实电部分的运行数据,经字符串分解后可得序号、角速度和转向。在Unity3D 中,机械手的运动使用Rotate()函数来完成。序号决定了需要驱动的机械手的轴,角速度和转向确定了Rotate()中参数的数值和正负。通过逐帧地解析接收到运行数据并调用Rotate(),可驱动机械手运行。
本段通过完成机械手模型的构建和运行方式,实现了对实物机械手的虚拟化,能用于被实电部分的数据驱动运行。
3 实物PLC 控制系统的搭建方案
针对学生搭建实电控制装置的实验流程以及虚机实电中对运行数据的采集需要,本段分析了实机实电的实际控制对象,提出了一套用于虚机实电的实物PLC 控制系统的搭建方案。
在实机实电中,PLC 程序的实际控制对象是机械手各轴的步进电机,在机械手为虚拟样机的情况下,本文提出直接搭建实物PLC 控制实物步进电机的电路,再在此基础上加入传感器和数据交换模块来对步进电机的运行状态进行数据采集,用于驱动虚拟机械手。整体方案如图4 所示。
图4 实物PLC 控制系统的搭建方案Fig.4 Construction plan of physical PLC control system
其中,PLC 选用FX2N 系列,步进驱动器选用ND556,步进电机选用60BYG250A,数据交换模块选用Arduino 单片机。在数据的采集和处理上,本文选用霍尔传感器和Arduino 单片机来完成。霍尔传感器在磁场变化时,会发出脉冲信号,根据此原理配合Arduino 的中断功能,即可测出电机转动一圈所用的时间,从而算出转速和转向[6]。
学生在搭建完实物PLC 控制实物步进电机的部分后,将霍尔传感器放在带有磁铁的电机转盘的旁边,用于对电机的运行数据进行采集,即可完成实电装置的搭建。
本段通过分析实机实电的控制对象,提出了一套用于虚机实电的实物PLC 控制系统的搭建方案。在无实物机械手的情况下,较好地完成了对学生实操能力的训练,同时能够用于驱动虚拟机械运行,完成机械手PLC 控制实验。
4 虚实通讯模块
针对虚机与实电部分的数据通讯问题,本段分析了虚实通讯过程中的输入输出,提出了硬件与软件部分的设计方案,实现了以实物PLC 控制系统驱动虚拟机械手的技术。
4.1 虚实通讯的输入与输出分析
驱动虚拟机械手运行需要提供转动轴的序号、转动方向以及角速度。其中,角速度可以通过计算步进电机转动一圈所需时间来得出。转动时间和转向直接使用传感器来测得,转动轴的序号在数据交换模块中直接指定。数据交换模块完成输入与输出的转换并发送给虚拟机械手,用于驱动虚拟机械手运行。
表1 通讯模块的输入与输出Tab.1 Input and output of communication module
4.2 硬件设计
硬件设计部分由实电部分的数据采集、数据的处理输出以及虚机部分接收数据3 个部分构成,具体的数据传递流程如图5 所示。
图5 虚实通讯中的数据传递流程Fig.5 Data transfer process in virtual and real communication
对输入数据的采集,本文中使用2 个霍尔传感器来配合完成,分别用于测电机转向和记录转动时间。对输入数据的处理及输出选用Arduino单片机来完成。虚机部分通过创建虚拟接口来完成数据的接收。
4.3 软件设计
软件设计部分用于处理采集到的数据,并发送给虚拟机械手。
在输出中,角速度的值通过t1和t2运算得出。编写Arduino 程序来计算时间差∆t=t2-t1,得电机转动一圈所需的秒数,通过换算得步进电机的角速度度2π/∆t rad/s。转向通过判断监测转向的霍尔传感器的高低电平来得出。当转速传感器触发中断时,通过Arduino 判断转向传感器电位的高低,得出顺时针或逆时针,使用1或0来标识输出。
Arduino 完成数据处理后,将角速度、转向和需要转动轴的序号以字符串“序号+‘:’+角速度+‘|’+转向”的格式用Println 指令发送给PC 机。
PC 端需根据Arduino 的串口属性,初始化一个属性相应的虚拟接口。使用Readline()接收单片机向串口发出的数据。通过遍历接收到的字符串,分别取出序号、角速度以及转向3 个子字符串,即可用于驱动虚拟机械手。
本段通过对虚实通讯模块的输入输出需求的分析,提出了硬件设计和软件设计方案,完成了输入数据的采集、数据处理、数据输出整个流程,实现了以实电的运行数据驱动虚拟机械手运动的功能。
5 PLC 校验模块
针对学生编写PLC 程序以及结合虚机实电完成程序校验的实验流程,本段提出PLC 编程及校验模块的设计方案。
5.1 PLC 编程模块
本模块以一轴为例,要求学生编写PLC 程序控制虚拟机械手的1 轴逆时针转动90°。实验中,给出了机械手1轴步进电机的步距角为1.8°、轴的转动速率为22.5°/s,以及减速器的传动比为25,学生需根据公式(ω×i)/θ和(α×i)/θ算出机械手1 轴转动所需的脉冲数和脉冲速率,并编写控制程序,界面如图6 所示。
图6 程序设计模块Fig.6 Programming module
5.2 程序校验模块
本模块用于校验学生编写的PLC 程序是否满足要求。学生通过实物PLC 驱动虚拟机械手的方式配合程序校验模块来进行模拟运行。该模块会实时检测虚拟机械手各轴转动的角度,通过与控制要求的角度作对比,判断是否满足要求,如图7 所示。
图7 运行校验Fig.7 Run and check
机械手各轴转动角度的检测直接通过使用U3D 的反射来获取模型面板上的Rotation 值来实现。通过判断机械手转动的角度和目标角度的差值来确认是否满足控制要求,最终的差值小于5%,则编写的PLC 控制程序基本满足了控制要求。
6 结语
本文针对实物机械手由于场地、安全、成本限制而难以用于学生PLC 控制实验的问题,研究了实物PLC 控制虚拟机械手的虚机实电控制技术,提出了以实物PLC 控制虚拟机械手完成PLC控制实验的方案。目前相关方案已经初步应用于高校的虚拟仿真实验中。使用结果表明,该系统能够在无实物机械手的情况下完成机械手的PLC控制实验,有效降低了实验的成本,提高了学生的实操能力,并以PLC 驱动虚拟机械手运动的方式直观地展示PLC 控制系统的模拟运行。