1、流水线生产系统WITNESS建模与仿真(一)1. 模型描述 某企业在一条流水线上加工一种产品,该产品所需的零部件(Widget)经过称重(Weigh)、冲洗(Wash)、加工(Produce)和检测(Inspect)四个工序的操作后,形成产品离开系统,生产线布置如下图所示。 生产线上每道工序只有一台设备,零部件在每台设备上加工完毕后,由同其连接的输送链运输至下一设备,最后经过检测后被送出系统。已知该流水线中各个工序的加工时间分别为:称重(weigh)5分钟、冲洗(wash)4分钟、加工(produce)3分钟、检测(inspect)3分钟。每条输送链上有20个零件位,输送链上零件移动节拍为0.
2、5min。零部件的供应是源源不断的,不存在缺货现象。使用WITNESS建立该系统的仿真模型界面如下图所示。流水线生产系统WITNESS仿真模型界面2. 系统分析2.1 元素说明 该流水线系统的组成元素主要为被加工的零部件、四台设备和三条输送线,因此该系统仿真模型的元素如下表所示:被加工的零部件由widget表示,4道工序分别由四台机器表示,C1、C2、C3表示输送链,而最后的实际产 量由变量output统计和可视化显示。表1 模型元素介绍2.2 系统运行时间 仿真运行终止时间为:一天8小时=8*60=480min。3. 模型建立使用WINTESS建立仿真模型的过程一般分为如下三步:Step1:
3、定义元素Step2:元素细节设计Step3:仿真实验和数据分析下面描述如何通过这三步建立流水线生产系统的仿真模型。3.1 定义元素 WITNESS中可以通过四种方式定义元素:(1)通过系统布局区(layout window)定义元素:在系统布局区点击鼠标右键,在弹出菜单中选择Define菜单项,将弹出新建元素对话框,然后进行元素定义。(2)通过元素选择窗口(elements)定义元素 :选择元素选择窗口中的simulation项,单击鼠标右键,在弹出菜单中选择Define菜单项,将弹出新建元素对话框,然后进行元素定义。(3)使用工具栏进行元素的定义:点击工具栏中的 新建元素图标,将弹出新建元素
4、对话框,然后进行元素定义。(4)通过用户元素窗口(designer elements) 元素模板定义元素:在该窗口中,鼠标选中所需建立的元素类型图标,然后在系统布局区中单击鼠标左键进行元素定义。 在此,选择第四种方法来对元素进行定义,该方法直观简单,便于初学者掌握。下面演示该模型的元素定义过程。(1)通过:开始-所有程序-WITNESS 2008-Witness 2008 Manufacture Performance Edition,打开WITNESS软件,软件界面如下图所示。(2)建立一个零部件元素。在 上图WITNESS界面下方的Designer Elements窗口的Basic页中,鼠
5、标单击选中Part元素 图标,使得整个Part图标外围被一个黑色方框圈中如下图所示,然后移动鼠标(注:不要按住鼠标的左、右键拖动鼠标),在Layout Window窗口适当位置单击鼠标左键,将建立一个名称为Part001的元素。(3)建立四个机器 元素。同建立Part001零部件元素过程相似,依次选择Designer Elements窗口的Basic页中的Machine元素图标,然后在Layout Window窗口适当位置单击鼠标左键,分别建立名称为Machine001、Machine002、Machine003和Machine004四个机器元素。(4)建立三个输送链元素。 同建立Part00
6、1零部件元素过程相似,依次选择Designer Elements窗口的Transport页中的Conveyor元素,然后在Layout Window窗口适当位置单击鼠标左键,分别建立名称为Conveyor001、Conveyor002、Conveyor003三个输送链元素。(5) 定义一个整数变量 元素。选择Designer Elements窗口的Variables页中的VInteger元素,然后在Layout Window窗口适当位置单击鼠标左键,建立一个名称为VInteger001的变量。 经过如上元素定义步骤,该模型所需要的所有元素都已经建立了,通过WITNESS软件的菜单File-Sa
7、ve As.,将模型另存为:StreamLine.mod,至此,WITNESS软件界面如下图所示。3.2 元素细节设计 在3.1节完成系统元素定义的模型上尚不能做仿真实验,因为这些元素还没有设置符合流水线系统运行行为的数据和特征,例如机器设备每次的作业时间、机器设备完成某件产品作业后将产品送到何处去、输送线的长度和速度等。在WITNESS建模与仿真过程中,对模型元素的运行行为和特征进行设计称之为对元素的细节设计。元素细节设计是建立仿真模型中最为重要的一个阶段,如果元素的作业时间设计不准确,或者元素的输入/输出规则设计不准确,都将使得仿真模型的运行行为同实际系统不匹配,导致仿真结果不能正确的反映
8、实际系统的运行状态和存在的问题。 进行元素细节设计需要使用元素细节设计对话框,打开细节设计对话框的途径有如下三种: (1)在布局区中对应元素的可视化图标上双击鼠标左键; (2)在布局区中对应元素的可视化图标上单击鼠标右键,在弹出菜单中选择菜单项Detail.; (3)在元素列表窗口的Simulation中对应元素名称上双击鼠标左键; (4)在元素列表窗口的Simulation中对应元素名称上单击鼠标右键,在弹出菜单中选择菜单项Detail.; (5)在布局区选中对应建模元素的可视化图标,然后点击标准工具栏中的图标;3.2.1 零部件元素细节设计 在布局区 双击Part001元素图标, 在弹出对
9、话框中进行相关设计。因为在流水线生产系统中,零部件的数量足够多,只要第一道工序空闲,需要提取零部件进行加工就可以获得零部件,因此设计零部件元素类型为缺省值:被动型(Passive)。然后在Name栏中将 零部件名称由Part001改为Widget,设计完毕后,零部件细节设计对话框的界面如下图。点击确定按钮,完成零部件元素细节设计。3.2.2 变量细节设计 本模型中建立了一个变量VInteger001,用于记录和实时显示流水线产出的零件的数量。对于该变量的细节设计只需要修改其名称即可,方法为在布局区中双击该变量的可视化图标,在弹出的细节设计对话框中将名称修改为output即可。3.2.3 机器细
10、节设计双击Machine001元素,在弹出的机器细节设计对话框中修改如下项目: Name栏中输入“Weigh”,修改Machine001的名称; 在Cycle Time栏中输入5,表示零部件在该台机器上所需的加工时间为5个仿真时间,在模型中,取每个仿真时间单位表示实际系统的1分钟;修改之后的细节设计对话框如下图所示,点击按钮确定,完成称重机器的细节设计。双击Machine002元素图标,在细节设计对话框的Name栏中输入“Wash”,在Cycle Time栏中输入4,点击确认键确定。双击Machine003元素图标,在细节设计对话框的Name栏中输入“Produce”,在Cycle Time栏
11、中输入3,点击确认键确定。双击Machine004元素图标,在细节设计对话框的Name栏中输入“Inspect”,在Cycle Time栏中输入3,点击确认键确定。 本模型还需要实时统计该流水线加工完成的零件数量,并将其记录在变量output中,这需要每当Inspect机器加工完成一个零件,变量output的数量要增加1,实现该功能的步骤为:(1)双击机器Inspect的图标;(2)打开其细节设计对话框,在其对话框中点击按钮:Actions on Finish.;(3)在弹出对话框中写入:output=output+1;(4)点击OK按钮,完成语句的设定;(5)点击确定按钮,完成机器细节设计。
12、设计过程如下图所示。3.2.3 输送链明细设计双击Conveyor001图标,出现下图所示的输送链细节设计对话框。在Name栏中输入C1,在Index Time栏中输入0.5,设定输送链将零件向前移动一个放置位所需要的时间为0.5Min。在Length in Parts栏中输入10,设定移位式输送链(Indexed Queuing)的放置位为10个。 如果没有遇到阻塞等异常情况,零件通过整个输送链将需要耗费5分钟(放置位数量*移位节拍=10*0.5=5)的时间。双击Conveyor002、 Conveyor003的图标。在 弹出的细节设计对话框的Name栏中分别输入C2、C3,修改输送链的名称
13、,其他项目设计与输送链C1的设计相同。3.2.4 输入/输出规则设计 输入/输出规则设计是元素细节设计的一部分,主要是设定零部件在系统各个地点(机器、输送链、缓冲区等)之间的移动规则 。在本模型中,需要设计的输入输出规则主要有加工设备怎样获得被加工的零部件、加工完毕如何将零部件送出该设备,以及output变量怎样累积加工完毕零件的数量。(l) 机器输入/输出规则设计 称重机器Weigh的输入规则设计:模型中假设Widget数量足够多,从来没有出现过缺货,就表示称重机器空闲时都可以获取到零件,像这种情况,一般总是假设零件为被动式的(在Widget的细节设计中,保留了其进入模型的类型为缺省的Pas
14、sive),由主动的机器在空闲时区提取它,即本案例中称重机器的输入规则为提取被动式的零部件。操作步骤为:(1)选中Weigh机器;(2)鼠标单击Element工具栏中的Visual Input Rule设计图标, 出现Input Rule for Weigh对话框,规则文本框的缺省值为Pull ;(3)在规则文本框中输入“PULL Widget out of WORLD”,该规则定义了机器Weigh在空闲时,将从本系统模型的外部(WORLD)拉进一个Widget进行加工;(4)单击OK键确认 ,完成Weigh设备的输入规则设计。该设计过程在界面上的操作步骤和效果参看下图。 称重机器Weigh的
15、输出规则设计:称重机器将零件加工完毕后要送到其后面的输送链C1上,然后由C1将零件送给后续的清洗工序加工。称重工序输出规则为输送到输送链C1,具体设计步骤为:(1)选中Weigh机器;(2)鼠标单击Visual Output Rule图标,将弹出Output Rule for Weigh的设计对话框,此时该对话框中的规则框内仅有缺省输出规则:PUSH ;(3)鼠标单击输送链C1的可视化图标,则在输出设计对话框中形成PUSH C1(1)的输出规则,即称重机器加工完零件后,将零件推到输送链C1(1)的末端;(4)点击 输出规则对话框中的OK按钮,完成称重设备的输出规则设计。该设计过程在界面上的操作
16、步骤和效果参看下图。 清洗机器Wash输入/输出规则设计:Wash机器的输入规则为从输送链C1的前端获取零件Widget,输出规则为加工完毕后送入输送链C2的尾端。其输入规则的屏幕操作过程为:(1)选中Wash机器;(2)鼠标单击Element工具栏中的Visual Input Rule设计图标, 出现Input Rule for Wash对话框;(3)鼠标单击输送链C1的可视化图标,则在输入设计对话框中形成PULL C1(1)的输入规则,即清洗机器空闲时,总是搜索输送链C1(1)最前端的零件放置位,如果该位置有零件,则取过来进行加工;如果该位置没有零件,则该机器将保持等待,直至该位置有零件;
17、(4)点击OK按钮,完成清洗机器输入规则的设定。该设计过程在界面上的操作步骤和效果参看下图。 清洗机器输出规则设计过程为:(1)选中Wash机器;(2)鼠标单击Visual Output Rule图标,将弹出Output Rule for Wash的设计对话框,此时该对话框中的规则框内仅有缺省输出规则:PUSH ;(3)鼠标单击输送链C2的可视化图标,则在输出设计对话框中形成PUSH C2(1)的输出规则,即清洗机器加工完零件后,将零件推到输送链C2(1)的末端;(4)点击 输出规则对话框中的OK按钮,完成清洗设备的输出规则设计。该设计过程在界面上的操作步骤和效果参看称重机器输出规则设计的图示
18、。 加工机器Produce输入/输出规则设计:Produce机器的输入规则为从输送链C2的前端获取零件Widget,输出规则为加工完毕后送入输送链C3的尾端。其输入规则的屏幕操作过程为:(1)选中Produce机器;(2)鼠标单击Element工具栏中的Visual Input Rule设计图标, 出现Input Rule for Produce对话框;(3)鼠标单击输送链C2的可视化图标,则在输入设计对话框中形成PULL C2(1)的输入规则,即加工机器空闲时,总是搜索输送链C2(1)最前端的零件放置位,如果该位置有零件,则取过来进行加工;如果该位置没有零件,则该机器将保持等待,直至该位置有
19、零件;(4)点击OK按钮,完成加工机器输入规则的设定。该设计过程在界面上的操作步骤和效果参看清洗机器输入规则设计的图示。 加工机器输出规则设计过程为:(1)选中Produce机器;(2)鼠标单击Visual Output Rule图标,将弹出Output Rule for Produce的设计对话框,此时该对话框中的规则框内仅有缺省输出规则:PUSH ;(3)鼠标单击输送链C3的可视化图标,则在输出设计对话框中形成PUSH C3(1)的输出规则,即加工机器加工完零件后,将零件推到输送链C3(1)的末端;(4)点击 输出规则对话框中的OK按钮,完成Produce设备的输出规则设计。该设计过程在界
20、面上的操作步骤和效果参看称重机器输出规则设计的图示。 检测机器Inspect输入/输出规则设计:Inspect机器的输入规则为从输送链C3的前端获取零件Widget,输出规则为加工完毕后送出系统。其输入规则的屏幕操作过程为:(1)选中Inspect机器;(2)鼠标单击Element工具栏中的Visual Input Rule设计图标, 出现Input Rule for Inspect对话框;(3)鼠标单击输送链C3的可视化图标,则在输入设计对话框中形成PULL C3(1)的输入规则,即检测机器空闲时,总是搜索输送链C3(1)最前端的零件放置位,如果该位置有零件,则取过来进行加工;如果该位置没有
21、零件,则该机器将保持等待,直至该位置有零件;(4)点击OK按钮,完成检测机器输入规则的设定。该设计过程在界面上的操作步骤和效果参看清洗机器输入规则设计的图示。 检测机器输出规则设计过程为:(1)选中Inspect机器;(2)鼠标单击Visual Output Rule图标,将弹出Output Rule for Inspect的设计对话框,此时该对话框中的规则框内仅有缺省输出规则:PUSH ;(3)鼠标单击输出规则对话框上的Ship按钮,则在输出设计对话框中形成PUSH SHIP的输出规则,即检测机器检测完零件后,将零件发运出去,即零件退出系统;(4)点击输出规则对话框中的OK按钮,完成Insp
22、ect设备的输出规则设计。该设计过程在界面上的操作步骤和效果参看下图。3.3.5 机器颜色标识设计 在模型运行过程中,模型元素会经历多种不同的状态,WITNESS软件为多种元素设计了标准化的颜色标识键,例如黄色通常表示空闲、等待,绿色表示正常工作,红色表示故障、维护维修等。在本模型中,每个机器设备可视化图标的右下角有个正方形图标,该图标的颜色将在仿真运行过程中随着机器状态的变化而呈现不同颜色。为了便于理解不同颜色表示的机器状态,这里先设置机器设备的颜色标识。 设计步骤为:(1)通过WITNESS软件菜单View-Keys-Machine,打开机器标志键设计对话框;(2)在对话框中点击Draw按
23、钮,当光标变成十字尖头的形状,将光标移动到布局区中合适的位置,然后点击鼠标左键,完成标志键的设计。设计过程和设计后的效果如下图。 从上图的机器标识键中可以看出,机器状态显示图标与机器状态之间的关系如下: 白色-机器处于不当班时间; 黄色-等待零件的状态,即机器处于空闲状态; 绿色-机器处于忙的状态,即正常作业状态; 粉红色-机器处于阻塞状态,即机器完成了当前的操作,但是因为其后续输出对象在这个时间不能接受零件的输入,则该机器上面的零件就不能送到其后续工序,机器处于阻塞状态,也就不能进行下一个作业的加工; 兰色-机器处于换模状态,或者等待换模操作工的状态; 红色-机器处于故障维修状态,或者等待故
24、障维修工的状态; 蓝色-机器处于等待操作员工状态,即机器正常作业过程需要员工辅助作业,但是该类员工人数不足,不能准时到达该机器,则该机器的作业处于暂停状态。4. 运行模型4.1 仿真运行工具栏首先介绍运行工具栏以及工具栏中各个按钮的作用。如 下图所示,:按钮reset进行仿真的复位操作,点击该按钮,系统仿真时钟和逻辑型元素(变量、属性、函数)的值将置零;:停止仿真运行的按钮;:step按钮控制模型以步进的方式运行,同时在interact box窗口中显示仿真时刻所发生的事件,便于理解和调试模型;:run按钮控制模型的连续运行,如果没有设定运行时间,模型将一直运行下去,直到按stop按钮,如果设
25、定了运行时间,模型连续运行到终止时刻;:stop run at包括一个按钮和一个输入框,用来设定仿真运行时间,按钮决定仿真是否受到输入框中的输入时间点控制,输入框输入时间点;:walk on/off包括一个按钮和一个滑动条,用来设定仿真连续运行时,仿真运行的速度。4.2. 结果分析 本例中,在运行工具栏run toolbar中按下stop run at按钮,在输入框中输入模型运行终止时间480,然后点击run按钮开始运行模型,直至仿真模型运行至480时刻点自动停止运行。 WITNESS软件 设计了各种类型建模元素的标准统计项目,仿真运行过程中系统将自动收集 这些统计数据,在仿真模型停止后,可以
26、通过打开各种(类)元素的统计报告窗口进行查看,分析系统的运行瓶颈和可能改善点。4.2.1 打开元素统计报告窗口的方法:(1)左键选中所要查询的元素, 点击鼠标右键,在弹出快捷菜单中选择“Statistics.”菜单项,即可弹出该元素的统计报告窗口。(2)左键选中所要查询的元素,单击Reports菜单栏 ,在弹出的下拉菜单中选择“Statistics.”菜单项,即可弹出该元素的统计报告窗口。(3)左键选中所要查询的元素,点击Reports工具栏中的第一个按钮,如图中红色区域,将鼠标放置在该按钮上,会显示“Staticstics Report”文字提示,即可弹出该元素的统计报告窗口。注:如果WIT
27、NESS软件界面没有改工具栏,请通过菜单:View-Toolbars-Reporting打开该工具栏。4.2.2 模型元素统计分析 下面分别打开本模型中四类(Part、 Machine、 Conveyor、 Variable)元素的统计报告窗口,查看各元素的统计指标,并进行相关分析和说明。(1)零部件Widget的统计指标 使用第一种方法打开Widget元素统计报告窗口如下所示: 上图为Part类型零件的标准统计报表,如果统计表格不是上图的竖列,而是横向的,使用图上红色方框区域进行横、竖向转换。Part统计项目含义如下表统计项含义No. Entered该零件进入系统的数量No. Shipped
28、该零件被Ship掉的数量,即出系统的数量No. Scrapped该零件作为废料抛起的数量No. Assembled该零件被组装掉的数量No. Rejected该零件被拒绝的数量W.I.P.当前该零件的库存量Avg W.I.P.在整个仿真时间段内,该零件的平均库存量Avg Time所有零件在模型中平均滞留时间Sigma Rating废品在总体中所占的比率,以Sigma方式表示出来Widget元素统计报表说明: 零件Widget在480分钟这个时刻点由第一道工序Weigh提取进入模型的总数量为97个(No. Entered),通过最后一道工序Inspect检测完成并排出系统的Widget为91个(
29、No. Shipped)。 因为在模型中,零件在各道加工工序上只是做简单的加工处理,没有设置报废和组装作业,所以零件Widget最后的统计中没有作为废料处置的(No. Scrapped),也没有被组装的(No. Assembled)。 因为零件Widget为被动型零件,由机器设备Weigh在空闲时提取进入模型,所以也就没有被拒绝的(No. Rejected)的零件。 在时刻点480,模型中零件的库存量为6,包括在机器上正处于加工的零件和在输送连上处于运输或排队状态的零件。 在整个仿真时间段内,模型中零件的平均库存量Avg W.I.P为平均库存量5.84;总的进入模型的97个零件在模型中平均等待
30、时间Avg Time为28.92分钟。 因为模型中没有设置报废和次品的处理逻辑,所以零件的次品率为0%,折合为6西格玛率也是0。(2)机器元素统计报告 统计4台机器设备的相关数据,如图13所示。从中我们可以看出,weigh机器是最繁忙的,其繁忙率为100%,这跟其主动获取零件有关 ,而其它三台设备的忙率均不是太高。图13 机器统计结果(3)输送链统计报告 统计3条输送线的相关数据,如图14所示。从中我们可以看出,三条输送线上平均零件数量均较低,它们的Avg Size分别为0.99、0.97、0.95,即三条输送线上基本没有零件等待的情况发生。图14输送链统计报表备注: 在进行输入/输出规则设计
31、过程中,使用了输入/输出规则:PULL和PUSH,以及特殊的地点变量WORLD和SHIP,下面对其解释如下:1 Pull规则输入规则Pull将从其它元素中拉动Part进入使用该规则的元素。如果Pull规则指定了几种输入的part,该规则将一次获取这些Part,直至条件满足。注:如果使用Pull规则从输送链上获取Part元素,还可以指定从输送链的第几个位置获取Part元素。语法:PULLfromlocation1, location2 .其中,每个location的详细格式如下:part_name from location_name(index_exp)at position_expwith
32、labor_name #labor_qtyusing PATHpart_name:名型,为模型中part的名称location_name:名型,可以是元素的名称,也可以是模块Module的名称,part将从该元素被拉出。index_exp:整型,当输出Part的Location元素的对象数量多于1时,可以指定Pull规则具体的从该Location的第几个对象中提取Part,例如:如果Location的名称为Buffer001,那么Buffer001(2)表示Buffer001中的第二个对象。如果不指定Index_exp,Pull规则将从该Location元素的所有对象中提取适当的Part,顺序
33、为Location(1),Location(2),.,Location(n).position_exp:整型,当输出Part的Location为输送链时,可以指定Part从输送链的具体位置上被取出,如果不指定该数值,则Part将从输送链的尾部Rear被取出。with labor_name:名型,指定输入规则是否需要Labor元素协助。#labor_qty:整型,需要Labor元素协助时,需要的Labor元素的数量。using PATH:名型,指定从一个Location中提取Part进入本元素,是否需要使用特定的路径,让part沿着该路径搬运至本元素。示例:PULL WIDGET FROM WO
34、RLD在这个例子中,输入规则Pull从World(模型之外)拉动一个Part元素WIDGET进入模型。PULL FROM ASSEMBLY, STORE(1), STORE(2)在这个例子中,PULL规则将从ASSEMBLY, STORE(1), STORE(2)中提取Part,如果ASSEMBLY元素中没有Part了,则从STORE(1)中提取,如果STORE(1)中也没有Part了,则从STORE(2)中提取Part,如果这三个Location中都没有part了,则等待。PULL FROM ASSEMBLY WITH ENGINEER#1 USING PATH在这个例子中,Pull规则需要一个名为ENGINEER的labor从ASSEMBLY元素中提取Part,然后使用合适的路径运送回该规则的作用元素。PULL WIDGET FROM ASSEMBLY(3) WITH ENGINEER#2 USING PATH, WIDGET FROM ASSEMBLY(5)在这个例子中,Pull规则将使用两个工程师ENGINEER从第三个ASSEMBLY中提取Part,然后通过合适的路径运送到规则的作用元素,如果不能从ASSEMBLY(3)中提取part,将直接从第五个ASSEMBLY中提取名为WIDGET的Part。