EMPlant环境下车间生产管理仿真与优化创新实验doc 44页Word格式.docx
《EMPlant环境下车间生产管理仿真与优化创新实验doc 44页Word格式.docx》由会员分享,可在线阅读,更多相关《EMPlant环境下车间生产管理仿真与优化创新实验doc 44页Word格式.docx(48页珍藏版)》请在冰豆网上搜索。
模拟对象专业化组织方式下,动画显示轴和轴套的装配过程,了解轴和轴套BOM装配编程,统计总的装配时间,分析瓶颈设备。
2.实验输入、输出参数
输入参数:
轴和轴套的加工数量、装配关系、加工时间、加工工艺路线
输出参数:
产出、总的装配时间、设备利用率、瓶颈设备。
●Table_shaft表:
记录轴的整个加工时间;
●Table_Bearing表:
记录轴套的整个加工时间;
●Table_result表:
用来记录装配时间;
●Index:
记录轴的数量;
●index2:
记录轴套的数量。
3.实验步骤
3.1建立起始和结束对象
在工具栏图1-1中点击“Source
”对象和“Drain
”对象,拖入到窗口中;
图1-1工具栏
3.2建立Complathe层和CompMill层
图1-2
如图1-2所示,右键点击“Models”,新建两个层,并重命名为“Complathe”和“CompMill”层。
图1-3
从Models中将“Complathe”和“CompMill”层拖入到窗口中,如图1-3所示。
双击“Complathe”层进入图1-4所示页面,点击
按键,建立Complathe的子层;
先采用两个singleproc,把其分别命名为Lathe_1和Lathe_2,并把它们设置成并联结构,两端用Interface进行联接,点击
按键,进行连线。
图1-4建立Complathe层页面
双击“CompMill”层进入图1-5所示页面,点击
按键,建立CompMill的子层;
先采用两个singleproc,把其分别命名为Mill_1和Mill_2,并把它们设置成并联结构,两端用Interface进行联接,点击
图1-5建立CompMill层页面
3.3建立Drill、Grinder、Bearing_Buffer、Shaft_Buffer、Assembly设备
在左边的类型树中点击
按键,并将其拖入窗口中,重新命名为Drill和Grinder。
按键,将两个缓冲拖入窗口中,重新命名为Bearing_Buffer和Shaft_Buffer。
按键,将一个装配设备拖入窗口中。
对设备之间进行连接。
点击左边类型树中的Complathe层,单击鼠标右键,选择“编辑图标”进入图标编辑页面(图1-6所示),粘贴已选定的图案,完成后点击
按键。
CompMill层、Drill设备、Grinder设备的图标以相同的方法设定。
图1-6图标编辑页面
图标完成后就形成图1-7所示的装配过程仿真页面。
图1-7装配过程仿真页面
3.4建立Table_In、Table_Shaft、Table_Bearing、Table_Result表
点击工具栏(图1-8所示)中“InformationFlow”选项卡中的
按键,将其拖入窗口中,重新命名为Table_in。
图1-8工具栏
双击Table_in对象弹出窗口,单击表窗口Format菜单中的继承格式(InheritFormat)命令,取消该命令的勾选状态,如图1-9所示。
图1-9取消勾选表的继承格式命令
单击表窗口Format菜单中的ColumnIndex级联菜单中的Active和Show命令,如图1-10所示。
然后,在行号为1的行上面会出现1行,在该行中输入自定义列名。
图1-10设置表显示自定义列名
单击自定义列名,使其变为橙色,单击右键,在弹出的快捷菜单中点击Format命令,将弹出行定义对话框,单击行定义对话框中的数据类型(DataType)标签如图1-11所示。
图1-11设置自定义列名所在列的数据类型
表Table_Shaft、Table_Bearing、Table_Result的建立方式与Table_In相同。
表Talbe_in结构
MU
Number
Name
Attribute
.entity.Shaft
1
Shaft
.entity.Bearing
2
Bearing
表table_Shaft结构
Integer1
Time2
Time3
Time4
string
Shaft_Count
Shaft_In_Time
Shaft_Out_Time
Shaft_Machine_Time
表table_Bearing结构
Bearing_Count
Bearing_In_Time
Bearing_Out_Time
Bearing_Machine_Time
表table_Result结构
Count
StartTime
EndTime
MachineTime
双击打开Source,如图1-12所示。
在Attribute选项卡的MUselection下拉式列表框中选择:
顺序循环,把Table_in拖到Table选项中,并选中Formattable选项,此时,将会对table_in直接进行格式化处理,在Controls选项卡的Entrance中选择Source_In。
点击“Apply”和“OK”进行确定。
图1-12Source属性窗口
双击“Table_in”表,如图1-13所示,点击
按键,将其拖入表中第一行的“Object”位置,点击
按键,将其拖入表中第二行的“Object”位置,输入其属性信息。
图1-13Table_in表显示窗口
3.5Variable
的建立
建立Shaft_Count,Shaft_In_Time,Shaft_Out_Time,Shaft_Machine_Time,Bearing_Count,Bearing_In_Time,Bearing_Out_Time,Bearing_Machine_Time,Index,Index2,Product_Count,StartTime,EndTime,MachineTime各变量。
并把Shaft_Count,Bearing_Count,Index,Index2,Product_Count设置为integer类型,其余变量设置为time类型。
3.6建立Method方法
按键,将其拖入窗口中,并重新命名为Source_in、Drill_Out、Grinder_Out、Assembly_Out。
3.6.1Source_In方法
双击“Source_in”,写入方法内容(图1-14所示),完成后点击
按键,进行保存。
图1-14Source_in方法的程序窗口
3.6.2Drill_Out方法
is
do
if@.name="
Shaft"
then
@.move(Grinder);
elseif@.name="
Bearing"
@.move(Assembly);
index2:
=index2+1;
Bearing_Out_Time:
=EventController.SimTime;
Table_Bearing[3,index2]:
=Bearing_Out_Time;
Table_Bearing[4,index2]:
=Table_Bearing[3,index2]-Table_Bearing[2,index2];
Bearing_Machine_Time:
=Bearing_Out_Time-Bearing_In_Time;
end;
end;
3.6.3Grinder_Out方法
Shaft_Out_Time:
Index:
=Index+1;
Table_Shaft[3,Index]:
=Shaft_Out_Time;
Table_Shaft[4,Index]:
=Table_Shaft[3,Index]-Table_Shaft[2,Index];
Shaft_Machine_Time:
=Shaft_Out_Time-Shaft_In_Time;
3.6.4Assembly_Out方法
Product_Count:
=Product_Count+1;
EndTime:
=EventController.simtime;
MachineTime:
=EndTime-Table_Result[2,Product_Count];
Table_Result[3,Product_Count]:
=EndTime;
Table_Result[4,Product_Count]:
=MachineTime;
3.7各控件属性设置
在Lathe_1和Lathe_2的Time选项卡的precessingtime:
框中输入2:
00:
00
图1-15Lathe_1属性窗口图1-16Lathe_2属性窗口
在Mill_1和Mill_2的Time选项卡的precessingtime:
框中输入1:
图1-17Mill_1属性窗口图1-18Mill_2属性窗口
在Drill的Time选项卡的precessingtime:
框中输入30:
图1-19Drill-Times属性窗口
在Grinder的Time选项卡的precessingtime:
图1-20Grinder-Times属性窗口
Drill_Out,Grinder_Out,Assembly_Out的方法应用:
在Drill的Controls选项卡的Exit:
中选择Drill_Out,并选择Front复选框,单击Apply应用。
图1-21Drill-Controls属性窗口
在Grinder的Controls选项卡的Exit:
中选择Grinder_Out,并选择Rear复选框,单击Apply应用并确认。
图1-22Grinder-Controls属性窗口
在Assembly的Con0trols选项卡的Exit:
中选择Assembly_Out,并选择Rear复选框,单击Apply应用并确认。
图1-23Assembly-Controls属性窗口
Assembly的属性设置:
选择Attributes选项卡,Assemblytablewith:
前,MainMUfrompredecessor:
1Assemblymode:
删除MUs,ExitingMU:
主MU,Sequence:
MUs然后服务,并单击Open,在第一行对应的Predecessor中输入2,在Number中输入2,这样便可实现一个轴和两个轴套的装配。
图1-24Assembly-Attributes属性窗口
3.8完成后的仿真图
图1-25完成的仿真图
运行仿真模型时点击图1-25中的
图标,清零时点击
图标。
在模型运行前点击图中的“EventController”控件设定运行的时间。
4.实验报告要求
1)写出轴套装配系统界面的各个构成,系统布局区的组成;
以及每一部分的功能;
2)写出实验目的、实验步骤;
3)将模型的不同参数运行结果进行对比,分析结果。
实验二轴套装配过程仿真(工艺专业化)
1.实验简介
实验一模拟了流水车间(flowshop)对象专业化下生产加工情形,针对工艺专业化jobshop不同的加工工艺情形,实验二进行模拟仿真,动画显示轴和轴套的装配过程,了解轴和轴套BOM装配编程,统计总的装配时间,分析瓶颈设备。
2.实验目的
模拟仿真在给定的工艺路线和生产设备下,生产装配一定数量零件所用的时间。
并且可以得出各台机器的利用率等。
3.输入参数
轴和轴承的生产工艺和工时,产品的个数及投料计划。
某工厂总共需要生产两种零件,产品名称为Shaft,Bearing
每种产品的加工工艺及工时如下:
1车2H
2铣1H
3钻孔0.5H
4磨0.5H
5铣0.5H
4车1H
完成零件加工后,将一个Shaft和两个Bearing装配在一起。
现在车间有车床2台、铣床2台、钻床1台及磨床1台。
现在要求生产10件产品装配,请确定在现有设备资源情况下,生产完成这10件装配需要多久时间。
4.输出参数
生产周期、各台设备利用率及图表显示。
5.实验步骤
5.1建立起始和结束对象
在工具栏图2-1中点击“Source
图2-1工具栏
5.2建立车床、铣床、钻床、磨床及缓冲设备
点击图2-2中的
图标,将其拖入窗口中,分别命名为che1、che2、xi1、xi2、zuan、mo六种设备;
同时点击图2-2中的
图标,将其拖入窗口中,分别命名为Che_buffer、Xi_buffer、Zuan_buffer、Mo_buffer、Shaft_buffer、Bearing_buffer六个缓冲。
并且将六种设备的图标进行编辑。
图2-2类型树
将缓冲和设备进行连线,形成图2-3所示的仿真结构模型。
图2-3仿真结构模型
5.3建立Order、Bearing_gy、Shaft_gy、Table_Shaft、Table_Bearing、Table_machine、Table_Result表
表Order结构
.MUs.Shaft
.MUs.Bearing
表Bearing_gy结构
String1
Gylx
Time
表Shaft_gy结构
表table_machine结构
String0
Time1
WorkingTime
WaitingTime
5.4Variable
建立Shaft_Count,Shaft_In_Time,Shaft_Out_Time,Shaft_Machine_Time,Bearing_Count,Bearing_In_Time,Bearing_Out_Time,Bearing_Machine_Time,Shaft_Index,Bearing_Index2,Product_Count,StartTime,EndTime,MachineTime各变量。
5.5建立Method方法
5.5.1Reset方法
Table_Shaft.delete;
Table_Bearing.delete;
Table_machine.delete;
5.5.2Source_In方法
if@.name="
Shaft_Count:
=Shaft_Count+1;
Shaft_In_Time:
Table_Shaft[1,Shaft_Count]:
=Shaft_Count;
Table_Shaft[2,Shaft_Count]:
=Shaft_In_Time;
Bearing_Count:
=Bearing_Count+1;
Bearing_In_Time:
Table_Bearing[1,Bearing_Count]:
=Bearing_Count;
Table_Bearing[2,Bearing_Count]:
=Bearing_In_Time;
StartTime:
Table_Result[1,Shaft_Count]:
=Shaft_Count;
Table_Result[2,Shaft_Count]:
=StartTime;
5.5.3Mathod方法
@.Current_number:
=@.Current_number+1;
if@.Name="
then@.Current_gylx:
=Shaft_gy["
Gylx"
@.Current_number];
@.Current_time:
Time"
else
@.Current_gylx:
=Bearing_gy["
inspect@.Current_gylx
when"
Che"
@.move(Che_buffer);
Zuan"
then
@.move(Zuan_buffer);
Mo"
@.move(Mo_buffer);
Xi"
@.move(Xi_buffer);
Finish"
if@.Name="
@.move(Shaft_buffer);
else
@.move(Bearing_buffer);
end;
5.5.4Shaft_mathod方法
Shaft_Out_Time:
Shaft_Index:
=Shaft_Index+1;
Table_Shaft[3,Shaft_Index]:
Table_Shaft[4,Shaft_Index]:
=Table_Shaft[3,Shaft_Index]-Table_Shaft[2,Shaft_Index];
5.5.5Bearing_mathod方法
Bearing_Index2:
=Bearing_Index2+1;
Table_Bearing[3,Bearing_Index2]:
Table_Bearing[4,Bearing_Index2]:
=Table_Bearing[3,Bearing_Index2]-Table_Bearing[2,Bearing_Index2];
5.5.6mathod_out方法
5.5.7Endsim方法
Table_machine["
WorkingTime"
"
che1"
]:
=che1.statWorkingTime;
che2"
=che2.statWorkingTime;
Table_mach