案例4: 库存控制建模仿真

4.1 流程描述
  • 案例描述

某轮胎组装生产线,需要使用来自三种型号的辊子(A,B,C)材料切片来完成一只轮胎的组装。每生产一只轮胎需要三种型号的辊子切片。其中A型号28片,B型号16片,C型号32片,作业节拍30分钟。

在辊子生产工段有三个不同的设备生产三种辊子A,B,C,辊子各自加工节拍分别是36,42,28分钟,这三台机器,只在各自生产辊子的库存少于4时,开始组织生产,辊子原料无限。

开卷设备将辊子分割成用于装配轮胎的切片,开卷设备3台,节拍20分钟,在轮胎设备缺料时组织生产,其中辊子A可切割112片,辊子B为118片, 辊子C 为105片,三台开卷设备的线边库存容量为均500片。

  • 仿真目标

建立上述轮胎生产过程的仿真模型,运行1天= 24*60 = 1440分钟,分析:车间产能情况。

  1. 加工设备利用率
  2. 产线产能
  • 建模分析

我们可以把本案例的轮胎生产线从流程布局上划分成三个工段::

辊子生产工段:有三台生产不同型号辊子的设备,,每次生产只生产一只辊子,建模时,创建三个“Production”类型的Machine元素:“RollerA”、“RollerB”、“RollerC”表示他们。定义三种Part元素:“PartA”、“PartB”、“PartC”分别代表他们所生产的辊子原料,因为辊子原材料无限,随取随用,因此使用“Passive”类型的“Part”元素代表它们。定义三个Buffer元素:“BufferA”、“BufferB”、“BufferC”代表辊子生产设备的线边库存。辊子生产设备将自己生产出来的辊子堆放到自己的线边库存中,为后道开卷工序取用。并且实时监控自己的线边库存,只在线边库存少于4时,再次开动机器生产,因此需要在辊子生产设备的物料输入逻辑中加入库存控制代码(以RollerA设备为例):

IF Nparts(“MM_Model_BufferA”)  <  4 Then

   Pull_from = array(“MM_Model_PartA”)

END IF

辊子开卷工段:有三台对应型号的辊子开卷设备,每次生产时,将一只辊子开卷后分割出若干用于组装轮胎的橡胶切片,即开卷设备的操作逻辑是输入一个物料,制造出n个零件,因此建模时,创建三个“Create”类型的Machine元素:“CutterA”、“CutterB”、“CutterC”表示他们。创建三个Buffer元素:“bf_CutterA”、“bf_CutterB”、“bf_CutterC”分别表示开卷设备的线边库存。

轮胎生产工段:有一台轮胎组装设备,,每次生产只生产一只轮胎,需要取用三种型号的辊子切片各1片,因此建模时,创建一个“Assembly”类型的Machine元素:“Tyre”代表轮胎组装设备。定义一个Buffer元素“bf_Tyre”代表它的线边库存。

  • 建模步骤
  1. 启动BHTC Simulation仿真系统,点击控制面板上的“新建模型”按钮,开始模型构建过程。
  2. 设施布局:

为提高建模效率,首先使用设计模版,创建出本案例中的轮胎原材料Part元素(分别是PartA、PartB、PartC,并定义它们为“Passive”类型的Part元素)、一台辊子生产设备及其线边库存、一台开卷设备及其线边库存,在屏幕上对它们适当布局,结果如下图所示:

在布局区域中点击选择图中四台设备,单击鼠标右键弹出模型编辑菜单,选择其中的“节点本地复制”按钮,系统弹出提示对话框:“请指定复制对象在图形区中的位置”,点击“确认”按钮,关闭提示框,在布局区域内滑动鼠标,这时被复制出来的四台设备图标跟随鼠标滑动,滑动至合适位置,再次点击鼠标左键完成新复制出来四台设备的布置。

重复上述操作,再次复制出另外四台设备,案例模型的设施布局如下图所示:

BHTC_Simulation系统在对建模元素进行复制时,自动给新复制出的元素命名,为跟本案例对设备的命名保持一致,选中图中复制出的设备元素,单击右键弹出“模型编辑”快捷菜单,选择“重命名”按钮,参照前面建模分析表述,对复制出的设备重新命名,并新建轮胎组装设备与其线边库存元素,如下图所示:

接下来定义由开卷设备切割出的“切片”Part元素和由轮胎组装设备生成的“轮胎”Part元素,为了使仿真过程的动画画面简洁(开卷设备每次开卷要产生100件以上的切片零件),我们不使用自带图标的“设计模版”来创建这些Part元素,而使用“自定义”建模元素的方法,创建不带图标的建模元素,操作如下:鼠标右键单击模型结构树上的“Model”节点,系统弹出“模型编辑”下拉菜单,从中选择“创建模型元素”按钮,系统弹出“模型创建”对话框如下:

点击选择元素类型为“Part”,输入A型号切片零件名称“slice_A”如图所示,点击“确认”完成A型切片Part的定义,重复上述操作,定义B型切片、C型切片以及最后组装成的轮胎Part元素:slice_B,slice_C,Wheel。

因为这些元素还没有定义它们的图标,因此在仿真过程中,没有它们生产过程的动画展示,不能直观的通过动画观看这些零件一个一个的被制造出来,这时可以使用显示变量值的方法,即定义一个产能变量,让这些变量值显示在布局屏幕上,通过变量值的实时变化来了解零件的生产过程。操作如下:鼠标右键单击模型结构树上的“Model”节点,系统弹出“模型编辑”下拉菜单,从中选择“创建模型元素”按钮,系统弹出“模型创建”对话框如下:

点击选择元素类型为“Variable”,变量类型选择“Integer”整型,输入代表A型号切片零件数量的变量名称“N_sliceA”如图所示,点击“确认”完成A型切片数量变量的定义,重复上述操作,定义代表B型切片、C型切片以及最后组装成的轮胎数量的变量元素:N_sliceB,N_sliceC,N_tyre。

接下来定义这些产能变量在布局屏幕上的显示位置,以N_sliceA为例,操作如下:鼠标右键单击模型结构树上的“N_sliceA”节点,系统弹出“模型编辑”下拉菜单,从中选择“图形编辑”后,系统打开“图形编辑”菜单栏,如下图所示:

点击上图中红色箭头所示的“绘制变量”按钮,随后在屏幕布局区域内滑动鼠标,此时产能变量“N_sliceA”出现在屏幕上跟随鼠标移动,将其移动至合适位置(图中红色椭圆中心位置)后,再次点击鼠标左键,完成产能变量在布局区域中的显示定位,最后点击“图形绘制”菜单栏中的按钮,退出图形编辑完成产能变量“N_sliceA”的显示定义操作。重复上述操作,将其他产能变量,也显示到屏幕布局区域,如下图所示:

为了能让这些产能变量,在模型仿真运行中能实时监控到它所代表零件的产能变化,就需要把这些变量的变化逻辑写到模型中去,下面以监控A型切片的产能变量“N_sliceA”为例说明,操作如下:双击屏幕上A型切片的库存“bf_CutterA”图标,打开它的属性对话框,点击上面“Action on Input”动作行为代码按钮,打开Action代码编辑框,录入:

MM_Model_N_sliceA = MM_Model_N_sliceA + 1

完成后点击属性对话框上面“Action on Output”动作行为代码按钮,打开Action代码编辑框,录入:

MM_Model_N_sliceA = MM_Model_N_sliceA – 1

经过上述定义后,在模型的仿真运行阶段,每当有一个A型切片零件进入A型切片的库存时,产能变量“N_sliceA”就会增加1,反之当离开库存时,该变量就会减少1,从而实现实时监控A切片产能变化的目的。

重复上述操作,将产能变量“N_sliceB”、“N_sliceC”、“N_tyre”的变化逻辑也写入到模型中去。

最后,为了在运行仿真时,显示出轮胎组装设备的运行状态,给该设备添加一个饼图元素,操作如下:点击“设计模版”中的“饼图”图标,然后将鼠标移动至轮胎组装设备“Tyre”元素上方位置点击鼠标一次,以确定“饼图”元素的中心点位置,然后滑动鼠标,随着鼠标的滑动屏幕上出现“饼图”元素的“圆形”轮廓,滑动鼠标至轮廓合适大小后再次点击鼠标,完成“饼图”元素在屏幕布局区域的布置。然后再次双击“饼图”图标,打开它的属性对话框,如下图所示:

鼠标点击上图中“选取元素名称”输入框使之获得输入光标焦点,然后在模型结构树上找到轮胎组装设备“Tyre”节点,并双击该节点,在“选取元素名称”输入框中录入轮胎组装设备的全称,点击“确认”后完成“饼图”元素的定义,这样,在模型仿真运行过程中,饼图会实时显示“Tyre”设备的运行状态。

  1. 参数定义:

辊子生产工段的生产设备属性参数定义:双击模型结构树上的RollerA、RollerB、RollerC元素节点,打开它们的属性对话框,输入它们的流程参数。如下

设备 名称输入数量设备类型Pull from 逻辑Push to 逻辑加工时间
RollerA1ProductionIF System_Buffer_Nparts(“BufferA”) < 4 Then     pull_from = array(“PartA”)   END IFpush_to = array(“BufferA”)36
RollerB1ProductionIF System_Buffer_Nparts(“BufferB”) < 4 Then     pull_from = array(“PartB”)   END IFpush_to = array(“BufferB”)42
RollerC1ProductionIF System_Buffer_Nparts(“BufferC”) < 4 Then     pull_from = array(“PartC”)   END IFpush_to = array(“BufferC”)28

辊子生产工段的线边库存设备属性参数定义:双击模型结构树上的BufferA、BufferB、BufferC元素节点,打开它们的属性对话框,输入它们的流程参数。流程描述中并未给出辊子生产设备线边库存容量的描述,从本案例的库存控制逻辑可知,辊子生产设备的线边库存量不会多于4个,因此建模时,设定为50足够使用。如下

Buffer名称零件滞留模式库存容量
BufferADefault50
BufferBDefault50
BufferCDefault50

开卷工段的生产设备属性参数定义:以第一台开卷设备“CutterA”为例说明操作过程如下:双击模型结构树上的CutterA元素节点,打开它的属性对话框,如下图所示:

如图,选择“机器类型”为“Create”,此时属性界面出现红色圆圈所示的“新零件名”输入框,鼠标单击该输入框使之获得输入光标焦点,然后鼠标双击模型结构树上代表A型材料切片零件的“slice_A”节点,将其全称录入该输入框内,并在下面“输出数量”输入框中,输入“112”,即每切割一次A型辊子,就生产出112个“slice_A”零件出来。

重复上述操作,定义另外两台开卷设备“CutterB”、“CutterC”,它们属性参数值如下表所示:

设备 名称输入数量设备类型Pull from 逻辑Push to 逻辑新零件名输出数量加工时间
CutterA1Createpull_from = array(“BufferA”)push_to = array(“bf_CutterA”)slice_A11220
CutterB1Createpull_from = array(“BufferB”)push_to = array(“bf_CutterB”)slice_B11820
CutterC1Createpull_from = array(“BufferC”)push_to = array(“bf_CutterC”)slice_C10520

开卷工段的线边库存设备属性参数定义:双击模型结构树上的bf_CutterA、bf_CutterB、bf_CutterC元素节点,打开它们的属性对话框,输入它们的流程参数。如下:

Buffer名称零件滞留模式库存容量
bf_CutterADefault500
bf_CutterBDefault500
bf_CutterCDefault500

轮胎组装设备属性参数定义:双击模型结构树上的代表轮胎组装设备的“Tyre”元素节点,打开它的属性对话框,如下图所示:

如图,选择“机器类型”为“Assembly”,并点击图中红色箭头所示的复选框,激活“新零件名”输入框后,鼠标单击“新零件名”输入框,使之获得输入光标焦点,然后找到模型结构树上的代表轮胎零件的“Wheel”节点,并双击该节点,将其全称自动录入“新零件名”输入框中。经过这样的定义,模型在仿真时,每经过一次“组装”操作便生成一个新的零件“Wheel”,而进入装配的原材料切片零件,系统将不再保存。继续参考流程描述,输入轮胎组装设备的其它参数,如下标所示:

设备 名称输入数量设备类型Pull from 逻辑Push to 逻辑加工时间
Tyre76Assemblymatch_any = array(“bf_CutterA”, 28, “bf_CutterB”, 16, “bf_CutterC”,32)push_to = array(“Bf_Tyre”)30
  • 仿真运行

在控制面板的“仿真时长”输入框内输入“1440”,点击“运行模型”按钮,仿真过程如下图所示:

模型运行至“1440”分钟后结束仿真,勾选模型结构树上的开卷设备、轮胎组装设备节点“CutterA”、“CutterB”、“CutterC”、“Tyre”,点击报表工具栏上的“机器报表”按钮,得到这些工序设备元素的统计信息如下:

工序名称等待零件时间占比加工零件时间占比输出阻塞时间占比等待人工时间占比复位时间占比故障时间占比已完成加工次数
CutterA8.7522.22269.02700015
CutterB10.55515.27774.16600010
CuterC5.27726.38868.33300018
Tyre4.30595.694000045

由上述统计信息可以看出,轮胎组装一天产能为45个,开卷设备的输出阻塞很严重,设备利用率不高。

观察仿真的动画过程可以看出,在仿真初始时刻,由于辊子生产工段的线边库存为空,因此辊子生产工段的设备一开始就开机生产,随后开卷设备开动,由于开卷设备的线边库存容量有限(500片),很快就暴库,这样开卷设备就因为输出阻塞而一直停在那里不能再次开动,而这时辊子生产工段的生产设备一直在生产,因为开卷设备一直处于阻塞状态,不能开机,这样不断产出的辊子就堆放在辊子生产工段,形成线边库存量,直至辊子的库存量等于4,则生产该型号辊子的生产设备就因为库存控制逻辑(只在线边库存少于4个时,才开始组织生产)而自动停机,直至该型号的开卷设备再次开机消耗掉辊子的线边库存时,该型号辊子的生产设备就会再次开机,整个生产过程呈“波浪间歇式”的自动进行下去,并且辊子的线边库存会一直维持在4的水平。

4.2 案例小结

【小结1】

【小结2】