基于PLC 的AGV 小车控制虚拟仿真实验技术研究
2021-11-26黄迤波杜宝江
黄迤波,杜宝江
(200093 上海市 上海理工大学 机械工程学院)
0 引言
目前,AGV(Automated Guided Vehicle)自动导引小车广泛应用于物流系统和生产车间的自动搬运作业中[1],其通常选择PLC 作为核心控制器[2]。因此训练学生通过编写PLC 程序控制AGV 小车运行对提高其PLC 编程实用能力具有重要意义。
在传统PLC 教学实验中,由于场地和设备的限制[3],学生不能像在工厂中那样,根据实际生产线中AGV 小车的控制要求和运动参数来设计编写PLC 控制程序,并且也无法对其所编程序进行现场校验以检测其运行结果正确与否[4],因此对AGV 小车的PLC 编程控制实验进行虚拟仿真就显得尤为重要。本文通过Unity 3D 设计开发了基于三菱PLC 的AGV 小车控制虚拟仿真实验系统,并依照WebGL 标准发布到浏览器中以供学生实验使用。
1 AGV 小车控制仿真实验总体设计
要实现通过PLC 编程控制AGV 小车运行,首先需要分析确定AGV 小车的控制信号在其运行过程中是如何传递的,并根据这些信号的类型和数量来选择分配其PLC 型号和端口;其次,需要依照PLC 型号和端口情况参考PLC 驱动电动机的编程方法对其运行控制程序进行设计编写;最后,将所编程序写入到AGV 小车的PLC 中,以运行校验其程序的正确性[5]。
本实验系统根据上述分析步骤,通过Unity 3D 设计开发了相应的功能模块,实验整体流程及模块具体功能如图1 所示。
图1 实验系统总体设计Fig.1 Overall design of experimental system
通过上述功能模块,本实验系统即可完成对AGV 小车PLC 编程控制实验的虚拟仿真,实现根据AGV 小车的控制要求和运动参数编写PLC控制程序并对其进行模拟校验的设计目的。
2 AGV 小车控制系统分析设计模块
设计编写PLC 控制程序,首先需要根据AGV 小车的控制系统组成来确定其PLC 输入、输出信号的类型和数量,然后依据PLC 输入、输出信号的类型和数量来选择其型号及分配其端口。因此,本实验系统需要首先分析给定AGV 小车的导航方式、定位方式、避障方式和驱动方式,然后通过Unity 3D 设计开发AGV 小车控制系统构建和PLC 端口分配模块,以供学生自主构建AGV小车的控制系统及分配设计PLC 的端口功能。
2.1 AGV 小车控制系统构建功能技术实现
针对实现自主构建AGV 小车控制系统的需求,本实验系统将首先分析给定AGV 小车的控制系统组成,然后根据各组成部分所用传感器输出信号及驱动器输入信号的类型和数量,选择确定AGV 小车的PLC 型号,并将其显示到控制系统组成界面中,以实现AGV 小车控制系统的自主构建。
本实验的AGV小车控制系统由导航控制器、定位控制器、避障控制器、驱动控制器和核心控制器5 部分组成,其中导航、定位、避障和驱动控制器的所用设备型号及端口信号如表1 所示[6]。
表1 AGV 小车控制系统组成设备型号及端口信号Tab.1 Equipment model and port signal of AGV control system
根据表1 中各设备端口信号的类型和数量即可选择确定AGV 小车核心控制器PLC 的型号。在选定提交PLC 型号时,本实验系统将判断其输入、输出端口数量是否够用,检测其输出端口类型是否能够对外发送高速脉冲信号。判断检测无误后,系统会通过Text.text 将所选PLC 型号显示到控制系统组成界面中,最终实现AGV 小车控制系统的自主构建。
2.2 AGV 小车PLC 端口分配功能技术实现
针对实现自主分配设计PLC 端口功能的需求,本实验系统将首先分析确定PLC 各输入、输出信号的类型和数量,然后对其输入、输出端口功能进行分配设计及判断检测,以实现PLC 端口功能的自主分配。
根据前面分析可得本实验系统AGV 小车PLC 的输入、输出信号数量如图2 所示,参照该图即可对PLC 的输入、输出端口进行分配设计,以便在编写PLC 控制程序时使用。
图2 AGV 小车PLC 输入输出端口信号Fig.2 AGV PLC input and output port signal
根据PLC 输入、输出信号的类型和数量即可分配设计其各端口的功能。在选择分配各端口功能时,本实验系统将通过Dropdown.captionText.text 获取每个信号的所选端口,并判断其是否适用于该控制信号,检测其是否与其他信号的所选端口重复。在所有信号端口都分配完成且判断检测无误后,系统将提示PLC 端口分配设计成功,最终实现AGV 小车PLC 端口的自主分配。
3 AGV 小车控制程序设计编写模块
学生设计编写PLC 控制程序发送脉冲信号给步进驱动器驱动步进电动机转动,首先需要根据步进电动机的转向、角速度和转动总圈数来确定PLC 所需输出的脉冲速率和脉冲数,然后依据PLC 端口分配情况和功能指令编写方法来设计编写其控制程序,因此本实验系统需要首先分析给定AGV 小车的结构参数和运动参数,然后通过Unity 3D 设计开发AGV 小车PLC 输出脉冲计算求解和控制程序编写检测模块,以供学生设计编写AGV 小车的PLC 控制程序。
3.1 AGV 小车PLC 脉冲求解功能技术实现
针对实现计算求解PLC 所需输出脉冲速率和脉冲数的需求,本实验系统将首先根据给定的AGV 小车结构和运动参数计算求解步进电动机的转动参数,然后通过步进电动机参数计算求解PLC 所需输出的脉冲速率和脉冲数,以实现PLC所需输出脉冲的设计计算。
本实验系统通过对AGV 小车机械结构进行分析,可以得到其车轮半径r、减速机构传动比i;通过对AGV 小车运动情况进行分析,可以得到其运动距离L、运动速度v、运动加速度a,则AGV 小车加减速时间t 的计算公式:
AGV小车步进电动机角速度ω计算公式:
AGV小车步进电动机转动总圈数n 计算公式:
系统通过对AGV小车步进电动机进行分析,可以得到其步距角θ,则PLC 所需输出的脉冲速率f 的计算公式:
PLC 所需输出的脉冲数P 的计算公式:
由式(4)、式(5)可求得AGV 小车PLC所需输出的脉冲速率和脉冲数的数值。在计算完成且填写提交后,本实验系统将通过InputField.text 获取填入的脉冲速率和脉冲数数值,并判断检测其是否计算求解正确。在判断检测无误后,系统将提示PLC 输出脉冲计算求解正确,最终实现AGV 小车PLC 所需输出脉冲的设计计算。
3.2 AGV 小车控制程序编写功能技术实现
为实现自主设计编写AGV 小车PLC 控制程序的需求,本实验系统将首先分析给出PLC 输出脉冲信号驱动步进电动机的梯形图编写方法,然后对所编程序内容进行实时判断和检测,以实现AGV 小车PLC 控制程序的编写检查。
根据前面求得的加减速时间、脉冲速率、脉冲数和已分配完成的PLC 各端口功能,即可对AGV 小车的PLC 控制程序进行设计编写。使用传送指令将最高速度、基底速度和加减速时间设定到特殊数据寄存器中;使用相对定位指令将脉冲速率和脉冲数通过输出端口发送给步进驱动器以控制步进电动机的转动。
根据上述方法即可设计编写AGV 小车的PLC控制程序。在编写PLC 梯形图时,本实验系统将实时获取其程序内容并进行判断检测,具体流程如图3 所示。系统通过下拉式菜单实现了梯形图程序各符号单元的选取,在符号单元选定之后,系统将根据其类型弹出相应输入框,以供填写软元件编号和功能指令内容。在输入完毕且点击确定后,系统将通过InputField.text 获取输入文本,并检测其内容是否正确,在判断其内容准确无误后,系统会通过文本或图片将所输内容显示到编程界面之中。在全部程序编写完成且点击提交后,系统将检测所编梯形图是否存在重复和遗漏,判断端口编号是否与之前设计分配时的一致。在判定程序编写正确后,系统将输出相关参数和控制逻辑到后面的控制仿真校验模块中,以便检测所编程序是否能够正确驱动AGV 小车实现启停。
图3 控制程序编写检查功能实现流程Fig.3 Control program compiling and checking function realization process
4 AGV 小车控制仿真避障校验模块
学生在设计编写完成PLC 梯形图后,无法校验其所编程序是否能够准确有效地控制AGV小车进行运动和避障,因此本实验系统需要设计开发可受PLC 程序逻辑控制的AGV 小车运行仿真避障校验模块,以供学生直观理解控制信号在PLC 内部是如何运行的,并校验其所编PLC 程序的有效性和准确性。
4.1 AGV 小车运行控制仿真功能技术实现
针对实现所编PLC 程序控制AGV 小车运行仿真的需求,本实验系统将首先对所编PLC 程序中各软元件的实时状态进行模拟仿真,然后根据其输出端口的脉冲发送状态控制AGV 小车的启停运动,以实现对所编梯形图中控制运行部分的设计正确性校验。
本实验系统通过按钮图片替换来模拟仿真AGV 小车的启动、停止和急停按钮。在点击该按钮时,系统会通过GameObject.SetActive()函数关闭和显示相关图片,以模拟仿真按钮开关和PLC 各软元件的实时状态。与此同时,系统将根据PLC 输出端口实时状态,通过GameObject.transform.Translate()函数控制AGV 小车模型进行相应运动,以模拟仿真其实际运行状态。系统控制仿真及避障校验模块如图4 所示,其通过检测AGV 小车的运动状态和停止位置是否满足生产线要求,从而实现对所编梯形图中控制运行部分的正确性校验。
图4 控制仿真及避障校验模块Fig.4 Control simulation and obstacle avoidance verification module
4.2 AGV 小车运行避障校验功能技术实现
针对实现所编PLC 程序控制AGV 小车自动避障的需求,本实验系统将首先通过碰撞体组件对AGV 小车的避障检测功能进行模拟仿真,然后根据AGV 小车在遇到和移走障碍物后是否能够自动停车和重启运行来对所编PLC 程序控制逻辑进行检查,以实现对所编梯形图中运行避障部分的设计正确性校验。
本实验系统通过给AGV 小车模型和障碍物模型分别添加碰撞体组件来对AGV 小车避障检测功能进行模拟仿真,并通过调整AGV小车碰撞体组件的形状和大小来对超声波传感器的检测范围进行模拟仿真。在AGV 小车碰撞体和障碍物碰撞体发生接触时,系统会触发OnTriggerEnter(Collider other)函数,该函数通过物体标签来判断AGV小车是否检测到障碍物。在判断结果为真后,系统将改变所编PLC 程序中超声波传感器信号端口的状态,并检测所编PLC程序控制逻辑是否能够随之更改脉冲输出端口的状态,使AGV 小车自动停止运行。若AGV 小车能够自动停车,则说明所编梯形图中停车避障部分设计编写正确,否则该部分设计编写即存在错误。
在AGV 小车检测到障碍物且自动停车后,该障碍物可通过鼠标点击来被移走,此时AGV小车碰撞体接触不到障碍物碰撞体,即AGV 小车超声波传感器在其运行路线上没有发现障碍物,则系统将改变所编PLC 程序中超声波传感器信号端口的状态,并检测所编PLC 程序控制逻辑是否能够随之更改脉冲输出端口的状态,使AGV小车重新启动继续运行。若AGV 小车能够继续运动,则说明所编梯形图中重启运行部分设计编写正确,否则该部分设计编写即存在错误,从而实现对所编梯形图中运行避障部分的正确性校验。
5 结语
本文通过Unity 3D 设计开发的基于三菱PLC的AGV 小车控制虚拟仿真实验系统,克服了传统PLC 控制实验中由于场地和设备限制从而无法根据生产线中AGV 小车的控制要求和运动参数对其进行PLC 程序编写及现场校验的问题。学生通过本实验系统可以直观有效地校验其所编PLC控制程序正确与否,对提高其实际PLC 编程控制AGV 小车运行能力具有重要意义。该虚拟仿真实验系统已应用于某PLC 课程实验教学中,学生使用效果良好,编程控制能力提升明显。