第七章Flexsim建模.ppt
171页1Flexsim软件的安装步骤(单机版)软件的安装步骤(单机版)•单机版单机版–根据电脑操作系统打上相应的补丁–安装.Net Framework–安装Flexsim 4.52–插入加密狗–输入客户序列号•开始菜单 / Flexsim 4 / Flexsim License Activation–(推荐)安装Visual C++ .net1一、一、FLexsim软件概述软件概述• flexsim是一套系统仿真模型设计、制作与分析工具软件他是集计算机三维图像处理技术、仿真技术、人工智能技术、数据处理技术为一体,专门面向制造、物流等领域运用flexsim系列仿真软件,可以在计算机内建立研究对像的系统三维模型,然后对模型进行各种系统分析和工程验证,最终获得优化设计或改造方案• flexsim是用来对生产制造、物料处理、物流、交通、管理等离散事件系统进行仿真的的软件产品• •flexsim仿真软件的特点:仿真软件的特点:• 1.基于面向对象技术建模•2.突出的3D图形显示功能•3、建模和调试简单方便•4. 建模的扩展性强•5.开放性好二、二、FLEXSIM术语术语•一.flexsim实体 flexsim实体在仿真中模拟不同类型的资源。
flexsim实体可以在对象库栅格面板中找到 1.临时实体:可代表零件、托盘、组装部件、纸张、人、订单或者任何移动通过正在仿真的过程的对象•临时实体可点击工具栏按钮Flowitem定义 2.临时实体类型:置于实体上的一个标签,可以代表条码、产品类型或工件号可对每个临时实体定义对象类别(Itemtype) 3. 端口: 实体通过端口与其他实体进行通信5连接与端口连接与端口•Flexsim模型中的对象之间是通过端口来连接的•三种类型的端口–输入端口(input ports)•Fixed Resource之间的连接–输出端口(output ports)•Fixed Resource之间的连接–中心端口(center ports)•连接Task Executer和Fixed Resource56“s”连接连接•按下 “s”键的同时用鼠标从一个对象拖拉到另一个对象上以连接二者•“s”连接仅用于中心端口之间的连接(即连接Task Executer和Fixed Resource )•“s”连接用“w”取消(按下 “w”键的同时用鼠标从一个对象拖拉到另一个对象上以连接二者)67“s”连接连接中心端口8“a”连接连接•按下 “a”键的同时用鼠标从一个对象拖拉到另一个对象上以连接二者•“a”连接用于除中心端口之外的所有其他的连接 •“a”连接用“q”取消输出端口输入端口•2.实体属性和参数•(1)属性•常规属性分页包含实体的常用信息•视景属性分页:建模人员可以指定实体的外观特征•标签属性分页:显示用户定义的标签•统计属性:显示模型运行中实体收集到的统计信息•(2)实体参数•实体的参数根据所选的实体不同稍有不同三、模型视图三、模型视图•(一)正投影图,透视图•Flexsim采用3D建模环境,默认的建模视图是正投影视图窗口。
•(二)三维形状与动画(三)树视图1.模型的树视图 在Flexsim中使用模型树视图来详细的展开模型结构和实体 2.节点 节点是构建Flexsim树的模块所有节点都有一个包含名称的文本节点可以包含其他节点,可以用来定义实体属性的关键字,或者是一个数据项 可以附在节点上的数据项类型是:数字、字符串、实体或者指针•3、树视图•所有数据和信息都包含在一个树结构中,这个树结构是面向实体设计的核心数据结构•节点图标用来指定一个实体内的节点数据数据节点可以在它们内部包含附加的节点数据一些特定的数据节点被指定为c++数据节点三、实体库与实体三、实体库与实体•一、实体库•flexsim库由实体构成,这些实体是采用面向对象的方法构建的具有父类/子类的层次结构,子类实体继承父类实体的属性和默认行为,同时又特别指定了适用于特定情形的行为,库中实体大多数是由两个通用实体类即固定实体和任务执行器•1.固定实体(fixed resources)•模型中固定不动的实体•2.任务执行器(task executers)•模型中共享的可以移动的资源•二、固定实体类•(一)生成器• 用来创建在模型中行进通过的临时实体。
每个生成器创建一类临时实体,并能够为它所创建的临时实体分配属性生成器创建临时实体模式:•到达时间间隔模式•到达时间表模式•到达序列模式•(二)吸收器• 用来消除模型中已经完成全部处理的临时实体•(三)暂存区•用来在下游实体尚不能接受临时实体时暂时存储他们,暂存区的默认工作方式是先进先出•1.分批功能•暂存区将会等待直到接收到的临时实体数量达到目标数量,然后作为一批同时释放所有的临时实体•2.暂存区的几种状态•(四)处理器•处理器用来在模型中模拟对临时实体的处理过程处理过程仅被简单地模拟为一段强制的时间延迟总延迟时间被分成预置时间和处理时间•1.预置/处理操作员•2.MTBF/MTTR(平均故障间隔时间/平均修复时间)•3.处理器的状态•(五)输送机(传送带)•输送机用来在模型中沿一系列路径移动临时实体通过创建输送机的不同分段来定义路径• 分为:可积聚模式:输送机末端被阻塞,临时实体可以在上面集聚• 非集聚模式:如果输送机被堵塞,则输送机上的所有临时实体都会停下来• 输送机一次只接收一个临时实体,而且一次只释放一个临时实体•(六)分类输送机(分拣传送带)• 分类输送机是一张非积聚式输送机,允许沿着输送机有多个输入位置,同时有多个输出位置。
每个输入\输出端口都有一个用户定义的输入与输出位置•(七)合成器•用来把模型中行进通过的多个临时实体组合在一起它可以将临时实体永久地合成在一起,也可以将它们打包,在以后某个时间点上再把它们分离• 合成器是处理器的一个子类,而处理器又是固定实体的一个子类在操作中,合成器首先从它的第一个输入端口接收一个临时实体;然后,它根据组成列表收集一批临时实体•合成器有三种操作模式:装盘(pack)、合并(join)、与分批(batch)•在装盘模式下 ,合成器将从输入端口2与更高序号的输入端口接收到的所有临时实体全部移入到由输入端口1接收到的临时实体中,然后释放此容器临时实体•在合并模式下,除了从输入端口1接收到的那个临时实体,合成器将破坏掉其余所有的临时实体•在分批模式下,合成器仅在收集到本批次的临时实体并完成了预置和处理时间后释放所有临时实体•合成器的状态:•(1)空闲•(2)收集•(3)预置•(4)处理•(5)阻塞•(6)等待操作员•(7)等待运输机•(8)停机•(八)分解器• 分解器用来将一个临时实体分成几个部分分离可以通过拆分一个由合成器装盘的临时实体,或者复制原始实体的多个复本来实现。
• 分解器具有:拆盘模式和分解模式•如果是拆盘模式,当预置和处理时间一结束,分解器就把去托盘数量的临时实体从临时实体移入到自身内部,然后释放拆出的所有临时实体当所有拆盘分离出的临时实体全部离开时,就释放容器实体•如果是分解模式,当预置和处理时间一结束,分解器就复制此临时实体,得到总数等于分解数量的临时实体,然后释放所有的临时实体•(九)网络节点•用来定义运输机和操作员遵循的路径网络通过使用样条线节点来增加路径弯曲部分从而修改路径• (1)将网络节点相互连接• (2)将网络节点连接到网关的实体上•(3)将任务执行器连接到某些网络节点,在仿真开始时,任务执行器将待在那些网络节点上•(十)流节点• 用于将临时实体从一个位置移动到另一个位置,其移动过程伴随时间的消耗使用“A”键单击拖动的简单连接方式,就可以使用流节点引导临时实体流• 流节点用来对临时实体的行进网络进行仿真也可以用输送机来仿真行进网络•(十一)复合处理器•用来模拟对临时实体顺序的有序的操作过程用户对每个复合处理器实体定义一系列的处理过程每个进入复合处理器的临时实体都将按顺序经历这些处理过程• •(十二)货架• 用来像在仓库货架上一样存储临时实体。
货架的列数和层数可以由用户定义用户可以指定位置来放置进入货架的临时实体•(十三)基本固定实体(BFR)• 基本固定实体是为开发人员提供的用来建立用户库的固定实体它把固定实体的几乎所有可继承的逻辑传递给拾取列表函数• 基本固定实体是固定实体的一个子类它用来指定重置、进入、离开以及消息 触发器的逻辑,同时也包括停止/恢复实体、捡取/放置偏移、运输输入通知/完成、运输输出通知/完成及其他高级功能•(十四)基本任务执行器• 是为开发人员提供的用来创建用户库的任务执行器它把任务执行器的几乎所有可继承逻辑传递给拾取列表函数•(十五)可视化工具• 采用道具、风景、文字和展示幻灯片来装饰模型空间目的是给模型更逼真的外观•三、任务执行器• 1.操作员• 实体可以调用操作员在处置、处理或者维修过程中使用它它们将与调用它们的实体待在一起直到被释放• 操作员是任务执行器的一个子类它根据是否有一个相关临时实体需要执行偏移操作来决定如何执行偏移行进•2.运输机•用及来从一个实体到另一个实体搬运临时实体•3.堆垛机• 一种特殊类型的运输机,专门设计用来与货架一起工作堆垛机在两排货架的巷道中往复滑行,提取和存入临时实体•4.起重机• 起重机与运输机的功能类似,但是它的图形经过了修改。
起重机在固定的空间内工作,可以沿着相互垂直的xyz三个放行运动•5.升降机•是一种特殊的运输机,可以上下运输移动临时实体•6.机器人• 是一种特殊的运输工具,它从起始位置提升临时实体并将其放到终止位置31Flexsim软件主窗口布局软件主窗口布局•Flexsim软件主窗口由下面五部分构成–菜单–工具栏–对象库–模型视图–仿真控制栏3132工具栏工具栏•工具栏中常用到的按钮包括–FlowItem:临时实体库–Tree:打开模型树–Ortho:打开模型正投影视图–Persp:打开模型透视图3233Flexsim仿真模型的基本组成仿真模型的基本组成•对象(Objects)–Flexsim采用对象对实际过程中的各元素建模•连接(Connections)–Flexsim中通过对象之间的连接定义模型的流程•方法(Methods)–对象中的方法定义了模型中各对象所需要完成的作业3334对象与继承对象与继承•Flexsim采用面向对象的技术•大部分Flexsim对象都是FixedResource或TaskExecutor对象的子对象–子对象拥有其父对象所有的接口和相应的功能–用户相对比较容易很快掌握子对象的使用3435Flexsim家族树家族树3536Flexsim的对象库的对象库36•Flexsim有丰富的对象库,其中实体也是灵活便,可以满足客户个性需求,且可以自定义实体并保存,方便以后调用。
37对象分类对象分类•离散类(Discrete Objects)–资源类(Fixed Resources)•Source, Queue, Processor, Sink, Combiner, Separator, MultiProcessor, Conveyor, MergeSort, FlowNode, Rack, and Reservoir–执行类(TaskExecuter)•Dispatcher, Operator, Transporter, Elevator, Robot, Crane, ASRSvehicle–网络类(Node)•NetworkNode, TrafficControl–图示类(Visual Object)•VisualTool, Recorder•连续类(Fluid Objects)–FluidTank,FluidGenerator,FluidTerminator,FluidMixer,FluidBlender,FluidSplitt-er,FluidPipe,FluidProcessor,ItemToFluid,FluidToItem,and TheTicker3738方法(方法(Method))•方法是用来完成一项任务的一系列规则集•好的方法应是可以重复使用的•Flexsim采用一系列方法集来完成所建模型的作业。
方法集主要有:到达方法、触发方法、流方法、临时实体库方法3839Flexsim建模方法集建模方法集•Arrival Method–Determines how and when FlowItems Enter the model•Trigger Method–Determines what, where, and when to assign information to FlowItems•Flow Method–Determines how, where, and when to move FlowItems through the model•Navigation Method–Model navigation, and fly through•FlowItem Bin Method–Defines the FlowItem Characteristics•TaskExecuter Move Method–Dertermins who, and how FlowItems move from one FixedResource to another3940触发器的概念触发器的概念•当资源对象上发生重要事件时,触发器被触发•用户指定当触发发生时产生的一系列动作(触发器逻辑)•可以定义的触发器包括:当实体被生成时,当实体进入或离开固定资源时,当处理过程完成时等等•每类资源对象都有自己的一套触发器41触发器触发器•定义和定制在特定事件发生时的系统行为–向实体写入信息–发送消息给其他资源对象–改变资源对象自身的行为特征–……42实体流实体流•无论对象在模型布局中处于什么位置,实体从一个对象被传递到下一个对象都无需消耗任何时间•添加输送机或移动资源用于运输,可以给实体流产生时间延迟–输送时间取决于输送机的长度和速度–对象间的运送时间取决于对象间的距离,以及移动资源的速度、加速度和减速度43应用应用 Flexsim建模的基本步骤建模的基本步骤1构建模型布局2定义对象流程3编辑对象参数4运行仿真模型5 仿真结果输出6.分析仿真结果4344步骤步骤1. 构建模型布局构建模型布局•将仿真所需要的对象模型从对象库中拖拽到仿真视图窗口中的适当位置4445步骤步骤2. 定义对象流程定义对象流程•根据连接类型,按下“a”或“s”键的同时用鼠标从一个对象拖拉到另一个对象上以连接二者45•也可通过鼠标选择,来进行连接46步骤步骤2. 定义对象流程定义对象流程 (续(续1))•连接两个对象端口所需按键–“a”键•用来将对象1的输出端口连接到对象2的输入端口上–“q”键•用来取消对象1的输出端口与对象2的输入端口之间的连接–“s”键•用来连接对象1与对象2的中心端口–“w”键•用来取消对象1与对象2的中心端口的连接4647步骤步骤2. 定义对象流程定义对象流程 (续(续2))•各类端口连接的显示位置–输出端口显示在对象的右上角–输入端口显示在对象的左上角–中心端口显示在对象底部中心4748步骤步骤2. 定义物流流程定义物流流程 (续(续3))•察看对象的端口连接状况–对象属性窗口General选项卡–调整端口的编号顺序–删除端口连接4849•属性/参数–用于编辑和察看所有对象共同的一般性的信息•外形、尺寸、转角、位置•显示模式•端口连接•标签•统计数据–用于编辑对象特定的性能特征步骤步骤3. 编辑对象参数编辑对象参数•双击对象可以打开对象的参数对话框50属性属性•每个对象都具有同样的一组属性设置项目•Visual(外观)–外形和尺寸•General(常规)–端口连接–显示模式开关•Labels(标签)–自定义属性•Statistics(统计)–产量、状态、排队量、停留时间–数据、图表51对象尺寸和转角对象尺寸和转角•属性选项中可以定义对象的位置、尺寸和转角•此外,在模型窗口中也可以实现(勾选菜单栏中Edit/Resize and Rotation Objects)•左键拖动箭头改变尺寸•右键拖动箭头进行旋转52参数参数•每个对象类有自己的参数选项•参数影响实体在对象中的停留时间和在对象间流动的线路•Apply(应用)——使改变生效•OK(确定)——使改变生效并关闭窗口•Cancel(取消)——关闭窗口,不做改变•Properties——打开对象的属性窗口53参数项目参数项目•参数按照类别分在不同的项目中•每个固定资源对象都有“Flow”(流)和“Triggers”(触发器)项54下拉菜单复合框下拉菜单复合框•下拉菜单•代码模版(适合修改参数)•代码编辑(修改C++代码)55步骤步骤4.运行仿真模型运行仿真模型•重置模型•控制速度•运行仿真55注:如果用到了C++代码就需要进行编译步骤步骤5. 仿真结果输出仿真结果输出•每次运行结果可以用2D、3D或可视化实时动画来显示。
•除了模型动画外,每个模型运行的结果能够通过访问预定的报告、用户定义报告、预定表格和用户自定义表格来查看结果也可以传给外部软件程序57步骤步骤6. 仿真结果分析仿真结果分析•仿真之前通过菜单Statistics /Object Graph Data/Selected Objects On进行选择•仿真时在对象属性对话框Statistics选项卡中可实时察看相应对象的统计数据和图表58步骤步骤6. 分析仿真结果分析仿真结果•点击Statistics->Reports and Statistics可以生成数据统计报告5859标准报告标准报告•为模型中的所有对象创建一个表格形式的报告(可以用Excel打开的csv格式文件)•选择报告中包括的若干标准系统变量60案例案例•目的–使用资源库中的多种对象使用•描述–每隔20秒一份原材料进入分离器,并被分为三份,分别进入下述三条不同的加工路径:–路径一:原材料经过S形输送机到达组合器每八份原材料被放置在一个托盘上,并经过后续的输送机运送到接收器–路径二:原材料经过输送机到达多功能处理器在多功能处理器上,原材料将经过三个加工工序,工序一需要3秒钟,工序二需要4秒种,工序三需要5秒钟,其中工序二需要一名操作员参与才能进行。
完成全部三个工序后,运输车辆将产品运送到货架上存放–路径三:原材料沿流节点到达堆放区,此堆放区需积累达10份原材料才会一份一份地送至处理器进行加工,每份加工时间是20秒加工完成的产品会放置在后续的堆放区中等待操作员将其运送到相应的接收器中61案例案例62实例实例1:简单仿真模型的建立:简单仿真模型的建立•生产线同时生产三种产品,然后被送到监测车间的缓存区检测车间有三台监测系统分别对这三种产品进行检测后,通过各自的传送带将产品运输出去6263模型描述模型描述•产品到达检测车间的时间服从均值为10,方差为9的正态分布•到达检测车间的产品类别为1, 2, 3,分别用不同的检测系统检测•缓存区最大容量为500件产品•机器加工时间服从(0,20)的指数分布•传送带传输速度为2m/s63•在此的基础上,2个检测员参与到了产品的检测中•检测员的任务是从缓冲区取出产品,并安装到相应的监测系统中,安装时间为10秒•传送带末端的产品由叉车送出•(1)添加一个3D曲线图来显示暂存区的当前数量•(2)如何添加一个3D 柱状图来显示暂存区的停留时间•(3)在上面例题的基础上,使用叉车将暂存区中三种产品分别放到三个货架上。
要求所有类型1的临时实体放到货架2,类型2的临时实体都送到货架3,所有类型3的临时实体都送到货架1.•(4)采用网络节点,为叉车建立一个路径网络66步骤步骤1:构建模型布局:构建模型布局•从对象库中拖放所需的对象到建模视图中6667步骤步骤2. 定义对象流程定义对象流程67•按住A键或直接选择鼠标方式,同时用鼠标左键点击Source对象并且拖动鼠标至Queue对象此时会出现一条黄线连接然后,黄线将变成一条黑线,表示Source和Queue的端口已经连接上 •使用相同方法,分别连接其它对象68步骤步骤2. 定义对象流程(续)定义对象流程(续)6869步骤步骤3. 编辑对象参数编辑对象参数•定义产品的流出•设置缓存区参数•设置检测设备参数6970定义产品的流出定义产品的流出•双击Source对象,打开其参数对话框7071修改产品流出间隔时间(修改产品流出间隔时间(1))•从Inter-Arrival time 下拉框中选择Statistical Distribution7172修改产品流出间隔时间(修改产品流出间隔时间(2))•修改选项的默认参数–点击Template按钮–将其中蓝色的exponential(0,20,1)改为normal(20,2,1)。
即为服从均值为20,标准差为2的正态分布7273指派产品不同的型号和颜色指派产品不同的型号和颜色•选择Source Triggers选项卡, 在 OnCreation下拉框中选择Set Itemtype and Color来改变产品类型和颜色 •使用默认值即可,即为duniform(1,3)服从1到3的均匀分布7374设置缓存区容量设置缓存区容量•双击Queue,其参数对话框将会出现•将Maximum Content 对应值改为 25. 点击Apply确认 7475 设置缓存区产品流选项设置缓存区产品流选项•转到Flow选项卡,在 “Output” 框中, 选择 “Send To Port” 下拉框中的“By Expression” 选项•依次点击Apply和OK按钮,关闭Queue对象的参数对话框7576设置检测设备检测时间设置检测设备检测时间•双击第一个Processor对象•在参数对话框“Process Time” 下拉框中选择 “Statistical Distribution”选项•将函数参数中由默认值10改为30•同样设置其他两个Processor对象7677步骤步骤4. 编译运行仿真编译运行仿真77•编译模型•重置模型•控制速度•运行仿真注:在Flexsim4.52版本中不需要时时编译,如果用到C++代码就需要进行编译,本模型不需编译F2键78步骤步骤5. 观察仿真结果观察仿真结果•现在模型视图处于由上到下的垂直投影图中,该投影图在建模时经常使用,若在模型显示方面经常使用透视图。
•选择工具栏中的Persp按钮可打开一个新的透视图 7879仿真透视图显示仿真透视图显示7980仿真统计结果的简单查看(仿真统计结果的简单查看(1))•右键点击工作区调出View Setting菜单•选中“Show Names”(默认为选中)81仿真统计结果的简单查看(仿真统计结果的简单查看(2))•鼠标右键单击对象,从弹出菜单选择Properties,然后从属性对话框中选择Statistics选项卡•Statistics选项卡中里面又包括State, Content, Staytime四个子选项卡8182仿真模型文件的保存仿真模型文件的保存•仿真文件编写过程中要注意经常保存仿真文件•保存修改–主窗口File菜单Save或者工具栏中选择保存图标•如果需要备份可以使用另存为–主窗口File菜单Save Model As …8283实例实例2:统计信息的查看与显示:统计信息的查看与显示•打开已保存的例1的模型文件•另存为Example2.fsm8384选取进行统计对象(选取进行统计对象(1))•按住Ctrl键,选中三个Processor对象,这时候所选中的对象外面出现一红色方框8485选取进行统计对象(选取进行统计对象(2))•点击主窗口菜单Statistics / Object Graph Data / Selected Objects On选择所选中对象为统计对象•进行统计的对象外面出现绿色方框•按住Shift键点击模型视图的空白区域,可取消所有对象的选定(红色方框)8586添加添加Recorder对象对象•拖放3个Recorder对象至建模视图中8687修改修改Recorder对象视图参数对象视图参数•打开透视图•依次打开Recorder的属性对话框,修改Visual选项卡中的SX, SY均修改为6,其它视情况调整8788修改修改Recorder对象图示参数对象图示参数•双击第一个Recorder对象,打开属性对话框•点击按钮“Record”,选择–Type of Data为Standard Data–Object Name为Processor 3–Data to capture为Staytime•点击“Apply”保存8889修改修改Recorder对象表头对象表头•“Standard Display Options”属性下修改Graph Title为Staytime of Processor 3•修改坐标轴参数–Lower Bound改为0–Upper Bound改为20–Divisions改为10•点击按钮“Done”退出参数设置•依次修改其它两个Recorder对象的参数8990保存,重置,运行保存,重置,运行9091实例实例3::TaskExecuter的应用的应用•在例1的基础上,2个检测员参与到了产品的检测中•检测员的任务是从缓冲区取出产品,并安装到相应的监测系统中,安装时间为10秒•传送带末端的产品由叉车送出9192修改仿真模型修改仿真模型•打开例1的仿真模型文件,另存为Example3.fsm•修改仿真模型如图9293创建创建“s”连接连接•按住“s”将Dispatcher对象分别与第一个Queue对象及Process对象连接起来•同样连接第二个Queue对象与叉车对象9394连接连接Dispatcher与与Operator•按住“a”连接Dispatcher对象的输出端口和两个Operator对象的输入端口9495修改缓冲区参数修改缓冲区参数•打开第一个Queue的参数窗口•在Flow选项卡中选中“Use Transport”•同样修改另一个Queue的选项9596修改检测系统的参数修改检测系统的参数•打开Processor对象的参数窗口•修改Setup Time为By Expression: 10•选中Operators选项卡中的Use Operator(s) for Setup•同样修改其它两个Processor对象9697保存,重置,运行保存,重置,运行9798实例实例4::NetworkNode的应用的应用•将例3中的Sink改成3个货架,3种产品检测完毕后分别放入对应的三个货架中•叉车只能够沿着规定路线行驶9899修改例修改例3仿真模型仿真模型•删除Sink对象,添加三个Rack对象•将第二个Queue对象与三个Rack对象分别用“a”连接99100修改缓存区与货架参数修改缓存区与货架参数•修改第二个Queue对象的Send To Port参数为By Expression 默认值即可100•修改货架高度为5层,点击“Apply Basic Settings”和“OK”确定101保存,重置,运行保存,重置,运行•观察仿真运行时叉车的行驶路线101102添加添加NetworkNode对象对象•在模型视图中添加NetworkNode对象•“a”连接NetworkNode到相应的存取位置(蓝色细线)102103创建路网创建路网•“a”连接相应的NetworkNode对象形成路网•“a”连接叉车到路网中(红色细线)103104路网修改方法路网修改方法•右键调出Travel Networks 窗口,选择Curve再连接,托拽路网上的小黑点( SplinePoint ),可以修改路径的弯曲形状•按住“x”键单击小黑点( SplinePoint )可以在路段上添加另一个另外一个小黑点( SplinePoint )104105路网修改方法路网修改方法•右键后选择Curve托拽路网上的•按住“q”键从一个NetworkNode拖到另一个NetworkNode可取消托拽方向的连接,形成单向路径(取消路径需要按住取消双方向的连接)105106模型路网修改模型路网修改•设置2条单向路径106107保存,重置,运行保存,重置,运行107108实例实例5:连续系统应用:连续系统应用•首先通过Operator将2个不同类型的FlowItem分别转换为2种流体然后分别传入2个储罐Tank根据比例进行混合加工成一种新流体,然后再转换为固体传送至Sink里。
108109模型描述模型描述•FlowItem到达时间:按照0到10的指数分布•ItemToFluid最大容量:20加仑•ItemToFluid转换率:1个单位的FlowItem转换为10加仑•ItemToFluid传送速率:每秒2加仑•Pipe最大容量:20加仑(进Tank);其他为10加仑•Tank:1加仑为低标位,45加仑为高标位•FluidToItem容量:10加仑•FluidToItem转换率:10加仑转换1个单位FlowItem•FluidToItem传送速率:每秒1加仑109110模型描述(续)模型描述(续)•混合器Mixer Steps步骤–Step 1:接收入口1的Fluids,无延迟时间–Step 2:接收入口2的Fluids,延迟10秒钟•混合器Mixer Recipe策略:–入口1:接收10加仑,执行Step1–入口2:接收20加仑,执行Step2110111步骤步骤1:构建模型布局:构建模型布局•将仿真所需要的对象模型从对象库中拖拽到仿真视图窗口中的适当位置•所需对象如下:–2个Sources 1个Operator 2个FluidToItems 2个FluidPipes 2个FluidTanks 2个more FluidPipes 1个FluidMixer 1个FluidProcessor 1个FluidToItem 1个Conveyor 1个Sink 111112步骤步骤1:构建模型布局(续):构建模型布局(续)112113步骤步骤2:定义对象流程:定义对象流程•利用“A”键分别做如下图连接113114步骤步骤3. 编辑对象参数编辑对象参数•定义Source1,Source2•设置ItemToFluid参数•设置Tank参数•设置FluidMixer参数•设置FluidToItem参数•设置所有Pipe参数•FluidProcessor参数默认不变114115定义定义Source参数参数•定义source流出间隔时间,以及分别设置ItemType为:1,2115116设置设置ItemToFluid参数参数•MaximumContent设为20•Fluid per Discrete Unit设为10•MaximumObjectRate以及MaximumPortRate设为2116117设置设置Tank参数参数•设置LowMark:10;HighMark:45•设置PassingLowMark以及PassingHighMark触发器117118设置设置FluidMixer参数参数•根据模型描述分别设置FluidMixer的MixerSteps及MixerRecipe118119设置设置FluidToItem参数参数•同ItemToFluid类似,设置如下•MaximumContent设为20•Fluid per Discrete Unit设为10•MaximumObjectRate以及MaximumPort Rate设为2119120设置设置Pipe参数参数•Flow Mode设为:Flow Evenly•MaximumContent设为:20•MaximumFlowRate设为:2•为了显示2种不同流的效果,将前面2个Pipe的颜色分别设为红色,蓝色。
在每个pipe的属性窗口即可以改变120121步骤步骤4:保存,重置,运行:保存,重置,运行121122美化与演示美化与演示•View setting•AVI 制作制作•图片抓取图片抓取123培训内容培训内容•Flexsim软件的安装步骤•Flexsim建模的基本概念•Flexsim软件的使用步骤•Flexsim实例训练•Flexsim软件的开发应用–Code–树结构视图–Tools Menu123124一般规则一般规则•区分大小写(A不等同于a)•没有限制特定的格式(以“易读的”代码为目标,可以自由使用空格、制表符和回车换行)•文本字符串由引号括起,"mytext"•函数调用后面用圆括号,逗号分隔函数的参数,moveobject(item, container)•函数总是以分号结束125一般规则一般规则•根据需要可以在数学和逻辑表达式中自由地使用圆括号,(x+10)*y•大括号用于定义一段逻辑表达•双斜线用于一行中其后的部分,//my comment•多行注释以/*开始,*/结束•名字定义中不能含有空格或特殊字符,下划线除外•名字中可以含有数字,但是不能以数字开头126Code•Flexsim主要两种编码形式:Flexscript、C++。
•关系:Flexscript具有C++的结构,C++的语法,但又相对独立于C++在Flexsim自带的Command集中C++和Flexscript可以一样使用•区别:Flexscript更加便捷,调试运行无需编译,在安装Flexsim时不对Visual C++.Net做要求;C++调试运行必须首先进行编译,并且需要安装Visual C++.Net但其能力包含Flexscript但又超过它功能更强大126127Code•在Flexsim里面,虽然可以使用所有C++功能,但是作为一个Flexsim的建模者仅仅需要知道很少以部分Command就可以用来创建出复杂的模型因此,本部分通过对FlexScript的讲解来进行Flexsim编码部分的说明127128变量类型变量类型128变量名变量名类型说明类型说明int整型变量double浮点变量string字符串变量treenode树节点变量数组变量intarray整型数组变量doublearray浮点数组变量stringarray字符串数组变量treenodearray树节点数组变量129数学运算符及方法数学运算符及方法操作符或方法操作符或方法浮点例子浮点例子整型例子整型例子+1.6+4.2 (=5.8)2+3 (=5)-5.8-4.2 (=1.6)5-2 (=3)*1.2 * 2.4 (=2.88)5-2 (=3)/6.0/4.0 (=1.5) 20/7 (=2) %(integer mode)34%7(=6)sqrt()sqrt(5.3) (=2.3)pow()pow(3.0,2.2) (=11.2) pow(3,2) (=9)round()round(5.6) (=6)frac() frac(5.236) (=0.236)fabs()fabs(-2.3) (=2.3)fmod() (floating point mod)fmod(5.3,2) (=1.3)129130比较运算符及方法比较运算符及方法操作符或方法操作符或方法例子例子> (greater than)1.7>1.7 (false)< (less than)-1.7 < 1.5 (true)>= (greater than or equal to)45 >= 45 (true)<= (less than or equal to)45 <= 32 (false) == (equal to)45 == 45 (true)!= (not equal to)45 != 35 (true)comparetext()comparetext(String1,String 2)130131关系运算符及变量关系运算符及变量操作符或方法操作符或方法例子例子&& (logical AND)x>5 && y<10|| (logical OR)x==32 || y>45! (logical NOT)!(x==32 || y>45)min()min(x, y)max()max(x, y)131132赋值运算符赋值运算符操作符操作符例子例子=x = x + 2;+=x += 2; (same as x = x + 2)-=x -= 2; (same as x = x - 2)*=x *= 2; (same as x = x * 2)/=x /= 2; (same as x = x / 2)++x ++; (same as x = x + 1)--x --; (same as x = x -1)132133基本对象指代基本对象指代•current:当前对象•item:当前涉及的实体•model():模型树根节点•rank(node, ranknum),rank(queue, 2)•node(relativepath, startnode),node("/Source1", model())134基本对象统计数据基本对象统计数据•inobject(obj, portnum),inobject(current, 1)•outobject(obj, portnum),outobject(dispatcher, 3)•centerobject(obj, portnum),centerobject(processor, 2)•content(obj),content(current)•getinput(obj),getinput(current)•getoutput(obj),getoutput(current)135基本对象属性基本对象属性•getname(obj)•setname(obj, name),setname(current, "Machine1"•getitemtype(item)•setitemtype(item, type),setitemtype(item, 5)•setcolor(obj, red, green, blue),setcolor(item, 128, 128, 128)136对象空间方面的属性对象空间方面的属性•位置:xloc(obj),yloc(obj),zloc(obj),setloc(obj, lx, ly, lz)•尺寸:xsize(obj),ysize(obj),zsize(obj),setsize(obj, sx, sy, sz)•转角:xrot(obj),yrot(obj),zrot(obj),setrot(obj, rx, ry, rz)137基本对象控制函数基本对象控制函数•closeinput(obj),openinput(obj)•stopinput(obj),resumeinput(obj)•closeoutput(obj),openoutput(obj)•stopoutput(obj),resumeoutput(obj)•sendmessage(toobj,fromobj,param1,param2,param3)•senddelayedmessage(toobj,delaytime,fromobj,param1,param2,param3)138基本对象控制函数基本对象控制函数•stopobject(obj),resumeobject(obj)•moveobject(obj,container)•closeoutput(current)•senddelayedmessage(centerobject(current,1),10,current,1,getlabelnum(current,2),0)139消息消息•消息:一个对象发送到另一个对象的信息•当一个对象接收到消息时,它的“OnMessage”(消息)触发器被触发•消息的发出是通过函数sendmessage(发出即时消息)和senddelayedmessage(发出延时消息)•每条消息可以有三个附加的数值型参数140消息执行机制消息执行机制141案例案例•目的–学习如何控制产品流和发送延时消息•描述–工作台在处理完每个产品之后,需要等待50秒钟,才能继续处理后面的产品。
使用closeinput和senddelayedmessage函数实现此功能•问题–如果此工作台最多可以同时处理两件产品,每次处理完一批(一件或两件)产品之后需要等待,如何实现?142案例案例143提示和输出提示和输出•语法–pf(num),pf(99.99)–pt(str),pt("finished")–pr():回车–msg(caption, str),msg("Step 1 completed", "Continue to Step 2?")•打印到Output Console(输出控制台)–视图菜单中打开输出控制台144可用的变量和返回值可用的变量和返回值145可用的变量和返回值可用的变量和返回值146数组变量的声明数组变量的声明intarray indexes = makearray(5); // makes an array with 5 elementsindexes[1] = 2; // in Flexsim, arrays are 1-basedindexes[2] = 3;indexes[3] = 2;indexes[4] = 6;indexes[5] = 10;doublearray weights = makearray(3);146147fillarray(weights, 3.5, 6.7, 1.4); // fillarray is a quick way of setting the array valuesstringarray fruits = makearray(2);fruits[1] = "Orange";fruits[2] = "Watermelon";treenodearray operators = makearray(4);operators[1] = centerobject(current, 1);operators[2] = centerobject(current, 2);operators[3] = centerobject(current, 3);operators[4] = centerobject(current, 4);数组变量的声明数组变量的声明148148if结构的使用说明结构的使用说明if (expression){code block}else{code block}if (content(item) == 2){colorred(item);}else{colorblack(item);}149149while结构的使用说明结构的使用说明while (expression){code block}while (content(current) > 0){destroyobject(last(current));}150150For结构的使用说明结构的使用说明for (var decl; expr; increment){code block}for (int index = 1; index <= content(current); index++){colorblue(rank(current,index));}151151switch结构的使用说明结构的使用说明switch (integer/character value){case casenum:{code blockbreak;}default:{code blockbreak;}}switch ((int)(getitemtype(item))){case 1:{coloryellow(item);break;}default:{colorgreen(item);break;}}152•可使用树视图详细地展开模型结构和实体,树图中包含了库实体、命令以及所有模型信息,犹如Windows的资源管理器。
树结构视图树结构视图153153Node•Tree视图中,在已存在的节点上单击右键,选在“Node/Insert After”可以插入节点,或者先选中节点单击空格键•分别可以用N、T、O快捷键,在选定之后改变节点分别为:数字、字符串(文本)、实体154节点结构节点结构•节点有名字•节点可以拥有一个数据项–数值–字符串–对象•如果节点拥有对象数据,使用 查看含有对象信息的展开的节点列表(数据项和成员函数)•如果节点包含子节点,使用 展开并查看子节点155155•节点树中的每一个node实际上都是 “treenode” 类的一个实例•treenode 可声明一个treenode类的实例Node class156与与treenode类型相关的函数类型相关的函数156•getnodename()•getnodenum()•getnodestr()•setnodename()•setnodenum()•setnodestr()•inc()•getdatatype()•getrank()•setrank()•content()•up()•rank()•first() and last()•prev() and next()•objectexists()157标准节点对象节点数据或元函数节点方法 (C++)方法 (FlexScript)Node的类型的类型158Tools Menu–Import Media Files–Model Startup Code–Flowitem Bin–Global Variables–Media Files–Model Startup Code–User Commands–Excel–Visio158159Global Tables全局表全局表•全局表(Global Table)–用于储存模型输入输出数据等–可以是数值类型或字符串类型159160160全局表的添加全局表的添加•在Global Tables菜单中单击“Add”•重命名表格名•设置行数与列数•点击“Advanced”设置各行或列的数据类型161全局表的修改全局表的修改•直接编辑表格附初值•借助事件的下拉列表对全局表进行修改•相关函数–gettablenum(tablename, row, col);–settablenum(tablename, row, col, value);–gettablestr(tablename, row, col);–settablestr(tablename, row, col, “string”);161162Global Variables全局变量全局变量•全局变量( Global Variables )菜单中具有两个标签:Global Variables和Global Macros–Global Variables可以定义如下八种类型全局变量: integer, double, treenode, string, integer array, double array, treenode array, and string array–Global Macros允许用户进行宏定义及仿真逻辑的程序控制语句162163Excel•将Excel文件数据导入Flexsim全局表,或者将Flexsim全局表导出为Excel文件•打开方式–通过菜单Tools-> Excel打开–通过toolbox按钮打开163164Excel的单表导入的单表导入164165Excel的单表导出的单表导出165166Excel的定制导入的定制导入166167综合应用技巧综合应用技巧•Tree树视图的应用•Visual Tool的视觉效果美化,封装层,以及通过它来进行多文件合并功能。
•通过BasicTE、BasicFR进行继承构建新的对象功能•利用官方网站资源获取更多媒体素材,例子以及软件最新的信息资源等•Fly Path、Fly Thougth 漫游视频制作167168案例案例•目的–学习使用“拉”式规则,根据实体的Label定义它们的加工路线•描述–电子部件加工完成后需要接受测试–两种类型的部件会进入堆放区,它们的到达是随机的,其中40%是类型为1的,60%是类型为2的–部件到达的间隔时间服从均值为40秒的指数分布–两台测试机用于Label值为1的部件,三台测试机用于Label值为2的部件 –测试时间服从120到150秒的均匀分布•问题–尝试平衡各个测试机的工作量–尝试使用“推”规则实现此模型169案例案例170案例案例•目的–学习使用for循环•描述–组合器将8个箱子放在1个托盘上–一个发生器提供托盘,另外一个发生器提供箱子–组合器发送实体到一条输送机,再由这条输送机发送到另一条输送机–在第一条输送机的离开触发器,使用for循环改变托盘上所有箱子的颜色•问题–尝试使用改变箱子外形171仿真练习仿真练习工工序序17分分工工序序210分分工工序序34分分工工序序43分分工工序序56分分6個個/H现现 状状瓶颈囗瓶颈囗•问题: 有一条由5个工序组成的生产线,每个工序有一台机械,前面的工序作业未完时,只能在现在的工序等待,每个工序的作业时间如下图所示。
如果每个工序能增加一台新机械,怎样进行工程设计才能使其生产能力由原来的6个/小时提高到20个/小时条件是尽可能利用低价机械(生产能力越高价格越贵)。

卡西欧5800p使用说明书资料.ppt
锂金属电池界面稳定化-全面剖析.docx
SG3525斩控式单相交流调压电路设计要点.doc
话剧《枕头人》剧本.docx
重视家风建设全面从严治党治家应成为领导干部必修课PPT模板.pptx
黄渤海区拖网渔具综合调查分析.docx
2024年一级造价工程师考试《建设工程技术与计量(交通运输工程)-公路篇》真题及答案.docx
【课件】Unit+3+Reading+and+Thinking公开课课件人教版(2019)必修第一册.pptx
嵌入式软件开发流程566841551.doc
生命密码PPT课件.ppt
爱与责任-师德之魂.ppt
制冷空调装置自动控制技术讲义.ppt


