仿真课设报告

仿真课设报告
仿真课设报告

仿真课程设计报告

题目: 柔性生产线仿真案例

班级:物流

姓名:

学号:

指导教师:

2015年9月23日

目录

一、课程设计目的 (3)

二、课程设计内容 (3)

三、设计步骤 (3)

3.1案例分析 (3)

3.1.1案例说明 (3)

3.1.2建模步骤 (5)

3.1.3主要技术设计 (5)

3.2模型搭建 (6)

3.2.1基础空间总体布局 (6)

3.2.2Track设计 (6)

3.2.3加工设备的设计 (7)

3.2.4工件和AGV的属性设计 (9)

3.2.5表的设计 (10)

3.2.6工件生成器和消灭器的设计 (12)

3.2.7Method和Variable的设计 (12)

3.3仿真实现 (13)

3.3.1工件加工流程及时间设计 (13)

3.3.2任务队列设计 (13)

3.3.3小车的运行规则设计 (14)

3.3.4其它控制方法 (17)

四、仿真分析 (20)

4.1设备利用率 (20)

4.2轨道利用率 (21)

4.3加工总时间 (22)

五、模型优化 (22)

5.1订单投产优化 (22)

5.2小车优化 (23)

5.3其它优化 (26)

六、课设总结 (29)

一、课程设计目的

本课程设计是与物流工程专业教学配套的实践环节之一,结合《现代生产管理》、《设施布置与规划》、《离散系统建模与仿真》等课程的具体教学知识点开展。在完成以上课堂教学的基础上,进行一次全面的实操性锻炼。设计采用企业的实际案例数据,要求完成生产线物流仿真建模和生产线物流优化方案设计两大方面的实际设计内容。

通过本环节的设计锻炼,我们可以加深对本课程理论与方法的掌握,同时具备分析和解决生产运作系统问题的能力,改变传统的理论教学与生产实际脱节的现象。

二、课程设计内容

以某企业柔性制造系统(FMS)为对象,按该企业的生产实际资料为设计依据。对该柔性制造系统进行建模和仿真,通过模拟该制造系统的物流状况,寻找优化的物流方案进行产能平衡,并针对优化后的方案再次进行仿真,对比两个仿真结果在交货期要求,设备利用率等方面的不同,并制定该柔性制造系统生产作业计划。

三、设计步骤

3.1案例分析

3.1.1案例说明

1.柔性制造系统状况:

某企业柔性制造系统共有5台加工中心,定义加工中心名称分别为CNC_1、CNC_2、CNC_3、CNC_4、CNC_5。该制造系统内有一辆AGV小车,运行速度为1米/秒,可控制其实现不同的运送策略。每台设备入口和出口前有容量为4的缓冲,工件在由设备完成加工前后必须经过入口缓冲和出口缓冲,每台设备由一工人负

责工件的搬运和安装,AGV小车运送工件到达后由工人负责将工件搬至设备入口缓冲,待到设备空闲后再由该工人将工件装卡在设备上,设备加工完毕由工人将工件移出至出口缓冲,待AGV小车到来后再由工人将工件搬运至出口缓冲。工人由AGV搬运工件至缓冲时间和由缓冲搬运工件至AGV时间统一为固定时间10秒,工人在设备将工件装卡和卸出的时间统一为固定时间30秒。工件按一定顺序进入柔性制造系统,进入系统后由AGV小车负责将其搬运到第一道工序,在系统入口有工人负责将工件搬运至到达入口的AGV小车,搬运时间固定为10秒,在加工完第一道工序后由AGV小车搬运至下道工序,执行同样的操作,在工件所有工序都加工完后AGV小车将工件搬运至柔性制造系统出口,出口由工人负责将工件由AGV 小车搬走,时间统一为固定时间10秒。该柔性制造系统可能会根据需要再购买多辆AGV小车,所有小车均统一控制,执行同样的搬运策略柔性制造系统工件物流过程示意图如下:

图 1

柔性制造系统三维布局示意图如下:

图 2

该柔性制造系统布局示意图如下:

图 3

3.1.2建模步骤

●收集建模所需资料;

●采用Em-plant对柔性制造系统进行仿真建模;

●仿真优化

3.1.3主要技术设计

传感器、任务队列、冲突的化解

3.2模型搭建

3.2.1基础空间总体布局

总体布局如下:

图 4 3.2.2Track设计

Track长度设计如下:

图 5

传感器设计如下:

图 6 3.2.3加工设备的设计

Buffer的设置:

设备入口容量为4,处理时间为0:

图7

图8

另外,作为出口的Buffer的时间-处理时间这一栏里,加入30s的卸出时间。

图9

3.2.4工件和AGV的属性设计

工件设计:

图10

其中,人为定义的step属性用于说明工件的加工流程。

AGV设计:

图11

图82

其中,curpos表示小车在Track上的当前位置,des表示小车的目的地。

3.2.5表的设计

1)工件流程及加工时间表的设计:

Part1:

图13

Part2:

图14

Part3:

图15

每个表的第一列为工件的加工步骤,由工件的step属性来控制;第二列为工件的加工流程设备号;第三列为工件在相应的加工设备上的加工时间。

2)位置表:

图16

位置表主要用来说明缓冲设备与小车在Track上的curpos(当前位置)的对应关系。

3)工件生成表的设计

工件生成表用来控制Source产生工件的规则。

本模型建立了两个工件生成表 Sourceproduct1和Sourceproduct2. Sourceproduct1表为按时间顺序组织生产,表格如下:

图17

Sourceproduct2表为按次序循环生产,表格如下:

图18

3.2.6工件生成器和消灭器的设计

Source的设置:

图19

3.2.7Method和Variable的设计

Variable的命名:

图20

分别用来记录总工件数量和工件Part1、Part2、Part3的数量。

3.3仿真实现

3.3.1工件加工流程及时间设计

Setparttime的设置:

图21

3.3.2任务队列设计

图22

3.3.3小车的运行规则设计

小车当前位置变化程序:

图23 触发传感器的运送车的控制流程:

图24 小车上有工件的程序:

if @.occupied then

str:=@https://www.360docs.net/doc/3911108591.html,;

obj:=str_to_obj(str);

@.des:=obj[2,@.cont.step];

if @.des>@.curpos then

@.backwards:=false;

elseif @.des<@.curpos then

@.backwards:=true;

elseif @.des=@.curpos then

i:=num_to_str(@.des);

str:="n"+i;

str1:=str+"1";

obj:=str_to_obj(str1);

@.cont.move(obj);

@.stop;

wait 10;

@.continue;

if task.empty then

@.backwards:=true;

else

str:=task[2,1];

for j:=1 to Position.yDim loop

if str=position[2,j] then

@.des:=position[1,j];

end;

next;

if @.des>@.curpos then

@.backwards:=false;

elseif @.des<@.curpos then

@.backwards:=true;

elseif @.des=@.curpos then

i:=num_to_str(@.des);

str:="n"+i;

str1:=str+"2";

obj:=str_to_obj(str1);

obj.cont.move(@);

task.delete({1,1}..{2,1});

@.stop;

wait 10;

@.continue;

str:=@https://www.360docs.net/doc/3911108591.html,;

obj:=str_to_obj(str);

@.des:=obj[2,@.cont.step];

if @.des>@.curpos then

@.backwards:=false;

elseif @.des<@.curpos then

@.backwards:=true;

end;

end;

end;

end;

小车上没有工件的程序:

else

if task.empty then

@.backwards:=true;

else

str:=task[2,1];

for j:=1 to Position.yDim loop

if str=position[2,j] then

@.des:=position[1,j];

end;

next;

if @.des>@.curpos then

@.backwards:=false;

elseif @.des<@.curpos then

@.backwards:=true;

elseif @.des=@.curpos then

i:=num_to_str(@.des);

str1:="n"+i;

str2:=str1+"2";

obj:=str_to_obj(str2);

obj.cont.move(@);

task.delete({1,1}..{2,1});

@.stop;

wait 10;

@.continue;

str:=@https://www.360docs.net/doc/3911108591.html,;

obj:=str_to_obj(str);

@.des:=obj[2,@.cont.step];

if @.des>@.curpos then

@.backwards:=false;

elseif @.des<@.curpos then

@.backwards:=true;

end;

end;

end;

end;

3.3.4其它控制方法

1)Source处的控制方法:

Sourcecontrol的程序:

图25 2)加工工件统计方法statis:

图26 3)初始化方法init:

图27

4)重置方法reset:

图28

5)死锁解决方法:

在methodsensors方法中加一个waituntil语句,当设备入口缓冲小于其容量4时,小车将车上所载工件卸到设备入口缓冲,代码如下:

图29

四、仿真分析

4.1设备利用率

设备利用率设置:

图30

相关主题
相关文档
最新文档