案列1:机加工位建模仿真
1.1 流程描述
- 案列描述
某机加工位只有1个设备进行零件加工。当毛坯零件到达工位时,先进入待加工库存位,等待加工。如果设备空闲,则立即从库存位置取一个毛坯进行机加工。加工过程工艺参数描述如下:
- 假设毛坯到达时间间隔服从均值为10小时的负指数分布。
- 设备为每个毛坯加工时间服从[6,14]小时的均匀分布。
- 仿真目标
建立上述零件加工过程的仿真模型,运行100天=2400小时,分析:
- 加工设备利用率;
- 毛坯最大等待队列的最大长度;
- 已完成加工零件的数量
1.2 模型进阶一
在上面案例1的基础上,我们对机加工位的工作流程,进一步增加细节描述如下:
- 流程描述
当毛坯零件到达工位时,发现原库存位已经有4个待加工零件在那里等待加工,则离开系统不进入加工等待队列,通过仿真统计100天内,因现场等待队列过长,而流失加工的毛坯零件数量。
- 建模分析
新增的建模描述,就是要求毛坯一旦被产生出来,在前往下一个目的地时,增加一个逻辑判断,看看机加工位现场已有的库存量,如果已经是4个,即认为当前这个工位等待的队列太长,即离开系统(或者是去其他的工位)。
- 建模步骤
对于Part元素进行流程逻辑定义的就是“Push to”按钮下的代码。因此双击模型结构树上的Part1节点,打开Part1属性对话框,点击页面上的“Push to”按钮,在代码框中,清除掉原来程序代码,用下面代码替代之:
IF System_Buffer_Nparts(“Buffer1”) = 4 Then
push_to = array(“ship”)
else
push_to = array(“Buffer1”)
END IF
- 仿真运行
鼠标点击控制面板区域上的“重置模型”按钮,使仿真时钟归零,点击“运行模型”按钮,系统重新开始运行该模型的仿真运行至“2400”时间单位后结束仿真。然后勾选模型结构树上元素Part1、Buffer1、Machine1图标左侧的复选框,点击报表工具栏上的相应元素的统计报表按钮,得到这三个元素的统计信息如下:
| 零件名称 | Part Entered | Part Rejected | Part in Process | Part shipped |
| Part1 | 401 | 0 | 5 | 396 |
| 库存名称 | Total in | Total out | Max_Length | Part Type Now In | Part Type | Part Qty |
| Buffer1 | 287 | 283 | 4 | 1 | Part1 | 4 |
| 设备名称 | 等待零件时间占比 | 加工零件时间占比 | 输出阻塞时间占比 | 等待人工时间占比 | 复位时间占比 | 故障时间占比 | 已完成加工次数 |
| Machine1 | 0 | 100 | 0 | 0 | 0 | 0 | 282 |
由Part1元素统计信息可知,在100天共计进入模型流程的有287个零件,而离开系统的数量(即part Shipped)为396个,即100天内,因现场等待队列过长,而流失加工的毛坯零件数量为396 – 287 = 109个。进一步观察Machine1元素和Buffer1元素的统计信息可知,进入模型流程的287个零件,在机器设备上已完成282次加工,当前还有1个零件正在机器上加工,还有4个零件待在库存中。
1.3 模型进阶二
接下来,进一步丰富工位生产活动的细节安排,描述如下:
- 流程描述
如果毛坯零件在待加工库存位等待时间超过30小时,则把它纳入到优先加工队列,即机加工位的加工设备一旦空闲,再次进行加工时,它总是先从“优先加工队列”中抓取零件来加工,如果优先加工对列没有待加工的零件,加工设备才从原等待队列中抓取零件加工。试建立模型,仿真统计100天内,进入优先加工队列的零件的数量以及最大队长,并观察加工设备利用率的变化情况。
- 建模分析
新增的建模描述,就是要求有两点,一是将库存中的零件按照其在库存中等待的时间是否超过30小时划分成两组,二是加工设备对零件的加工,要有优先次序之分,优先加工等待时间超出30小时的那一组零件。
- 建模步骤
- 首先鼠标右键点击模型结构树上的“Model”节点,系统弹出“模型编辑”下拉菜单,选择“设置父节点”按钮(即将后面建模工作产生的新增模型节点,置于“Model”父节点之下)。
- 点击“设计模版”区域中的“库存”图标定义一个新的库存元素”Buffer2″,接着在屏幕布局区域内移动鼠标,将它布置在布局区域适合位置。在模型仿真时,将在库存中等待时间超过30小时的零件,放到这个库存中。
- 鼠标双击模型结构树上的“Buffer1”元素节点,打开它的属性对话框,在“零件滞留模式”下拉列表中选择“Max”模式,在“滞留时间阀值”输入框中输入“30”,点击“Exit to”按钮打开流程代码框,输入代码:push_to = array(“Buffer2”)

经过上述设置,进入库存“Buffer1”零件,最多只能滞留30小时,然后就会触发系统执行“Exit to”按钮下的代码,将其推送到库存“Buffer2”中去。
- 接下来鼠标双击模型结构树上的“Machine1”元素节点,打开设备属性对话框,点击属性页面上 的“Pull from”按钮,打开流程逻辑代码编辑窗口,清除掉原来的代码,输入代码:pull_from = array(“Buffer2″,”Buffer1”)
Pull_from语句参数列表中输入源的次序,就是加工设备加工时抓取物料的优先选择次序,即优先选择从库存“Buffer2”中抓取物料加工。
- 仿真运行
鼠标点击控制面板区域上的“重置模型”按钮,使仿真时钟归零,点击“运行模型”按钮,系统重新开始运行该模型的仿真运行至“2400”时间单位后结束仿真。然后勾选模型结构树上元素“Part1”、“Buffer1”、“Buffer2”,、“Machine1”图标左侧的复选框,点击报表工具栏上的相应元素的统计报表按钮,得到这三个元素的统计信息如下:
| 零件名称 | Part Entered | Part Rejected | Part in Process | Part shipped |
| Part1 | 401 | 0 | 41 | 360 |
| 库存名称 | Total in | Total out | Max_Length | Part Type Now In | Part Type | Qty |
| Buffer1 | 323 | 319 | 4 | 1 | Part1 | 4 |
| 库存名称 | Total in | Total out | Max_Length | Part Type Now In | Part Type | Qty |
| Buffer2 | 306 | 270 | 37 | 1 | Part1 | 36 |
| 设备名称 | 等待零件时间占比 | 加工零件时间占比 | 输出阻塞时间占比 | 等待人工时间占比 | 复位时间占比 | 故障时间占比 | 已完成加工次数 |
| Machine1 | 0 | 100 | 0 | 0 | 0 | 0 | 282 |
由Buffer2元素统计信息可知,在100天内,因在库存Buffer1中等待时间过长(超过30小时)而进入Buffer2库存的零件共计306个,经过了对库存中的零件重新分组后,由于增加了Buffer2库存的分流逻辑,减少了库存Buffer1中零件的排队队长,这样就会有更多的零件进入模型流程,从原来的287个增加至323个。
1.4 模型进阶三
接下来,再次丰富工位生产活动的细节安排,描述如下:
- 流程描述
现在给工位上再增加上一台同类型加工设备。试建立模型,仿真统计100天内,并观察加工设备利用率的变化情况以及增加设备后工位整体产能变化的情况。
- 建模分析
所谓新增的同类型加工设备,就是指新增设备与原设备具有相同的物料输入、输出流程逻辑、相同的动作逻辑以及相同的加工循环。建模实现时,就选择原先的加工设备,在“本地复制”出一台设备即可,复制出的设备与原设备具有相同的操作逻辑与性能参数。
- 建模步骤
- 首先单击鼠标左键,勾选模型结构树上的“Machine1”设备元素节点旁边的复选框,选中该节点,然后单击鼠标右键系统弹出“模型编辑”下拉菜单,选择“本地复制”按钮(即将后面复制出来的模型节点与被复制的节点具有相同的父节点)。
- 此时系统提示:“在布局区域指定位置”,点击提示框中的“确定”按钮,将鼠标移至屏幕布局区域,新复制出的“Machine2”设备元素图标跟随鼠标位置移动,直至满意位置,再次点击鼠标完成新复制元素的屏幕布局定位。如下图所示:

- 仿真运行
鼠标点击控制面板区域上的“重置模型”按钮,使仿真时钟归零,点击“运行模型”按钮,系统重新开始运行该模型的仿真运行至“2400”时间单位后结束仿真。然后勾选模型结构树上元素“Part1”、“Buffer1”、“Buffer2”,、“Machine1”、“Machine2”图标左侧的复选框,点击报表工具栏上的相应元素的统计报表按钮,得到这三个元素的统计信息如下:
| 零件名称 | Part Entered | Part Rejected | Part in Process | Part shipped |
| Part1 | 401 | 0 | 2 | 399 |
| 库存名称 | Total in | Total out | Max_Length | Part Type Now In | Part Type | Part Qty |
| Buffer1 | 401 | 401 | 1 | 0 | 0 | 0 |
| 库存名称 | Total in | Total out | Max_Length | Part Type Now In | Part Type | Part Qty |
| Buffer2 | 0 | 0 | 0 | 0 | 0 | 0 |
| 设备名称 | 等待零件时间占比 | 加工零件时间占比 | 输出阻塞时间占比 | 等待人工时间占比 | 复位时间占比 | 故障时间占比 | 已完成加工次数 |
| Machine1 | 29.16 | 70.83 | 0 | 0 | 0 | 0 | 200 |
| 设备名称 | 等待零件时间占比 | 加工零件时间占比 | 输出阻塞时间占比 | 等待人工时间占比 | 复位时间占比 | 故障时间占比 | 已完成加工次数 |
| Machine2 | 29.27 | 70.73 | 0 | 0 | 0 | 0 | 199 |
观察Machine1,Machine2两元素统计信息可知,在100天内,工位的产能总计399个。增加了设备,提高的工位的产能,并且消除了库存Buffer1的排队情况,避免了因库存排队过长而流失零件的情况。
1.5 模型进阶四
接下来,再次丰富工位生产活动的细节安排,描述如下:
- 流程描述
这两台加工设备在工作时间需要1个操作员伺服才能完成加工循环,该人工每天工作两个班次,上午班次工作时间为8:00点到12:00点,中间午休2小时,下午班次工作时间为14:00点到18:00点。试建立模型,仿真统计100天内,并观察工位在增加人工伺服后整体产能即设备利用率的变化情况。
- 建模分析
操作员就是这个机加工位的两台设备的共享资源,他既要伺服Mahcine1设备,也要伺服Machine2设备。对于每台设备来说,只要它的上料工作完成就立即呼叫操作员。系统按照设备呼叫资源的次序依次满足呼叫要求。在BHTC Simulation系统中,使用Labor元素表示共享资源,在本例中需要新建一个Labor元素和它使用的班次Shift元素。
另外给设备定义操作员时,必须指定该操作员工作时的场所,在BHTC Simulation系统中,使用库存“Buffer”元素代表操作员的工作场所,并且员工的工作场所分为两类,一是该Labor元素实例一旦被产生出来,它必须驻留在某个处所,该处所称之为该Labor元素的“营地”,当Labor元素实例应答呼叫前往呼叫设备处的工作场所,是它的“临时营地”,当Labor元素完成伺服工作时,便会驻留在“临时营地”直至再次进入应答循环。
因此,当模型中要使用Labor元素时,一般要结合使用Buffer元素表示它的处所,Shift元素表示它的工作班次。
- 建模步骤
- 首先定义出设备操作员元素。单击鼠标左键,点击“设计模版”区域中的“人工”图标新建一个“Labor1”元素代表操作员,点击“班次”图标新建一个“Shift1”元素代表操作员的工作班次,点击“库存图标”新建一个“Buffer3”元素代表操作员的营地。在屏幕布局区域移动鼠标,将它们布置到合适位置,如下图所示:

为将操作员营地图标与零件库存图标区分开,在屏幕上鼠标选中“Buffer3”图标,单击鼠标右键弹出“模型编辑”快捷菜单,选择“图形编辑”按钮,系统弹出“图形编辑”菜单,如下图所示:

然后点击“绘制设备图标”按钮,系统弹出“设备图标库”操作界面,然后鼠标双击点选适合的图标,作为操作员营地的图标,如下图所示:

接下来鼠标双击“Labor1”元素,打开它的属性对话框,定义元素细节如下:鼠标单击“营地名称”下面的输入框,使之获得输入焦点,然后双击模型结构树上代表Labor元素营地的“Buffer3”元素节点,将其名称录入到“营地名称”输入框。然后点击“班次名称”旁边的下拉箭头,从下拉列表中选择班次元素“Shift1”,如下图所示,最后点击“确认”,完成Labor元素的细节设计。

- 定义班次元素“Shift1”的细节设计:双击模型结构树上的“Shift1”元素节点,打开它的属性对话框,按下图输入其工作班次信息:

点击“确认”按钮完成班次元素的细节设计。
- 接下来以Machine1设备为例,定义加工设备操作员的工作场所(即该设备呼叫到操作员,操作员驻留的场所):单击鼠标左键,点击“设计模版”区域中的“库存”图标新建一个库存元素”Buffer4″,代表Machine1设备的操作员处所。接着在屏幕布局区域内移动鼠标,将它布置在Machine1设备图标附近区域合适位置如下图所示:

为将操作员处所图标与零件库存图标区分开,在屏幕上鼠标选中“Buffer4”图标,单击鼠标右键弹出“模型编辑”快捷菜单,选择“图形编辑”按钮,系统弹出“图形编辑”菜单,如下图所示:

然后点击“绘制设备图标”按钮,系统弹出“设备图标库”操作界面,然后鼠标双击点选适合的图标,作为操作员场所的图标,如下图所示:

点击红色箭头示意的按钮,退出“图形编辑”状态。然后双击模型结构树上的“Machine1”节点,打开它的属性对话框,给它添加操作员工信息,操作如下:点击“人工”旁边的下拉箭头,在下拉列表中选择刚才定义好的“Labor1”元素,在“人工数量”输入框中输入数量“1”,鼠标点击“工作地点”输入框获得光标输入焦点,然后在模型结构树上找到刚才新建的,作为操作员工作场所的“Buffer4”元素节点,并双击该节点,将它的名称录入到“工作地点”输入框,然后点击红色箭头所示的“添加人工”按钮,该操作员名称出现在“人工列表”中,最后点击“确认”按钮完成给“Machine1”设备添加操作员的操作。

重复上述操作,给“Machine2”设备也定义一个操作员处所,并且同样添加“Labor1”元素作为“Machine2”设备的操作员。如下图所示:

- 仿真运行
鼠标点击控制面板区域上的“重置模型”按钮,使仿真时钟归零,点击“运行模型”按钮,系统重新开始运行该模型的仿真运行至“2400”时间单位后结束仿真。然后勾选模型结构树上元素“Part1”、“Buffer1”、“Buffer2”,、“Machine1”、“Machine2”图标左侧的复选框,点击报表工具栏上的相应元素的统计报表按钮,得到这三个元素的统计信息如下:
| 零件名称 | Part Entered | Part Rejected | Part in Process | Part shipped |
| Part1 | 401 | 0 | 123 | 278 |
| 库存名称 | Total in | Total out | Max_Length | Prt Type Now In | Prt Type | Prt Qty |
| Buffer1 | 323 | 319 | 4 | 1 | Part1 | 4 |
| 库存名称 | Total in | Total out | Max_Length | Prt Type Now In | Prt Type | Prt Qty |
| Buffer2 | 310 | 193 | 117 | 1 | Part1 | 117 |
| 设备名称 | 等待零件时间占比 | 加工零件时间占比 | 输出阻塞时间占比 | 等待人工时间占比 | 复位时间占比 | 故障时间占比 | 已完成加工次数 |
| Machine1 | 0.145 | 35.687 | 0 | 64.166 | 0 | 0 | 100 |
| 设备名称 | 等待零件时间占比 | 加工零件时间占比 | 输出阻塞时间占比 | 等待人工时间占比 | 复位时间占比 | 故障时间占比 | 已完成加工次数 |
| Machine2 | 0.291 | 35.416 | 0 | 64.291 | 0 | 0 | 100 |
观察Machine1,Machine2两元素统计信息可知,在100天内,工位的产能从原来的399个下降到200个,设备的利用率也几乎下降了一半,这主要是因为两台设备共享1个操作员,Machine1占用操作员时,Machine2设备只能等待,且操作员还要遵守自己的班次时间进行作息,进一步降低了设备利用率。模型建好后,就很容易通过调整流程中的参数,再次进行仿真,观察模型参数调整后,对模型所仿真的现实生产系统绩效指标的变化:双击模型结构树上“Labor1”操作员节点,打开它的属性对话框,将操作员的数量改为“2”,然后重新运行仿真,观察工位产能及两台设备利用率变化的情况。
1.6 模型进阶五
接下来,将设备操作员人数设置为2,继续丰富工位的细节安排,描述如下:
- 流程描述
这两台加工设备在工作期间,每完成5次加工,需要重新复位一次工作台,复位时间为3.5小时,试建立模型,仿真统计100天内,并观察工位在增加设备的复位细节后整体产能即设备利用率的变化情况。
- 建模分析
增加设备的复位细节,就是用来对加工设备在实际的生产过程中的一系列装夹复位、定期检修、可靠性故障等现象的模拟,使得模型的表现与实际的生产活动一致。
- 建模步骤
- 鼠标双击模型结构树上的设备“Machine1”节点,打开它的属性对话框,在左上角选择“复位”选项卡,如下图所示:

将复位选项卡中的“复位模式”选择为“No of Operation”,即按设备累计的操作次数触发设备的复位操作。在“值表达式”输入框中,输入为“5”,在“复位时间”输入框中输入“3.5”,最后一次点击“增加”、“退出”按钮,完成“Machine1”设备的复位操作细节设计。
- 重复上述操作,设置“Machine2”设备的复位细节。
- 仿真运行
鼠标点击控制面板区域上的“重置模型”按钮,使仿真时钟归零,点击“运行模型”按钮,系统重新开始运行该模型的仿真运行至“2400”时间单位后结束仿真。然后勾选模型结构树上元素“Part1”、 “Machine1”、“Machine2”图标左侧的复选框,点击报表工具栏上的相应元素的统计报表按钮,得到这三个元素的统计信息如下:
| 零件名称 | Part Entered | Part Rejected | Part in Process | Part shipped |
| Part1 | 401 | 0 | 6 | 395 |
| 设备名称 | 等待零件时间占比 | 加工零件时间占比 | 输出阻塞时间占比 | 等待人工时间占比 | 复位时间占比 | 故障时间占比 | 已完成加工次数 |
| Machine1 | 0.166 | 59.062 | 0 | 35.958 | 4.813 | 0 | 166 |
| 设备名称 | 等待零件时间占比 | 加工零件时间占比 | 输出阻塞时间占比 | 等待人工时间占比 | 复位时间占比 | 故障时间占比 | 已完成加工次数 |
| Machine2 | 0.291 | 59.063 | 0 | 35.833 | 4.813 | 0 | 166 |
观察Machine1,Machine2两元素统计信息,出现了设备复位时间占比,有效工作时间减少,影响设备利用率,工位的产能相应减少。
