装配系统Witness建模与仿真
(二)
3.3 元素详细设计
3.3.1 Part元素的详细设计
(1) Top元素详细设计
组装作业流程中,Top零件进入系统最大量为10,进入时间服从[3,4]的均匀分布,每次到达批量为1,该零件到达之后直接送入缓冲区Store的第一个存放区中。
通过如下步骤设计Top零件的细节:
双击Top,进入Top元素详细设计对话框。
选择细节设计对话框左侧的Arrivals->Type为Active,实现零件主动进入系统的;
在Maximum栏中输入10,表示该零件进入系统的最大量为10;
在Inter Arrival栏中输入UNIFORM(3,4,1),表示该零件进入系统服从[3,4]的均匀分布;
在Lot size栏中输入1,表示每次进入系统的批量为1。
点击To…按钮,弹出零件Top的输出规则编辑框,输入“push to store(1)”,表明零件进入系统后直接存放在STORE缓冲区中的第一个存放区中;
点击Actions on Create按钮,弹出零件到达时的处理程序编辑框,输入“Icon=24”,表明该零件在系统中运动时显示的动态图标为图库Picture Gallery中的第24号图标,与静态图标保持相同。
设计完毕,Top零件的详细设计对话框图6所示。
图6 Top元素详细设计
(b) Bottom元素详细设计
组装作业流程中,Bottom零件进入系统最大量为10,进入时间服从[4,6]的均匀分布,每次批量为1,该零件到达之后直接送入缓冲区Store的第二个存放区中。
通过如下步骤设计Bottom零件的细节:
双击Bottom,进入Bottom元素详细设计对话框。
选择细节设计对话框左侧的Arrivals->Type为Active,实现零件主动进入系统的;
在Maximum栏中输入10,表示该零件进入系统的最大量为10;
在Inter Arrival栏中输入UNIFORM(4,6,2),表示该零件进入系统服从[4,6]的均匀分布;
在Lot size栏中输入1,表示每次进入系统的批量为1;
点击To…按钮,弹出零件Bottom的输出规则编辑框,输入“push to store(2)”,表明零件进入系统后直接存放在STORE缓冲区中的第二个存放区中;
点击Actions on Create按钮,弹出零件到达时的处理程序编辑框,输入“Icon=25”,表明该零件在系统中运动时显示的动态图标为图库Picture Gallery中的第25号图标,与静态图标保持相同。
设计完毕,Bottom零件的详细设计对话框图7所示。
图7 Bottom元素详细设计
(c) Screw元素详细设计
组装作业流程中,Screw零件进入系统最大量为20,每次批量为5,第一批在仿真时间20时进入系统,进入时间间隔服从[20,30]的均匀分布,该零件到达之后直接送入缓冲区Store的第三个存放区中。
通过如下步骤设计Screw零件的细节:
双击Screw,进入Screw元素详细设计对话框。
选择细节设计对话框左侧的Arrivals->Type为Active,实现零件主动进入系统的;
在Maximum栏中输入10,表示该零件进入系统的最大量为10;
在Inter Arrival栏中输入UNIFORM(20,30,3),表示该零件进入系统服从[20,30]的均匀分布;
在Lot size栏中输入5,表示每次进入系统的批量为5;
在First Arrival栏中输入20,表示第一批该零件在时刻20进入系统;
点击To…按钮,弹出零件Screw的输出规则编辑框,输入“push to store(3)”,表明零件进入系统后直接存放在STORE缓冲区中的第三个存放区中;
点击Actions on Create按钮,弹出零件到达时的处理程序编辑框,输入“Icon=26”,表明该零件在系统中运动时显示的动态图标为图库Picture Gallery中的第26号图标,与静态图标保持相同。
设计完毕,Screw零件的详细设计对话框图8所示。
图8 Screw元素详细设计
3.3.2 Machine类型元素详细设计
本案例中只有一个组装机器Assembled_machine,该机器需要实现的功能是从存放区STORE中按顺序提取1个Top、1个Bottom和2个Screw,总共四个零件组装成一个完成品Assembled,并将Assembled零件存放于自身的专有缓冲区,每次组装需要的时间为4分钟。
Assembled_machine元素详细设计过程如下:
打开详细设计对话框:双击布局区上的Assembled_machine图标,弹出其详细设计对话框;
设计机器类型:在对话框的机器类型Type栏中选择Assembly选项,表示该机器属于装配型机器,即多个零部件输入,一个产成品输出的类型;
设计输入零件数量:在Input Quantity栏中输入4,表示该装配工艺每次需要4个输入零部件;
设计加工时间:在Cycle Time栏中输入4,表示装配时间为4个时间单位;
设计输入规则:点击From…按钮,在弹出的输入规则编辑框中输入“sequence/wait store(1)#(1), store(2)#(1), store(3)#(2)”,表示当机器处于空闲状态时,在缓冲区中依次取一个Top,一个Bottom,2个Screw进行装配;
设计输出规则:点击To…按钮,输入“buffer(10)”表示加工完成的零件存入容量为10的专用缓冲区中。
设计加工结束事件激发的活动:点击Actions on Finish按钮,输入“change all to assembled”,表示当完成装配任务后,将所有零件转变为一个Assembled装配件;
设计完毕,组装机器细节设计界面如图9所示。
图9 Assembly_machine元素详细设计
注:元素输入/输出规则已经在元素详细设计中的to按钮中和from按钮中设定了,在此不再介绍。
4. 运行模型
按Run工具栏上的连续可视运行按钮,仿真钟运行到110.63,系统停止运行,并弹出对话框“Unable to run
model further (No events
scheduled)”提示没有计划的运行事件,不能够继续运行模型。这是因为计划中的装配10件产品的任务已经完毕了。
通过该模型,我们需要掌握的是分类分区摆放零件的缓冲区如何让设计,组装机器的详细设计以及各个零部件和机器的可视化设计。
5. 操作题
动手建立案例模型,运行仿真,统计和记录如下的数据:
(1)您的模型停止运行的时间是多少?同案例中的停止时间是否相同?
(2)组装机器的忙率是多少?
(3)缓存区的平均存量和存储时间是多少?
(4)修改Top、Bottom和Screw零件的到达间隔的均匀随机函数中的第三项参数,运行仿真模型,看看上述数据有何变化?
备注:SEQUENCE规则
输入规则Sequence将按照特定的顺序提取Part、vehicles 或 carriers。
语法:
SEQUENCE /failure_option location1,
location2 {,location3...}
failure_option:失效模式选项,用于指定当输入规则不能从特定的Location中提取元素时,如何进行操作。具体有三种模式:
WAIT:Sequence规则的作用元素将等待,直至能够输入特定的元素,此时,Sequence顺序规则需要严格的执行。
NEXT:如果前一个Location中的元素提取失败,将使用下一个Location中的元素替代,而且,如果最后一个Location中的元素提取失败,将使用第一个Location中的元素替代。
RESET:当非第一个Location中的元素提取失败时,将使用第一个Location中的元素替代,而且本次输入将都使用第一个Location中的元素作为输入。
每个Location的格式如下:
{element_name}
location_name {(index_exp)} {at position_exp} {with labor_name {#labor_qty}}
{using PATH} {#element_qty}
其中前面的几项含义参见Pull规则。最后一项:
#element_qty:用于指定从该Location中提取的parts,
vehicles或carriers的数量。
示例:
SEQUENCE/WAIT RBUF#4, TBUF#1, VBUF#1
假设该规则为输入规则,它将以此从RBUF中提取4个元素,从TBUF中提取1个元素,从VBUF中提取1个元素。如果该规则不能够从指定的Location中提取Part,它将等待,直至获取了指定数量的Part。
SEQUENCE/NEXT TRACK_A#4, TRACK_B#1,
TRACK_C#1
假设该规则为车辆的输出规则,它将将4个车辆输出到TRACK_A中,再将1个车辆输出到TRACK_B中,再将1个车辆输出到TRACK_C中,如此循环。在该规则中,如果SEQUENCE不能将指定数量的车辆输出到特定的TRACK,它将会将车辆输出到下一个TRACK上。