案例6:车间AGV运输系统仿真
6.1 流程描述
- 案例描述
发动机曲轴生产工段以每小时30件的速度加工曲轴,曲轴的毛坯由铸造车间铸造后放在中转库,车间有一辆AGV负责从中转库运送曲轴毛坯至生产工段。车间的布局及相关设备的作业参数如下:
✤ AGV车辆的停车位距离生产工段35m,距离中转库160m
✤ 中转库距生产工段180m。
✤ AGV空载行驶速度30m/分钟,满载行驶速度8m/分钟
✤ AGV一次运送12件毛坯件,装载一次耗时2.5分钟,卸载一次耗时3.5分钟。
✤ AGV只有在曲轴生产工段毛坯件少于35件时才去中转库取件,否则停靠在停车位。
- 仿真目标
试建立上述曲轴车间生产过程的仿真模型,运行1天= 24*60 = 1440分钟,分析车间AGV系统的配送能力。
- 建模分析
在本案例流程描述中,曲轴生产工段只生产一种零件“曲轴”,没有其他的生产设备,因此我们可以在模型中直接创建一个“Machine”元素代表整个曲轴生产工段。并且“该生产工段以每小时30件的速度加工曲轴”,这说明加工一个曲轴耗时1/30小时,2分钟一个,即是代表“曲轴生产工段”的“Machine”元素的“加工时间”是2分钟。
中转库是存放曲轴毛坯零件的库区,流程中没有给出毛坯零件是如何到达的,这说明中转库中的零件随取随用,一直都有,可以创建一个“Passive”类型的Part元素代表中转库,即虽然流程描述中有“中转库”这一库存对象的存在,但在建模时,可以使用Part元素而非Buffer元素来表示它。在BHTC Simulation系统中,加工设备的取料“Pull from”逻辑不仅可以从模型中的Buffer元素节点中抓取物料,也可直接从Part元素节点抓取物料,如果是“Pull from Buffer”那么模型运行时,只有在Buffer元素实例中有物料,模型执行“Pull from Buffer”才能取得物料,而“Pull from Part”就没有这样的限制,只要后面的加工设备触发执行了“Pull from Part”取料逻辑,就一定可以抓取到Part元素代表的物料。
按照作业流程中对曲轴运输过程的描述,我们需要创建一个“Vehicle”车辆元素代表车间的AGV小车,三个“Track”轨道元素,其中“Track1”代表由中转库到曲轴生产工段之间的路径,“Track2”代表由曲轴生产工段到AGV停车位之间的路径,“Track3”代表由AGV停车位到中转库之间的路径,模型布局如下图所示:

- 建模步骤
- 启动BHTC Simulation仿真系统,点击控制面板上的“新建模型”按钮,开始模型构建过程。
- 设施布局:
✤ 使用设计模版,创建出本案例中的代表曲轴中转库“Passive”类型的Part元素“中转库”、代表车间AGV运输小车的Vehicle元素“AGV”、以及AGV的三段路由路径Track1、Track2、Track3,代表曲轴加工工段Machine元素“Machine1”及其线边输入库存“Buffer1”并在屏幕上对它们适当布局,结果如上图所示。
✤ 继续点击设计模版上的“变量”图标创建一个代表曲轴加工工段线边库存数量的“Variable”变量元素“Num”,并将它显示在库存图标下面。
- 参数定义:
✤ 双击模型结构树上的代表曲轴加工工段的“Machine1”元素节点,打开它的属性对话框,输入它的流程参数。如下
| 设备 名称 | 类型 | Pull from 逻辑 | 加工时间 | Push to 逻辑 |
| Machine1 | Production | pull_from = array(“Buffer1”) | 2 | push_to = array(“Ship”) |
✤ 曲轴加工工段线边库存设备属性参数定义:双击模型结构树上的“Buffer1”元素节点,打开它的属性对话框,输入它的流程参数。如下
| Buffer名称 | 零件滞留模式 | 库存容量 | Action on Input逻辑 | Action on Output逻辑 |
| Buffer1 | Default | 1000 | Num = Num + 1 | Num = Num – 1 |
✤ 双击模型结构树上的“AGV”元素节点,打开它的属性对话框,输入它的流程参数。如下
| 车辆 名称 | 数量 | 容量 | 空载速度 | 满载速度 | Push to 逻辑 |
| AGV | 1 | 12 | 30 | 8 | push_to = array(“Track2”) |
✤ 双击模型结构树上的“Track2”元素节点,打开它的“通用”选项卡属性对话框,输入该选项卡下面的流程参数。如下
| 选项卡名称 | 轨道容量 | 轨道长度 | Push to 逻辑 |
| 通用 | 1 | 40 | IF System_Buffer_Nparts(“Buffer1”) < 35 Then push_to = array(“MM_Model_Track3”) END IF |
Track2轨道就是小车停靠的停车位,模型开始运行时,AGV小车就被“Push to”到Track2轨道上待在轨道的末端,监控曲轴工段的线边库存,如表中的“Push to”逻辑所示,只要线边库存量少于35便被“Push to”下一段轨道,前往中转库取件。
✤ 双击模型结构树上的“Track3”元素节点,打开它的“通用”选项卡属性对话框,输入该选项卡下面的流程参数。如下
| 选项卡名称 | 轨道容量 | 轨道长度 | Push to 逻辑 |
| 通用 | 1 | 160 | push_to = array(“MM_Model_Track1”) |
AGV小车在Track3轨道运行至末端时,即到达曲轴毛坯中转库,需要进行曲轴毛坯件的装载工作,将选项卡切换至“装载”选项卡,定义AGV小车的装载参数如下表所示:
| 选项卡名称 | 装载时间 | 装载数量 | 装载目的地 |
| 装载 | 2.5 | 12 | MM_Model_中转库 |
✤ 双击模型结构树上的“Track1”元素节点,打开它的“通用”选项卡属性对话框,输入该选项卡下面的流程参数。如下
| 选项卡名称 | 轨道容量 | 轨道长度 | Push to 逻辑 |
| 通用 | 1 | 180 | push_to = array(“MM_Model_Track2”) |
AGV小车在Track1轨道运行至末端时,即到达曲轴加工工段,需要将运载的曲轴毛坯件卸载到曲轴工段的线边库存,将选项卡切换至“卸载”选项卡,定义AGV小车的卸载参数如下表所示:
| 选项卡名称 | 卸载时间 | 卸载数量 | 卸载目的地 |
| 卸载 | 3.5 | ALL | MM_Model_Buffer1 |
- 仿真运行
在控制面板的“仿真时长”输入框内输入“1440”,点击“运行模型”按钮,仿真结束后,勾选模型结构树上曲轴加工工段线边库存“Buffer1”节点、及曲轴加工设备“Machine1”节点,点击报表工具栏上相应的按钮,获得它们的统计信息如下:
| 库存名称 | Total in | Total out | Max_Length | Part Type Now In |
| Buffer1 | 480 | 480 | 11 | 0 |
| 设备名称 | 等待零件时间占比 | 加工零件时间占比 | 输出阻塞时间占比 | 等待人工时间占比 | 复位时间占比 | 故障时间占比 | 已完成加工次数 |
| Machine1 | 33.333 | 66.666 | 0 | 0 | 0 | 0 | 480 |
由Buffer1元素统计信息可知,在1天共计进入模型流程的有480个曲轴零件,且最大排队队长11个,即在当前的AGV配送能力下,曲轴加工工段线边库存量从未到达案例初始预计的“35个”水平,曲轴工段线边库存水平低,就会导致曲轴加工设备发生待料等待而停机的情况。进一步考察Machine1元素的统计信息,该设备的忙率仅为66.6%,33.3%的时间出现待料情况。通过仿真结果可知本案例中车间AGV配送系统能力不足。
接下来,我们改变模型系统的配送参数,双击模型结构树上AGV节点,打开它的属性对话框,将它的数量改为“2”,给原来车间增加一辆配送小车,相应地,双击模型结构树上的“Track1”、“Track2”、“Track3”节点将它们属性对话框中的轨道容量也改为“2”,重新运行仿真,结果如下:
| 库存名称 | Total in | Total out | Max_Length | Part Type Now In | Part Type | Part Qty |
| Buffer1 | 744 | 703 | 42 | 1 | 中转库(曲轴) | 41 |
| 设备名称 | 等待零件时间占比 | 加工零件时间占比 | 输出阻塞时间占比 | 等待人工时间占比 | 复位时间占比 | 故障时间占比 | 已完成加工次数 |
| Machine1 | 2.442 | 97.557 | 0 | 0 | 0 | 0 | 702 |
由此看出,给车间增加了1辆AGV小车,显著提高了配送能力,线边库存升至41个,曲轴加工设备也达到了97%的利用率。当然也可以通过其他的办法提高AGV车辆的配送能力,比如提高运行速度、增加运量等等,可通过再次运行不同配置参数下的模型,获得定量化的结果,从而比较不同的系统改善方案。
