黄燕燕 杨鑫 曾彦儒
摘 要:以一个六库位立体仓库为研究对象,研究了在实际工作过程中对立体仓库中的工件进行预先排序优化的方法。分析了使用经典排序算法操作太过费时费力的问题,详细介绍了空位排序法,并用工业机器人和PLC控制器分别进行了编程调试验证。
关键词:立体仓库;工件排序;工业机器人;PLC
0 引言
随着我国经济高速发展,现代物流行业和智能制造工厂也在快速发展,仓储作为物流和工厂流水线中的重要环节,对整个系统运作起着至关重要的作用。立体仓库能有效提高空间利用率和出入库能力,是仓储发展的大势所趋,在仓储流程中的使用越来越多[1-4]。在实际使用过程中,对立体仓库中的工件按照一定规则进行预先排序优化,有助于减少后续工作流程的复杂度,提高工作效率。
1 立体仓库介绍
立体仓库的工件排序问题具有一定的复杂性,本文以上下两层共6个仓位的立体仓库为研究对象,研究其工件排序问题。此立体仓库的6个仓位分别安装有光电传感器,用于检测当前是否存放有工件,并用双色指示灯进行指示,绿色表示有料,红色表示无料,如图1如示。
立体仓库中工件的取放操作由工业机器人协助完成,为了使工业机器人存取工件方便,使用电磁阀控制气缸实现工件托盘的推出和缩回,气缸推出、缩回的状态信号由安装在气缸两头的磁性开关检测。这些信号都接入了PLC控制器,由PLC编程实现按要求推出或缩回料仓[5]。
立体仓库中的6个仓位分别编号为1~6号仓位,6个仓位最多能放6个工件,这6个工件分别编码为0001~0006,用二维码标签贴纸将编码粘贴在工件正表面,可用工业相机获取。初始状态下6个仓位可以放满工件,也可以不放满,由于人眼無法自动识别二维码,初始状态下6个工件的顺序是乱的,本文将研究通过排序算法将乱序的工件,按顺序或逆序或工艺要求的其他排序方式进行排序。
另外,由于表示工件编码的二维码标签贴纸粘贴在工件正表面,在用工业相机去检测编码前,必须确保工件是正面朝上摆放的。为了判断工件是正面朝上还是反面朝上,工业机器人的末端工具采用吸盘工具,通过吸盘工具气动回路上的真空表装置返回的信号判定工件是正面朝上还是反面朝上,如果是反面朝上,则在用工业相机进行视觉检测之前,还必须再加上一道对工件进行翻转的工序。
立体仓库的工件编码通过工业相机和视觉检测控制器进行检测识别,并通过视觉控制器上的通信接口传输给工业机器人或PLC,在工业机器人或PLC控制器上编写排序算法,则可实现对立体仓库中的工件按工艺要求进行排序。
整个立体仓库的系统框图如图2所示,立体仓库上安装有用于检测和指示各料仓有无工件的光电开关和双色指示灯,以及用于控制及检测各料仓气缸推出、缩回的电磁阀和磁性开关,这些信号都通过I/O接口接入PLC控制器,由PLC进行监测与控制。
立体仓库中工件的取放操作由安装在工业机器人末端的吸盘工具或夹爪工具完成,为了能与立体仓库上的各信号进行配合工作,工业机器人上安装有I/O板卡,并与PLC的扩展I/O模块之间有输入、输出信号连接,通过两者之间的信号传输,可实现PLC推出、缩回仓库和工业机器人取放料动作之间的配合等操作。
2 立体仓库工件排序方法
本文以上述六仓位立体仓库为研究对象,研究在其基础上进行6个工件按编码排序的问题。
2.1 排序过程中需要用到的数据
除了立体仓库中的6个仓位,为了实现工件的排序,在立体仓库之外还要加一个可放置工件的过渡位,作为排序时的临时工件存放地,给这个过渡位编号为7。工业机器人对7个工位进行求教对点,并将它们存放在一个一维数组Array_Storage[7]中,从而实现对工件的取放动作。
仓库中工件排序的目标编号存在一维数组Array_
Target[6]中,有效编号在1~6之间,值为0表示对应的仓位无工件。如按从小到大顺序进行排放,则Array_Target[6]:={1,2,3,4,5,6};反之,如果按从大到小逆序排放,则Array_
Target[6]:={6,5,4,3,2,1};如果有其他排序规则,修改Array_Target[6]的值即可实现。
仓库中各工件初始编号由工业相机检测得到,并存入一维数组Array_Current[7]中,第7个数据是过渡位当前工件的编号,初始为0,表示空仓。随着工件排序过程的进行,当前工件编号Array_Current[7]中的值会发生变动,直到与目标工件编号Array_Target[6]中的值完全一致。
2.2 经典排序算法
笔者对计算机算法中的十大经典排序算法进行了详细分析,并用经典的冒泡排序法和插入排序法进行了工件排序的程序编写和调试。经典排序算法具有算法简单、编程量少的优点。实际测试下来发现存在频繁使用过渡位导致取放动作过多、操作时间过长的问题,如冒泡排序法,每交换两个相邻的仓位编号,都需要使用到过渡位,最坏的情况下,需要使用15次;而每一次用到过渡位需要工业机器人和PLC配合执行3次工件取放操作,操作过程过于费时,生产效率低下。
另外,经典排序算法主要用于顺序排序,如从小到大或从大到小排序,而对于有特殊要求的非顺序排序方式,实现困难。
2.3 空位排序法
为了解决经典排序算法操作过程太费时费力的问题,本文使用了空位排序法,即排序过程中一直关注空位(如果当前仓库没有空位,则利用过渡位先制造一个空位),查找当前空位的目标工件编号所在的工位号,从中取出工件,从而创建出一个新的空位,再循环查空位和取空位目标工件多次,直到完成排序。图3为空位排序法的一个示例。
3 工业机器人编程实现空位排序法
空位排序法排序过程中一直关注空位,先查找当前空仓在Array_Target[6]数组中对应的目标工件编号,再查找空仓对应目标编号在当前工件编号Array_Current[7]中所在的仓位号,从而将当前空仓对应的目标工件取放过来。
在ABB工业机器人上,首先利用TCP/IP协议,通过Socket通信的方法,实现工业机器人与工业相机之间的通信,从而获得工件上的标签编码,并存储在工业机器人自身的存储器中(存在当前工件编号数组Array_Current[7]中),以备后续程序调用。
在ABB工业机器人上采用RAPID程序编写空位排序算法,流程图如图4所示。
如果当前6个仓位全满没有空位,则将第一个未排序仓位上的轮毂先取放至过渡位,制造出一个空位来。制造空仓的例行程序如下:
PROC R_MakeVacancy()
FOR i FROM 1 TO 7 DO
IF Array_Current{i} <> Array_Target{i} THEN
NumStorage:= i;
GOTO Work;
ENDIF
ENDFOR
Work:
R_GetMaterial NumStorage; !取料
R_PutMaterial 7; !放料
Array_ Current {7} := Array_ Current { Num_Storage };
Array_ Current { NumStorage } := 0;
ENDPROC
在当前仓库中有空仓的情况下,需要再在Array_Target[6]数组中查找当前空仓所对应的目标工件编号,查找空仓对应的目标工件编号的例行程序如下:
FUNC num R_FindTarget(num NumVacancy)
FOR i FROM 1 TO 7 DO
IF Array_Current{i}=Array_Target{NumVacancy}THEN
RETURN i;
ENDIF
ENDFOR
RETURN 0;
ENDFUNC
4 PLC編程实现空位排序法
工业相机的视觉检测控制器可通过S7通信方式将二维码编码信息传送给西门子PLC控制器,PLC得到初始编码数据之后,使用SCL语言进行编程,其思路基本与使用ABB工业机器人编程一致,亦可实现空位排序法的操作。
5 结语
本文详细介绍了一个具有6个仓位的立体仓库的基本结构,以此立体仓库为研究对象,结合视觉检测和网络通信功能,研究了对立体仓库的工件按编码进行排序的方法,并在工业机器人及PLC控制器上进行了编程实现和验证,为立体仓库工件排序问题提出了一种具体的解决方案。
[参考文献]
[1] 杨利,陈柳松,谢永超.基于PLC和工业机器人的智能仓库系统设计[J].自动化技术与应用,2021,40(7):72-75.
[2] 闫磊,王萌,李任鹏.基于S7-1200 PLC的小型立体仓库控制系统设计[J].制造业自动化,2020,42(11):11-13.
[3] 周超,刘传琦.基于PLC的智能货架仓储的设计[J].信息技术与信息化,2019(7):69-71.
[4] 黄海燕.基于S7-1200 PLC立体仓库码垛机控制系统设计[J].机电工程技术,2019,48(5):37-41.
[5] 许怡赦,罗建辉,李铭贵.智能制造单元系统集成应用实训平台的设计与实现[J].实验技术与管理,2020,37(8):227-232.
收稿日期:2021-08-13
作者简介:黄燕燕(1987—),女,江西赣州人,工程师,讲师,研究方向:机器人、集成系统。