引自:《生产系统建模与仿真》(作者:朱海平)
「 1. 生产流程描述 」
某全自动化加工生产线系统生产一种工件,该工件的生产流程如图1所示。首先,根据定时配送指令,通过AGV系统将存放在立体仓库中的工件毛坯件运输到生产线入口缓冲区,并由线头机器人上载到生产线。毛坯件随即在生产线上流转,经过三道工序加工后变为成品件。其中,工序1在设备M001、M002和M003中任一台上完成,加工时长45s,工序2在设备M004、M005和M006中任一台上完成,加工时长55s,工序3在设备M007、M008、M009和M010中任一台上完成,加工时长1min15s。如果3道工序全部完成,该成品工件由线尾机器人下载到生产线出口缓冲区,并由AGV系统运回立体仓库,如果工件未加工完成,则再次上载到生产线上并进行新一轮流转,直到所有工序加工完毕。
![pYYBAGPjBVyAFIMPAABBJAap5E4696.png](https://file.elecfans.com/web2/M00/8F/91/pYYBAGPjBVyAFIMPAABBJAap5E4696.png)
图1 工件生产流程
「 2. 仿真建模 」
基于FactorySimulation建立仿真模型,如图2所示。该生产线采用U型布局,总长54m,运转速度0.5m/s。在生产线上布置了10个工位点,每个工位对应一个顶升装置(B001-B010)和一台加工设备(M001-M010),如果顶升装置中有工件,该工位就不能再接纳工件。一旦某设备空闲,并且顶升装置中有工件在等待,则呼叫对应的RGV,如果RGV空闲,则移动机器人将顶升装置中的工件移至设备上加工。系统配备了3台RGV,其中RGV1为M001、M002、M009、M010这4台相邻设备服务,RGV2为M003、M004、M007、M008这4台相邻设备服务,RGV3为M005和M006这2台相邻设备服务,3台RGV轨道长度分别为7m、5.8m和3.2m,机器人移动速度为1m/s,上下料的时间均为2s。
![poYBAGPjBWyAQSGHAAG8Y8FcGaU990.png](https://file.elecfans.com/web2/M00/8F/0C/poYBAGPjBWyAQSGHAAG8Y8FcGaU990.png)
图2 仿真模型
图2中,模型区左边是立体仓库和AGV系统,AGV系统用于毛坯件和成品件运输。其中,毛坯件从P01站点(立体仓库的出入库位置)运送到P02站点(生产线入口缓存处),成品件从P03站点(成品待配送缓存处)运送到P01站点,AGV路径一周总长40.45m,AGV承载量是10,即每台AGV一次运输10个毛坯或成品件,AGV运输速度0.5m/s,AGV数量为2台,AGV上下料时间均为15s。
仿真建模时,需要定义两个重要的脚本方法:
(1)仿真运行中,工件在生产线上流转,到达每一个工位点时要进行判断,决定是否将工件移至该工位顶升装置内,该判断逻辑通过stationSensor脚本方法来实现,如下:
boolean flag = false;if(MUType.equals("毛坯")) {//毛坯件if(station.no.equals("1") && %{B001}%.allowEntrance(@)) { @.move("B001");flag = true;} else if(station.no.equals("2") && %{B002}%.allowEntrance(@)) { @.move("B002");flag = true;} else if(station.no.equals("3") && %{B003}%.allowEntrance(@)) { @.move("B003");flag = true;}//工件已送至到B001或B002或B003,则开始工序1if(flag) {@.MUType = "工序1";@.MUColor = Color.yellow;return;}} else if(MUType.equals("工序1")) {//工序1if(station.no.equals("4") && %{B004}%.allowEntrance(@)) { @.move("B004");flag = true;} else if(station.no.equals("5") && %{B005}%.allowEntrance(@)) { @.move("B005");flag = true;} else if(station.no.equals("6") && %{B006}%.allowEntrance(@)) { @.move("B006");flag = true;}//工件已送至到B004或B005或B006,则开始工序2if(flag) {@.MUType = "工序2";@.MUColor = Color.blue;return;}} else if(MUType.equals("工序2")) {//工序2if(station.no.equals("7") && %{B007}%.allowEntrance(@)) { @.move("B007");flag = true;} else if(station.no.equals("8") && %{B008}%.allowEntrance(@)) { @.move("B008");flag = true;} else if(station.no.equals("9") && %{B009}%.allowEntrance(@)) { @.move("B009");flag = true;} else if(station.no.equals("10") && %{B010}%.allowEntrance(@)) { @.move("B010");flag = true;}//工件已送至到B007或B008或B009或B010,则加工成成品if(flag) {@.MUType = "成品";@.MUColor = Color.green;return;}}//已到达线尾,如果是成品,则运送到生产线出口,否则送到生产线入口,继续加工if(station.getNo().equals("999")) {if(@.MUType.equals("成品"))%{线尾机器人}%.call("生产线", "生产线出口", @);else%{线尾机器人}%.call("生产线", "生产线入口", @);}
(2)为了实现定时将毛坯件从立体仓库出库并通过AGV配送到生产线入口,定义触发器及定时触发方法。触发器如图3所示。从0时刻开始,每隔4min触发一次,共触发100次,每次自动执行pickAndDelivery方法。
![pYYBAGPjBYyAVqo6AADEO2RmXQQ193.png](https://file.elecfans.com/web2/M00/8F/91/pYYBAGPjBYyAVqo6AADEO2RmXQQ193.png)
图4 用于毛坯投入的定时触发器
pickAndDelivery方法内容如下:
//从立体仓库分拣出10个毛坯件ListmuList = %{立体仓库}%.pick("毛坯|10", 0);//呼叫AGV,将毛坯件从立库运输到生产线入口,一次运输10个,上载时间和卸载时间均为15秒%{AGV系统}%.call("P01", "P02", "立体仓库", "生产线入口", muList, null, 15*1000, 15*1000);
「
3. 仿真分析
」
首先分析生产线的产能和瓶颈。假定每4min从立体仓库向生产线配送一个批次毛坯件(10个),共配送100次,合计生产1000个工件,通过仿真来观察生产线的单位时间产量变化。
图5显示了产量随时间变化的曲线,可以看出,总产量随时间线性递增,每小时产量则逐渐趋于稳定,稳定在155~160个/h。设备利用率如图6所示,可以看出线头和线尾机器人的工作时长占比均为81.42%,比较高,而3道加工工序各有一台加工设备(M003、M006和M010)利用率不高,说明加工设备的能力富裕,机器人则可能是瓶颈。
![pYYBAGPjBeKAVhOUAACcYH8u0kI813.png](https://file.elecfans.com/web2/M00/8F/91/pYYBAGPjBeKAVhOUAACcYH8u0kI813.png)
图5 产量变化图
![poYBAGPjBe6ADCDgAADcSkxZ6HE002.png](https://file.elecfans.com/web2/M00/8F/0C/poYBAGPjBe6ADCDgAADcSkxZ6HE002.png)
图6 设备利用率
根据定性分析,一方面,缩短配送周期,同时提升线头和线尾机器人的处理速度,应该有助于提升产能;另一方面,如果配送周期过短,由于生产线处理速度有限,可能造成毛坯件在生产线入口处积压,或者在生产线上反复流转,导致工件通过时长变长、在制品增多,因此,可能存在最佳的配送周期,为了验证这一点,设计如下仿真试验:
(1)毛坯配送的时间间隔共7个水平值:1:30、2:00、2:30、3:00、3:30、4:00、4:30。
(2)线头/线尾机器人处理时长共2个水平值:15s和20s。
(3)试验的输出参数:1000个工件加工的完成时间、每个工件的平均通过时间。
采用全因子试验,共试验14次,试验结果如表1所示。可以看出,配送间隔时间加长,加工完成时间基本呈增长趋势,但平均通过时间呈下降趋势。试验5和试验12的综合效果是不错的,因此,设定配送时间为3:30比较合适,机器人处理时长从15s变化到20s,对两个输出参数的影响不大。
表1 仿真结果
试验 次数 |
毛坯配送的 时间间隔 |
线头和线尾机器人处理时长/s |
1000个工件加工的完成时间 |
每个工件的平均通过时间 |
1 |
1:30 |
15 |
6:3:29 |
1:52:53 |
2 |
2:00 |
15 |
6:8:56 |
1:32:2 |
3 |
2:30 |
15 |
6:10:33 |
1:7:46 |
4 |
3:00 |
15 |
6:8:19 |
42:25 |
5 |
3:30 |
15 |
6:17:55 |
23:37 |
6 |
4:00 |
15 |
6:50:43 |
14:16 |
7 |
4:30 |
15 |
7:38:26 |
12:48 |
8 |
1:30 |
20 |
6:28:8 |
2:4:56 |
9 |
2:00 |
20 |
6:27:25 |
1:41:10 |
10 |
2:30 |
20 |
6:31:25 |
1:17:19 |
11 |
3:00 |
20 |
6:31:7 |
51:10 |
12 |
3:30 |
20 |
6:24:8 |
25:53 |
13 |
4:00 |
20 |
6:51:1 |
14:54 |
14 |
4:30 |
20 |
7:40:24 |
14:46 |
「 4. 三维仿真动画 」
FacotrySimulation内置了三维动画引擎,可以浏览仿真过程的三维车间场景,如图7所示。
![pYYBAGPjBgOALObwAAEgMF1j6w8189.png](https://file.elecfans.com/web2/M00/8F/91/pYYBAGPjBgOALObwAAEgMF1j6w8189.png)
图7 仿真过程的三维动画
评论