生产系统仿真——Plant Simulation应用教程(txt+pdf+epub+mobi电子书下载)


发布时间:2020-06-01 13:17:32

点击下载

作者:周金平

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

生产系统仿真——Plant Simulation应用教程

生产系统仿真——Plant Simulation应用教程试读:

前言

数字化制造是指制造技术、计算机技术、网络技术与管理科学的交叉、融合、发展与应用的一种先进制造技术,也是制造企业、制造系统与生产过程、生产系统不断实现数字化的必然趋势。国内外的汽车、航空航天等高端制造业越来越多地采用数字化制造技术来重新制定企业未来发展战略。通过数字化制造系统,制造工程师可以在一个虚拟的环境中创建某个制造流程的完整定义,包括加工、装配线、加工中心、设施布局、人机工程学、资源等。在制造产品前,出于重用现有知识和优化流程的考虑,可以对产品的生产流程进行仿真优化、最佳工厂布局设计等。因此,生产系统仿真作为数字化制造核心领域之一,越来越受到高校、研究机构和企业的重视。

生产系统属于典型的离散事件动态系统,生产系统仿真建模方法大体上分为形式化建模(排队网络、Petri网方法等)和非形式化建模(活动循环图、流程图和面向对象的方法)两类。面向对象的方法来源于面向对象的编程,强调运用人们日常的逻辑思维方法和原则,包括抽象、分类、继承、封装等。目前,很多系统仿真软件均采用了面向对象的方法来建立仿真模型,Plant Simulation就是典型的面向对象的仿真软件。

作为数字化制造领域领先的系统软件,Siemens(西门子)公司的Tecnomatix系列软件在国内的高端制造业应用非常广泛,在高校的教学科研中也得到了普遍的使用。生产系统仿真软件Plant Simulation(原eM-Plant软件)的应用除了在高端制造业外,在离散制造业尤其是中小型企业也得到了越来越广泛的应用,通过国内各专业学术期刊科研论文的检索就可以发现,国内高校和科研院所应用Plant Simulation作为仿真软件平台的不计其数。

2005年一次偶然的机会接触到Tecnomatix的eM-Plant 7.0版物流系统仿真软件,通过台湾的一些高校网站找到了一些简单的中文资料,就开始了自学eM-Plant的过程,并以ID“老马多拉”在ITPUB论坛上介绍该软件的使用。也就是从这一年开始,我校工业工程专业抛开了其他的仿真软件,选用eM-Plant作为“工业工程基础”、“系统仿真”、“试验设计”、“设施规划与物流分析”和“生产计划与控制”等课程的仿真试验软件。2008年,Siemens公司推出eM-Plant的升级版本Plant Simulation V8.2,我校也正式成为该软件的合法用户。

当重庆理工大学的施於人老师出版第一本介绍eM-Plant技术教程时,我非常有幸成为该书的技术外审专家。有缘于此,作者深感有必要编写一本生产系统仿真应用方面的教材,特别是Plant Simulation在生产系统仿真及工业工程领域的应用。这个想法得到了西门子工业软件(上海)有限公司的大力支持,尤其是得到了教育事业部的刘明孝经理的鼎力相助,在选题、内容确定和书稿出版等方面,无不凝聚着刘老师的心血。

本书的构思和写作前后花了近三年时间,包括仿真模型的建立和调试,其中内容的确认推敲了很久,有些内容是作者近期参与相关课题的内容,有些是对外培训时客户的实际案例,更多的则是实际讲授“设施规划与物流分析”和“生产计划与控制”等课程时的综合性试验、设计性试验内容。因此,本书的一个显著特点是没有长篇的理论介绍,而是将理论分散到建模过程中讲述,是生产系统各领域的综合应用;应用工业工程的方法来提升生产线产出率,进行企业内部物流配送优化、车间布置优化、流水线平衡、生产计划与排程优化、人机作业分析和仓储仿真优化等经典工业工程问题的讲述与建模。

同时,为使读者更好地掌握Plant Simulation,本书建立的仿真模型除第1章外,所有模型均采用了参数化设计的思路,只需简单的修改和扩充,就可以在现有模型基础上开发面向本科教学、研究生教学的仿真实验平台,也可以面向科研课题和企业实际应用进行快速扩充应用。基于这些模型,已将书中模型应用到纺织印染企业的生产计划与调度、快速公交BRT停靠站台优化仿真研究及HP打印机生产线OBA在线抽检生产系统仿真等实际应用案例中。

本书由广东工业大学机电学院工业工程系周金平编写,由西门子工业软件有限公司高级技术顾问、PLM软件专家汪锐审校。本书的编写工作得到了广东工业大学教育教学改革工程项目(2010Y029;2010Y030)和2010广东省特色专业建设项目的支持,广东工业大学苏平教授对本书第5章部分内容及算法提供了支持,饶中老师对第7章部分内容提供了素材。同时,本书参考了大量文献,再次谨向这些原文作者表示感谢!

感谢西门子工业软件(上海)有限公司刘明孝经理、汪锐工程师!

感谢广州安镁思软件有限公司的刘海军经理在软件培训等方面的无私帮助!

感谢广东工业大学机电学院的伍乃骐教授,是他将我引领到工业工程这个神奇的领域!

感谢电子工业出版社许存权编辑的支持和鞭策!

生产系统仿真是一门处于发展变化中的综合性学科,由于作者水平和学识有限,书中难免存在不足和错误之处,敬请读者朋友们批评指正,谢谢你们!周金平于广州小谷围岛第1章 流水线暂存区的仿真试验设计

生产物流指从原材料、燃料、外购件投入到生产系统中,再经过下料、发料、运送到各加工点和存储点,以在制品的形态,从一个生产单元流入另一个生产单元,按照规定的工艺路线,进行加工、储存,并借助一定的输送装置,从某个节点流入,又从某个节点流出,始终体现着物料实物形态的流转过程。柔性、快速响应需求能力、产品多样化和产品质量是衡量一个生产物流系统生产运作质量的主要指标。

生产物流系统是一个复杂的综合性系统,影响该系统的因素太多,导致生产管理人员难以驾驭这样的系统。但是通过系统仿真的方法,可以研究和解决生产及其物流过程中存在的很多问题,这些问题主要体现在:

①系统生产率。

②生产周期。

③在制品库存。

④机器利用率和人员效率。

⑤及时交货。

⑥设备布置合理性。

⑦生产成本。

……

在本章中,以常规的Flow Shop(流水作业生产线)为研究对象,通过仿真方法来了解与工站间缓冲区设置相关的一些问题。本章先建立基本流水线模型,通过仿真试验的方法优化工站间的暂存区大小,第2章再讨论准时制生产方式下装配线物料配送相关策略。1.1 Flow Shop暂存区模型

生产物流系统中生产线的组织方式有串行生产线、并行生产线及串行和并行组合成的混合生产线。生产物流系统中串行生产线属于最简单的离散事件动态系统,且广泛地存在于现实的工业生产中,如汽车装配线、啤酒饮料灌装线等。对这些生产线进行分析就可以发现,它们都是由一系列的加工工站及工站间的暂存区组成的,如图1.1所示。在串行生产线中,原材料是按照产品的工艺路线,按顺序经过每个工序和中间的存储区,最终形成成品输出系统。在串行生产线中的各存储区容量的大小和存储区位置的设置及它们与生产率之间的关系[1][2][3][4][5][6][7]一直是研究的一个方向,,,,,,,[8]。图1.1 Flow Shop流水线示意图

影响生产线产出率的因素有很多,物料批处理方式、工站间缓冲[9]区设置、工站的加工时间变动、工站的故障率等。下面从仿真的角度来探讨这些因素对生产线产出率的影响。1.2 开始一个新项目

启动Plant Simulation(V8.2或者V9.0),新建一个模型,初始状态如图1.2所示。图1.2 新建Plant Simulation模型1.2.1 初始准备工作

1)如图1.3(a)所示,选择“文件→加入对象→遗传算法”,可以发现Explorer下方的对象类库(Class Library)中弹出了一个GA文件夹,Toolbox工具栏增加一项Genetic Algorithms(遗传算法)标签页。

2)右击Basis,在弹出菜单中选择“保存/载入→增加对象→遗传算法”,在弹出的对话框中找到Plant Simulation的安装目录的Tools,首先加载GAWizard.obj遗传算法向导对象,如图1.3(b)所示。图1.3 加载Plant Simulation外部应用模块

3)重复上一步加载GanttWizard.obj甘特图对象(ExperimentManager实验管理器对象是默认载入的),加载完成后观察Toolbox和Class Library有什么变化,后续教程中加载其他外部对象的步骤与此一致。

4)如图1.2所示,Class Library中的Models文件夹改名为DOE_Sim(或者新建一个文件夹再改名),Frame模型层改名为SingleLine。1.2.2 建立基本生产线模型

在SingleLine模型层中插入如图1.4所示的对象(所有对象的参数均先不设置),将各对象如图1.4(a)所示用Connector对象连接起来。要显示各个对象标签名称,选择模型层SingleLine的主菜单“View→Option→Show Object labels”。图1.4 新建两条Flow-Shop生产线

1)EventController按图1.4(b)所示设置,仿真时间为连续的100h,即4d4h。

2)方法Reset是系统初始化对象,属于系统方法,一般做法是插入一个Method后改名为Reset,然后图标就变为系统图标了。

3)方法Set_Vars属于用户自定义的方法,一般采用蓝色图标的Method(方法)表示不直接运行的方法;而显示为绿色的Method则表示可以直接运行。注意,这不是强制性规定,只是一种建议和习惯而已。右击Set_Vars,在弹出菜单中选择Show Attributes and Methods(或者单击Set_Vars图标再按F8键)。在对象的属性对话框中找到CurrIcon项,单击该栏任意位置打开,在弹出的对话框中将Standard改为User,关闭属性对话框,返回模型层,如图1.5所示,Set_Vars变为绿色的图标了。图1.5 用户自定义方法的设置1.2.3 设置模型的全局变量

在Plant Simulation中,一般使用Information Flow(信息流对象)中的Variable对象来定义变量,这些变量放置在模型层内。当全局变量比较多时,可能导致模型层内的布局显示比较混乱,或者不太美观。如果将全局变量进行分类就会发现可以将其分为两类:需要显示信息的和可以不用显示信息的。一般情况下,推荐将不用显示信息的全局变量采用下面的方式来定义。

1)单击模型层主菜单Tools,在下拉菜单中选择Custom Attribute,如图1.6(a)所示。

2)在弹出的对话框中单击New按钮,弹出如图1.6(c)所示的变量定义对话框,按图1.6(b)(或表1.1)所示的变量及数据类型分别定义这5个全局变量(或称为属性)。如果定义完成后要进行修改、删除等操作,则可分别选择“Edit→Delete”来执行。图1.6 模型层中的全局变量的定义表1.1 模型层中的全局变量的含义1.2.4 Method编程

Method编程有两条流水线,上面一条称为Line1,用变量Output_Line1来统计Line1的产出;下面一条称为Line2,用变量Output_Line2来统计Line2的产出,用Output_Line2和Output_Line1的比值作为两条线产出比,用OutRate_Line2表示。统计使用了方法CalOutput,因为后面其他流水线也要统计产出,所以,将CalOutput写成通用型程序。假设Line1为理想状态生产线(无故障、加工时间为常值及无其他波动),因此,也可以认为OutRate_Line2就是生产线2的产出率。

1)双击CalOutPut,输入如下SimTalk语句(后面还要对它继续扩充):is m,n:integer; --整数变量 Name:string; --字符串变量 Obj:Object; --对象类型变量do m:=str_to_num(omit(?.Name,1,5)); --先取Drain*后面的数字,再转换为整数类型 Name:=sprint("Output_Line", m); --生产线名称 Obj:=str_to_obj(Name); --转换为对象变量 Obj.val:=?.StatNumIn; if m>1 then --第二条线要计算产出率 Name:=sprint("OutRate_Line", m); --产出率 Obj:=str_to_obj(Name); --转换为对象变量 Obj.val:=n*100/OutPut_Line1; --计算产出率 end;end;

2)双击Drain1,弹出如图1.7(a)所示的对话框,在Entrance后面的文本框中输入CalOutput后单击OK按钮退出,Drain2的设置操作相同。或者双击Drain1打开,单击Entrance后面的按钮,在弹出的Select Object选择对象的对话框中选择CalOutput对象,如图1.7(b)所示,双击OK按钮返回。图1.7 Drain1/Drain2的入口控制方法

3)双击Set_vars,输入如下SimTalk语句:is m, i:integer; --整数变量 Name:string; --字符串变量 Obj:Object; --对象类型变量do for i:=1 to 2 loop for m:=1 to 5 loop Name:=sprint("M", i, m); Obj:=str_to_obj(Name); --转换为对象变量 Obj.proctime:=ProcTimes; --设置加工时间为ProcTimes的常量 if i=2 then Obj.FailureActive:=True; --激活设备的故障生成 Obj.MTTR:=MTTR; Obj.Availability:=Availability; end; next; next;end;

4)双击Reset打开,在do和end之间插入“Set_Vars;”。

5)双击Set_Vars运行,就可以对模型中的对象进行参数设置了。注模型中的Source1、M11>等物流对象,Set_Vars方法及Output_Line1变量等信息流对象如何添加到Single Line模型层中的[10]相关操作,请参考相关的基本介绍。1.3 机器设备的故障率对产出的影响

实际的流水线中的加工设备均会在生产过程中出现故障,一般而言,两次故障间的时间间隔MTBF(Mean Time Between Failure,平均故障间隔时间,又称平均无故障时间)符合指数分布,故障平均修复时间MTTR(Mean Time to Restoration)符合爱尔朗分布。MTBF有时也可以简单地用设备可利用率Availability表示,例如,Availability=0.95表示设备连续工作为100h,正常工作时间为95h。

打开EventController,建议每次运行模型仿真时先选择“Reset→Start”运行模型。

两条生产线的五个工站的加工时间均为1min(常值),生产线Line1的工站不发生故障,连续仿真100h后产出应该是5995件(理论上该生产线应该生产6000件,由于仿真初始化的预热问题,必须5min后才有工件到达Drain1)。而生产线Line2的每台设备的平均可利用率初始值为95%,单次仿真运行的产出为4557,产出率为76%左右(建模仿真时可能与该数据有微小的差异,但是不会太大)。为了更好地反映实际情况(每次仿真结果都具有随机效果),可以通过对随机种子数复位选项的设置模拟随机效果,即选择EnevtController的主菜单Tools项的下拉菜单Reset Random Number Strems On Reset。通过多次的100h运行仿真,可以找出Line2的平均产出来。

如果希望获得(或者通过模型来研究)输入和输出之间的关系,或者自变量和响应变量之间的关系,最好的方法就是改变输入或者自变量,然后观察输出或者响应变量是否也发生变化,而如果对输入或自变量的改变是根据一个事先设计的方案来积极操作的,那将是获得和理解有用信息的最好方法。

然而,对于存在两个或两个以上自变量的任何场合,一次只更改一个变量的试验方案本质上是没有任何用途的。为了用合适的方法获得多个自变量是如何共同对响应变量产生影响的,需要使用试验设计方法(Design Of Experiments,DOE)。

Plant Simulation提供了非常方便的DOE工具,在仿真模型中进行相关的试验研究的好处是显而易见的。接下来,将探讨使用DOE工具来研究生产系统的波动对于生产率的影响,以及如何通过DOE的方法来提升生产系统的效率。1.3.1 修改模型

以最后一个工站M25为例,讨论M25故障率变化如何来影响产出率。

1)单击模型层主菜单Tools,在下拉菜单中选择Custom Attribute,增加两个变量:Availability5和MTTR5,均为实数类型,初始值分别为95和600。同时将Availability的值由95改为100,表示其他几台机器不发生故障。

2)修改Reset,按如下SimTalk语句来整理:isdo print"Let's go ...";Set_Vars; M25.MTTR:=MTTR5;M25.Availability:=Availability5;end;

3)此时运行EventController,可以发现M21~M24没有设置故障,M25的可利用率为95%,仿真结果是生产线Line2的产出率为93.8%左右。

单击Toolbox工具箱的Tools标签页中的,在模型层中插入一个ExperimentManager,将其改名为DOE1,标签名为重复试验。双击DOE1图标,打开试验管理器DOE1窗口,如图1.8所示。图1.8 试验管理器DOE11.3.2 试验实施过程

以Line2的产出率OutRate_Line2作为系统的指标y,很显然,设备可利用率Availability5是影响y的一个x,现在来探讨x和y之间的关系。

现实中很难控制设备的故障率,因此,仿真试验设计的优点在此体现出来了。以设备可利用率Availability5由80%向100%变化为例,希望找出x和y之间的关系。

1)输入重复试验次数为10,置信水平为95%,然后单击Apply按钮。注意输入数据后一定要单击Apply按钮,否则可能会遗失刚才输入的数据。

2)单击Output Values,在弹出对话框的Output Values栏下输入试验指标OutRate_Line2,或者直接将OutRate_Line2图标拖入Output Values栏下的空白输入区域,然后单击Apply按钮。

3)选择Define input values,单击Input values,在弹出的Input Values栏下第一行输入Availability5(如果有多个输入参数,则每输入一个参数后按Enter键即可)。

4)选择主菜单Tools项,选择单因素多水平试验Multi-level Experimental Design,输入低水平为80,高水平为100,变化级差为1,因此共有21次全试验,如图1.9所示。单击Apply按钮后再单击OK按钮返回DOE1对话框。图1.9 单因素多水平试验设置

5)单击DOE1的Run标签页,因为本次试验是小试验,所以不必单击Test先做测试了,可以选择“Reset→Start”,开始进行仿真试验。几分钟后仿真结束,如果时间比较长,可以适当减少重复次数或者将变化级差调整为2。建议每次做试验前,最好先运行一次Set_Vars恢复参数为初始值。

6)系统自动生产试验报告,以重复次数为10,变化级差为1的试验结果分析为例,Availability5和OutRate_Line2的关系如图1.10所示。图1.10 Availability5和OutRate_Line2的关系曲线及试验结果1.3.3 回归分析

考虑单独将DOE1内的Availability5和OutRate_Line2的数据提取出来进行回归分析,首先要知道试验得到数据的存放位置。

1)打开DOE1界面(图1.8),单击Evaluate项,如图1.11所示。Availability5和OutRate_Line2就存放在Input Values和Output Values中,单击后面的Show按钮就可以打开查看。图1.11 试验结果数据

2)按照图1.3所示加载外部模块GanttWizard.obj相同的方法,加载DataFit.obj模块后,在Toolbox图标栏中多了一项统计分析工具。如果要对Availability5和OutRate_Line2进行回归分析,则单击并拖到SingleLine模型层中,生成一个新的Regression对象,双击Regression选项,弹出如图1.12所示的对话框。图1.12 回归分析工具的基本功能1.3.4 获取数据

现在要做的就是将DOE1的输入/输出数据导入Regression的Input data中。如图1.8所示,打开DOE1,选择Evaluation method前的选择框,然后单击其后的Open按钮,输入如下SimTalk语句,即可实现数据从DOE1导出到Regression中。--After an observation you can perform special evaluations.(localExp,localRun:integer)is ResTab,RegrTab,InpTab:object;n,x,y:integer;do ResTab:=ResultsTable; RegrTab:=~.Regression.DataXY; n:=ResTab.yDim; --number of experiments if localExp=n and numRuns=localRun then print"EVAL Experiment",localExp,"Observation:",localRun; InpTab:=InputValues; RegrTab.delete({1,0}..{*,*}); for x:=1 to InpTab.xDim loop--insert input values for y:=0 to n loop RegrTab[x,y]:=InpTab[x,y]; next; next; for y:=0 to n loop --insert output values print ResTab[8,y];RegrTab[InpTab.xDim+1,y]:=ResTab[1,y]; next; end;end; -- of the method

1)运行Set_Vars初始化相关参数。

2)打开DOE1,运行试验。

3)如图1.13所示打开Regression对象,单击Linear标签页进行线性回归分析。单击Calculation后面的Start按钮运行线性回归分析,得到回归方程为y=0.97x+2.32。

4)单击Scatter diagram后面的Show按钮,显示如图1.13所示。图1.13 线性回归分析1.3.5 瓶颈分析

并不是每台机器的故障率对产出率都影响明显,对模型参数作一些改动,观察谁的故障率对产出率影响最大。

1)将Reset里的语句全部注释,以下全部采用人工修改。

2)将M25的Availability改为100,再运行模型仿真,此时,运行模型可以得到Line2和Line1是一样的产出。

3)M15/M25的加工时间改为120s,即2min。此时,M15/M25即为瓶颈工序。将M25的设备利用率改为95%,此时运行模型可以得到Line2产出率为95.3%左右。

4)将M25的设备利用率改为100%,M24非瓶颈工序的设备利用率改为95%,此时运行模型可以得到Line2产出率为98.2%左右。

结论:

1)单机故障在工站间无暂存区的情况下,基本按1:1的关系影响系统的产出,多机故障对系统产出有“匀化”作用。

2)瓶颈工序的故障率对系统产出率影响最明显。1.4 加工时间波动的影响

在假设原材料不断供应(或者首工序保证有物料连续供应)的情况下,生产系统中的任一加工工站的加工时间一般不为恒定值,而是以某种分布规律表现:均匀分布、正态分布、(负)指数分布……分布参数对系统的产出影响很大,同时也影响系统中的零件排队等待的队列长度。

先考虑一个问题:假设5个工站的加工时间符合均值为1min、方差为3s(=60×5%)的正态分布,系统的产出能达到平均每小时产出60件吗?

继续以5个工站的SingleLine来说明。虽然经过时间研究和工作研究,每个工站的加工时间比较科学,但是该时间值只是在一定工作周期内的平均值,加工时间的波动符合某种分布形态,如均匀分布、正态分布等。

首先新建一个模型层。

1)右击SingleLine,在弹出菜单中选择“复制”选项,系统复制一个SingleLine模型层,并自动命名为SingleLine1。

2)关闭SingleLine,打开SingleLine1,如图1.14所示。图1.14 SingleLine1模型层

3)将Availability5改为100。运行一次Set_Vars,这样就可以将M21-M25设为无故障,其次进行相关的参数修改。

4)将Reset方法修改如下:isdo Set_Vars; --M25.MTTR:=MTTR5;--M25.Availability:=Availability5; M25.proctime.setParam("normal", 1, ProcTimes, SigMa*ProcTimes/100);end;

5)Set_Vars方法修改如下:is m, i:integer; --整数变量 Name:string; --字符串变量 Obj:Object; --对象类型变量do for i:=1 to 2 loop for m:=1 to 5 loop Name:=sprint("M", i, m); Obj:=str_to_obj(Name); --转换为对象变量 Obj.proctime:=ProcTimes; --设置加工时间为ProcTimes的常量 if i=2 then --设置加工时间符合(μ,σ)的正态分布 Obj.proctime.setParam("normal", m, ProcTimes, SigMa*ProcTimes/100); end; next; next;end;

6)将SigMa改为5,即加工时间的标准差为加工时间的5%。如果加工时间μ=60s,则标准差σ=60×5/100=3s。

7)运行一次Set_Vars,然后再打开EventController运行模型仿真。

此时生产线Line2的产出率为95.3%左右,说明加工时间的波动对于产出率也是有比较大的影响的,如图1.15所示。图1.15 加工时间的波动对产出率的影响

请考虑:加工时间波动如何影响产出率?

8)先将Set_Vars中的包含Obj.proctime.setParam的这一行注释,再运行模型可以得到Line2产出率为98%左右,说明多机加工时间波动比单机要大,但是多机加工时间的波动具有匀化作用。

9)双击DOE1打开窗口,选择Define input values,单击Input Values,在弹出的Input Values栏下将第一行内的Availability5改为SigMa。

10)选择DOE1的主菜单Tools项,选择单因素多水平试验Multi-level Experimental Design,输入低水平为1,高水平为10,变化级差为1,即加工时间中标准差的波动在平均时间的1%~10%变化,因此共有10次全试验。重复试验次数设为10,置信水平为95%。

11)单击DOE1的Run标签页,选择“Rest→Start”,开始进行仿真试验。

同样可以进行SigMa和OutRate_Line2的回归分析,回归方程为y=-0.37x+99.93。

由于生产线的产出很大程度上取决于瓶颈工序的产出,因此,对于非瓶颈工序而言,其加工时间的波动一般不会对系统产出率造成明显的影响。1.5 加工时间、故障率对产出率的联合作用

如果设备既有故障的发生,又有加工时间的波动,此时二者会对产出率造成什么影响呢?

首先新建第二个模型层。

1)右击SingleLine,在弹出菜单中选择“复制”选项,系统复制一个SingleLine模型层,并自动命名为SingleLine2。

2)关闭SingleLine,打开SingleLine2。几个全局变量恢复的默认值参见表1.1。

3)修改Reset方法如下:isdo Set_Vars; M25.MTTR:=MTTR5;M25.Availability:=Availability5; M25.proctime.setParam("normal", 1, ProcTimes, SigMa*ProcTimes/100);end;

4)修改Set_Vars对象如下:is m, i:integer; --整数变量 Name:string; --字符串变量 Obj:Object; --对象类型变量do for i:=1 to 2 loop for m:=1 to 5 loop Name:=sprint("M", i, m); Obj:=str_to_obj(Name); --转换为对象变量 Obj.proctime:=ProcTimes; --设置加工时间为ProcTimes的常量 if i=2 then Obj.FailureActive:=True; Obj.MTTR:=MTTR; Obj.Availability:=Availability; --设置加工时间符合(μ,σ)的正态分布 Obj.proctime.setParam("normal", m, ProcTimes, SigMa*ProcTimes/100); end; next; next;end;

然后可以运行仿真模型了,此时生产线Line2的产出率在75.7%左右。很明显,当设备既有故障的发生,又有加工时间的波动时,系统的产出率下降了很多。

下面进行两个因素联合作用分析。

5)双击DOE1打开窗口,单击Define标签页。选择Define input values,再单击Input Valuse,在弹出的Input对话框中输入两个参数:Availability和SigMa,各占一行。

6)单击DOE1的主菜单Tools,在下拉菜单中选择第一项Two-level Experimental Design,在弹出的Design对话框中按如图1.16所示输入,然后单击OK按钮返回。由于重新设计了试验,因此原来的实验数据及结果可能遭到破坏。一般情况下可以忽略这个询问而直接单击按钮。图1.16 两因子两水平DOE

7)确定好重复试验次数和置信水平后,单击DOE1的Run标签页,选择“Reset→Start”,开始进行仿真试验。

仿真完成后系统给出的HTML格式报告如图1.17所示。图1.17 两因子两水平DOE结果报告

图中的方差分析ANOVA表中,H代表因子的主效应,而W则代ij表因子i和j的交互作用。显然,故障率和加工时间波动之间没有任何交互作用。从图1.17(b)的试验结果来看,试验3/4的产出率明显比试验1/2高很多,只能说明故障率的影响比加工时间波动的影响要显著很多。

假设暂时只考虑这两个参数变化对产出率的影响,有没有不增加太大支出的基于工业工程的方法可以提高系统的产出呢?[11]中的第8章介绍了波动率的概念:某零件在某设备上加工时间是一个均值为t、标准差为σ的随机变量,则其加工时间的波动率00为c=σ/t,如果n个部件组成的批次进行平行顺序移动组织安排,则000该批次的加工时间波动率为c=σ/。因此,成批加工有“平0(批)0均化”各个部件的波动性的趋势,此时需要确定的是批次的大小,即可以在工站前设立暂存区用于接收上工序传递过来而本工序来不及加工的零件。是否每个工站前面均需要设立暂存区(缓冲区),暂存区的容量大小为多少合适呢?1.6 暂存区的设置

如果在每个工站前面设置一个一定容量的暂存区,对系统的产出提升有帮助吗?1.6.1 新建一个模型层

1)右击SingleLine2,在弹出菜单中选择“复制”选项,系统自动复制为SingleLine21,改名为SingleLine3,双击打开该模型层。

2)删除生产线Line2中各个对象之间的连接线,并在每个工站前增加Buffer对象,命名为BF1~BF5,所有的参数不变,缓冲区的容量大小先采用默认值4,缓冲区的加工时间为零,将所有对象连接起来后如图1.18所示。图1.18 带暂存区(缓冲区)的生产线

运行仿真模型,得到生产线Line2的产出率结果为83.8%,相对SingleLine2的75.6%的产出率而言,提高了8.2%,而并没有增加实际的支出,只是在工站间留出了暂存的空间,这就体现了工业工程的价值。把BF1~BF5的暂存区容量提高到10再运行仿真模型,得到生产线Line2的产出率结果为85.9%。也就是说,加大暂存区的容量,对提高生产线的产出率是有很大帮助的。

问题是在实际的生产线运行中,工站之间的暂存区不能设置太多、容量不能太大,这就提出了问题:什么位置需要设置暂存区,暂存区的容量设置为多大可以有尽可能高的产出率?[12][13]

很显然,直接计算的方法无法得出想要的结果。,,[14][15][16][17][18][19],,,,,研究了很多的算法,这是生产线/装配线中的工站间暂存区设计的一个研究方向,本节讨论相对简单的方法。借鉴试验设计的思想,将产出率作为指标,而暂存区容量大小则作为影响指标的因子,通过因子设计就可以找出比较合适的缓冲区容量配置。5因子设计

1)删除Regression对象,将DOE1的标签名称改为“因子设计”,双击DOE1打开。

2)取消选择,输入重复试验次数5及置信水平95后,单击Apply按钮如图1.19中①。

3)单击Output Values按钮,如图1.19中②,确定试验指标,在弹出表中输入OutRate_Line2后单击Apply按钮。

4)先选择Define input values,如图1.19中③,再单击Input Values按钮,确定5个影响因素,在弹出的对话框中输入BF1.Capacity~BF5.Capacity,单击Apply按钮。

5)单击主菜单的Tools项,在下拉菜单中选择Two-level Experimental Design两水平试验设计,如图1.19中④,假设5个因素高低水平均为2和5。在输入表中操作完成后,单击Apply按钮,单击OK按钮退出。系统会显示两水平5因素试验表,共32次配比,每次配比作5次重复试验,共计160次。图1.19 暂存区容量大小的两水平试验设计

多因素对单指标的影响分析一般分两步,第一步做多因素两水平试验设计,分离出影响指标的主要因子及交互作用;第二步做主要因子的多水平配比试验设计,得到最佳因子配比方案,从而得到比较高的Flow-Shop产出。

6)单击DOE1选项菜单中的Run标签页,选择“Reset→Start”开始实验。

几分钟的时间,得出仿真结果,系统会给出一个HTML格式的报告,可以查看并分析该报告。如果时间比较久,可以将重复次数减少到2次或3次,不推荐使用1次,因为要进行方差分析ANOVA,如果考虑交互作用就必须有重复试验次数的要求。图1.20所示为试验完成后系统生成的HTML格式的报告。图1.20 缓冲区优化试验的HTML格式报告

①图1.20中,Statistics of output values是试验结果统计。

②Interesting output values(Confidence intervals of selected result values)是试验结果的置信区间分析。

③Factorial analysis是因子分析(方差分析)。也可以单击DOE1主菜单的Tools项,在下拉菜单中选择Analysis of Factors也可以得到这样的方差分析表。

因子分析表中,H表示因子主效应,W表示交互效应。H=0说明1在生产线的第一工序前设置缓冲区没有任何实际意义。几个一阶交互作用很小,当然二阶以上的交互作用就没有分析的必要了。其他暂存区的影响比较显著,但是有所区别,此时可以考虑进行配比试验了。

如果使用Minitab等软件来分析,可以导出数据:单击DOE1的Evaluate选项,再单击Input Values后面的Show按钮后显示因子搭配表,选择“File→Save As Excel File…”保存,再单击Output Values后面的Show按钮,显示试验结果表,选择“File→Save As Excel File…”保存,最后将两表合并后就可以交由其他软件来处理了。1.6.3 多因子多水平因子设计

打开DOE1,选择Define项下Define input values后面的Input Values按钮,删除BF1.Capacity,只保留BF2.Capacity~BF5.Capacity供4个输入变量。

将重复试验次数调整为1,因为下面进行的是配比试验,可以减少重复次数或无须重复。

单击DOE1主菜单的Tools项,在下拉菜单中选择Multi-level Experimental Design多水平试验设计,弹出因子配比表,如图1.21所示。图1.21 BufferOpt多水平试验的因子配比

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载