1、1Flexsim软件的安装步骤(软件的安装步骤(单机版单机版)单机版单机版 根据电脑操作系统打上相应的补丁 安装.Net Framework 安装Flexsim 4.52 插入加密狗 输入客户序列号 开始菜单/Flexsim 4/Flexsim License Activation(推荐)安装Visual C+.net12Flexsim软件的安装步骤(网络版)软件的安装步骤(网络版)网络版网络版 服务器上安装:加密狗 hdd32.exe(加密狗驱动)(HASP device driver)aksmon32.exe(服务器监控程序)lmsetup.exe(服务器序列号管理器)*上面三个文件在网络
2、版安装光盘的目录下可以找到23Flexsim软件的安装步骤(网络版)软件的安装步骤(网络版)网络版网络版 客户机上安装:.Net Framework Flexsim4.52软件 插入加密狗 输入客户序列号(推荐)Visual C+.net34什么叫系统仿真什么叫系统仿真 系统仿真是现代企业科学管理技术之一系统仿真是现代企业科学管理技术之一,是将对象系统模型化是将对象系统模型化,把模把模型作为实验装置型作为实验装置,用来分析已存在的系统或计划系统的一种技术用来分析已存在的系统或计划系统的一种技术 。系系统仿真是工程师、经理和决策人对有关操作、流程、或是统仿真是工程师、经理和决策人对有关操作、流程
3、、或是动态系统的方案进行试验、评估、以及视觉化的工具。动态系统的方案进行试验、评估、以及视觉化的工具。5什么是模型什么是模型 为解决特定问题,对真实系统进行抽象和简化的产物 只包含真实系统中,解决问题所必需的元素6 不组装实际系统不组装实际系统,利用计算机模型进行实验利用计算机模型进行实验,可可以在短时间、低成本下运行,而且不给现行系统以在短时间、低成本下运行,而且不给现行系统带来任何中止或破坏的危险。带来任何中止或破坏的危险。现实系统现实系统现实系统(改进)现实系统(改进)现实世界现实世界计划计划实验实验成本高成本高时间长时间长业务停止的可能性大业务停止的可能性大改进方案改进方案仿真模型仿真
4、模型仿真模型仿真模型计划计划实验实验成本低成本低时间短时间短业务不需停止业务不需停止模型化模型化改进改进系统仿真技术的必要性系统仿真技术的必要性7解析模型与仿真模型解析模型与仿真模型 解析模型 静态的、确定性的 用于寻找答案 容易实现 难以捕捉时间、动态系统 难以捕捉复杂因果关系 难以建立与时间相关的约束 不能随时间运行模型 仿真模型 动态的、可执行的 能够捕捉任何复杂度的因果关系和时间约束 易于捕捉问题的随机本质 能够详细描述模型中的行为 可以测量各种量 建立模型需要更多的时间和技巧8Flexsim软件主窗口布局软件主窗口布局 Flexsim软件主窗口由下面五部分构成 菜单 工具栏 对象库
5、模型视图 仿真控制栏89工具栏工具栏 工具栏中常用到的按钮包括 FlowItem:临时实体库 Tree:打开模型树 Ortho:打开模型正投影视图 Persp:打开模型透视图910离散事件仿真离散事件仿真 只考虑在离散的时间点瞬间发生的改变状态的重要事件 事件包括:订单到达 零件加工完成 库存量下降到下限 状态包括 机器:空闲、加工、故障 车辆:行进、装货、卸货11统计分布函数统计分布函数指数分布正态分布Lognormal分布Gamma分布12Flexsim仿真模型的基本组成仿真模型的基本组成 对象(Objects)Flexsim采用对象对实际过程中的各元素建模 连接(Connections)
6、Flexsim中通过对象之间的连接定义模型的流程 方法(Methods)对象中的方法定义了模型中各对象所需要完成的作业1213对象与继承对象与继承 Flexsim采用面向对象的技术 大部分Flexsim对象都是FixedResource或TaskExecutor对象的子对象 子对象拥有其父对象所有的接口和相应的功能 用户相对比较容易很快掌握子对象的使用1314Flexsim家族树家族树1415Flexsim的对象库的对象库15 Flexsim有丰富的对象库,其中实体也是灵活便,可以满足客户个性需求,且可以自定义实体并保存,方便以后调用。16对象分类对象分类 离散类(Discrete Objec
7、ts)资源类(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 Ob
8、jects)FluidTank,FluidGenerator,FluidTerminator,FluidMixer,FluidBlender,FluidSplitt-er,FluidPipe,FluidProcessor,ItemToFluid,FluidToItem,and TheTicker1617离散类离散类-资源类对象资源类对象 Fixed Resource类对象一般是离散仿真模型中的主干对象 此类对象决定了模型的流程1718执行类对象执行类对象 Task Executer对象可从Fixed Resource对象中获取并执行任务,如物料搬运或生产操作等。一个Task Executer对
9、象可以向其他Task Executor对象指派任务,或者管理模型中所有的Task Executers对象。Task Executers对象不参与模型中的流程指派。1819网络类对象网络类对象 NetworkNode对象一般用来设定Task Executor对象的行动路线19NetworkNodeTrafficControl20图示类对象图示类对象 图示类对象可用在仿真模型中显示各种信息、标识、图片或图表等 VisualTool和Recorder对象可用来提高仿真模型的直观感,同时可用来实时显示和搜集模型的输出数据2021连续类对象连续类对象 连续类的对象主要是用于设计具有流体类的系统仿真,但它
10、又不仅仅局限于流体,事实上它能够仿真的具有连续属性的事件,如测量重量、容量的变化。作为连续类的11个对象中提供了2个ItemToFluid、FluidToItem具有连续与离散之间接合功能的对象。2122临时实体(临时实体(Flowitem)临时实体指模型中存在临时产生的对象 临时实体可用来表示生产或服务中的原料、产品或产品集,如零件、部件、托盘、容器等;也可以是任务执行者 临时实体可点击工具栏按钮Flowitem定义 可对每个临时实体定义对象类别(Itemtype)2223连接与端口连接与端口 Flexsim模型中的对象之间是通过端口来连接的 三种类型的端口 输入端口(input ports
11、)Fixed Resource之间的连接 输出端口(output ports)Fixed Resource之间的连接 中心端口(center ports)连接Task Executer和Fixed Resource2324“s”连接连接 按下“s”键的同时用鼠标从一个对象拖拉到另一个对象上以连接二者“s”连接仅用于中心端口之间的连接(即连接Task Executer和Fixed Resource)“s”连接用“w”取消(按下“w”键的同时用鼠标从一个对象拖拉到另一个对象上以连接二者)2425“s”连接连接中心端口26“a”连接连接 按下“a”键的同时用鼠标从一个对象拖拉到另一个对象上以连接二者
12、“a”连接用于除中心端口之外的所有其他的连接 “a”连接用“q”取消输出端口输入端口27方法(方法(Method)方法是用来完成一项任务的一系列规则集 好的方法应是可以重复使用的 Flexsim采用一系列方法集来完成所建模型的作业2728Flexsim建模方法集建模方法集 Arrival Method Determines how and when FlowItems Enter the model Trigger Method Determines what,where,and when to assign information to FlowItems Flow Method Deter
13、mines 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 another2829触发器的概念触发器的概念 当资源对象上发生重要事件时,触发器被
14、触发 用户指定当触发发生时产生的一系列动作(触发器逻辑)可以定义的触发器包括:当实体被生成时,当实体进入或离开固定资源时,当处理过程完成时等等 每类资源对象都有自己的一套触发器30触发器触发器 定义和定制在特定事件发生时的系统行为 向实体写入信息 发送消息给其他资源对象 改变资源对象自身的行为特征 31模型视图模型视图 视图是以视窗方式展示的模型,在Flexsim中可以同时打开多个视图,每个视图都是从各自的角度观察模型。正视图和透视图 平面视图和树结构视图32实体流实体流 无论对象在模型布局中处于什么位置,实体从一个对象被传递到下一个对象都无需消耗任何时间 添加输送机或移动资源用于运输,可以给
15、实体流产生时间延迟 输送时间取决于输送机的长度和速度 对象间的运送时间取决于对象间的距离,以及移动资源的速度、加速度和减速度33应用应用 Flexsim建模的基本步骤建模的基本步骤1 构建模型布局2 定义对象流程3 编辑对象参数4 运行仿真模型5 分析仿真结果3334步骤步骤1.构建模型布局构建模型布局 将仿真所需要的对象模型从对象库中拖拽到仿真视图窗口中的适当位置3435步骤步骤2.定义对象流程定义对象流程 根据连接类型,按下“a”或“s”键的同时用鼠标从一个对象拖拉到另一个对象上以连接二者35 在4.52版本中也可通过鼠标选择,来进行连接36步骤步骤2.定义对象流程定义对象流程(续(续1)
16、连接两个对象端口所需按键“a”键 用来将对象1的输出端口连接到对象2的输入端口上“q”键 用来取消对象1的输出端口与对象2的输入端口之间的连接“s”键 用来连接对象1与对象2的中心端口“w”键 用来取消对象1与对象2的中心端口的连接3637步骤步骤2.定义对象流程定义对象流程(续(续2)各类端口连接的显示位置输出端口显示在对象的右上角输入端口显示在对象的左上角中心端口显示在对象底部中心3738步骤步骤2.定义物流流程定义物流流程(续(续3)察看对象的端口连接状况 对象属性窗口General选项卡 调整端口的编号顺序 删除端口连接3839 属性/参数 用于编辑和察看所有对象共同的一般性的信息 外
17、形、尺寸、转角、位置 显示模式 端口连接 标签 统计数据 用于编辑对象特定的性能特征步骤步骤3.编辑对象参数编辑对象参数 双击对象可以打开对象的参数对话框40属性属性 每个对象都具有同样的一组属性设置项目 Visual(外观)外形和尺寸 General(常规)端口连接 显示模式开关 Labels(标签)自定义属性 Statistics(统计)产量、状态、排队量、停留时间 数据、图表41对象尺寸和转角对象尺寸和转角 属性选项中可以定义对象的位置、尺寸和转角 此外,在模型窗口中也可以实现(勾选菜单栏中Edit/Resize and Rotation Objects)左键拖动箭头改变尺寸 右键拖动箭
18、头进行旋转42参数参数 每个对象类有自己的参数选项 参数影响实体在对象中的停留时间和在对象间流动的线路 Apply(应用)使改变生效 OK(确定)使改变生效并关闭窗口 Cancel(取消)关闭窗口,不做改变 Properties打开对象的属性窗口43参数项目参数项目 参数按照类别分在不同的项目中 每个固定资源对象都有“Flow”(流)和“Triggers”(触发器)项44下拉菜单复合框下拉菜单复合框 下拉菜单 代码模版(适合修改参数)代码编辑(修改C+代码)45步骤步骤4.运行仿真模型运行仿真模型 编译模型 重置模型 控制速度 运行仿真45注:在Flexsim4.52版本中不需要时时编译可以直
19、接运行,如果用到了C+代码就需要进行编译F2键46步骤步骤5.分析仿真结果分析仿真结果 仿真之前通过菜单Statistics/Object Graph Data/Selected Objects On进行选择 仿真时在对象属性对话框Statistics选项卡中可实时察看相应对象的统计数据和图表47步骤步骤5.分析仿真结果分析仿真结果 点击Statistics-Reports and Statistics可以生成数据统计报告4748标准报告标准报告 为模型中的所有对象创建一个表格形式的报告(可以用Excel打开的csv格式文件)选择报告中包括的若干标准系统变量49案例案例 目的 使用资源库中的多
20、种对象使用 描述 每隔20秒一份原材料进入分离器,并被分为三份,分别进入下述三条不同的加工路径:路径一:原材料经过S形输送机到达组合器。每八份原材料被放置在一个托盘上,并经过后续的输送机运送到接收器。路径二:原材料经过输送机到达多功能处理器。在多功能处理器上,原材料将经过三个加工工序,工序一需要3秒钟,工序二需要4秒种,工序三需要5秒钟,其中工序二需要一名操作员参与才能进行。完成全部三个工序后,运输车辆将产品运送到货架上存放。路径三:原材料沿流节点到达堆放区,此堆放区需积累达10份原材料才会一份一份地送至处理器进行加工,每份加工时间是20秒。加工完成的产品会放置在后续的堆放区中等待操作员将其运
21、送到相应的接收器中。50案例案例51实例实例1:简单仿真模型的建立:简单仿真模型的建立 生产线同时生产三种产品,然后被送到监测车间的缓存区。检测车间有三台监测系统分别对这三种产品进行检测后,通过各自的传送带将产品运输出去5152模型描述模型描述 产品到达检测车间的时间服从均值为20,方差为4的正态分布 到达检测车间的产品类别为1,2,3,分别用不同的机器加工 缓存区最大容量为25件产品 机器加工时间服从(0,30)的指数分布 传送带传输速度为2m/s5253步骤步骤1:构建模型布局:构建模型布局 从对象库中拖放所需的对象到建模视图中5354步骤步骤2.定义对象流程定义对象流程54 按住A键或直
22、接选择鼠标方式,同时用鼠标左键点击Source对象并且拖动鼠标至Queue对象。此时会出现一条黄线连接。然后,黄线将变成一条黑线,表示Source和Queue的端口已经连接上。使用相同方法,分别连接其它对象。55步骤步骤2.定义对象流程(续)定义对象流程(续)5556步骤步骤3.编辑对象参数编辑对象参数 定义产品的流出 设置缓存区参数 设置检测设备参数5657定义产品的流出定义产品的流出 双击Source对象,打开其参数对话框5758修改产品流出间隔时间(修改产品流出间隔时间(1)从Inter-Arrival time 下拉框中选择Statistical Distribution5859修改产
23、品流出间隔时间(修改产品流出间隔时间(2)修改选项的默认参数 点击Template按钮 将其中蓝色的exponential(0,20,1)改为normal(20,2,1)。即为服从均值为20,标准差为2的正态分布5960指派产品不同的型号和颜色指派产品不同的型号和颜色 选择Source Triggers选项卡,在 OnCreation下拉框中选择Set Itemtype and Color来改变产品类型和颜色 使用默认值即可,即为duniform(1,3)服从1到3的均匀分布。6061设置缓存区容量设置缓存区容量 双击Queue,其参数对话框将会出现 将Maximum Content 对应值改
24、为 25.点击Apply确认 6162 设置缓存区产品流选项设置缓存区产品流选项 转到Flow选项卡,在“Output”框中,选择“Send To Port”下拉框中的“By Expression”选项 依次点击Apply和OK按钮,关闭Queue对象的参数对话框6263设置检测设备检测时间设置检测设备检测时间 双击第一个Processor对象 在参数对话框“Process Time”下拉框中选择“Statistical Distribution”选项 将函数参数中由默认值10改为30 同样设置其他两个Processor对象6364步骤步骤4.编译运行仿真编译运行仿真64 编译模型 重置模型
25、控制速度 运行仿真注:在Flexsim4.52版本中不需要时时编译,如果用到C+代码就需要进行编译,本模型不需编译F2键65步骤步骤5.观察仿真结果观察仿真结果 现在模型视图处于由上到下的垂直投影图中,该投影图在建模时经常使用,若在模型显示方面经常使用透视图。选择工具栏中的Persp按钮可打开一个新的透视图 6566仿真透视图显示仿真透视图显示6667仿真统计结果的简单查看(仿真统计结果的简单查看(1)右键点击工作区调出View Setting菜单 选中“Show Names”(默认为选中)68仿真统计结果的简单查看(仿真统计结果的简单查看(2)鼠标右键单击对象,从弹出菜单选择Properti
26、es,然后从属性对话框中选择Statistics选项卡 Statistics选项卡中里面又包括State,Content,Staytime四个子选项卡6869仿真模型文件的保存仿真模型文件的保存 仿真文件编写过程中要注意经常保存仿真文件 保存修改 主窗口File菜单Save或者工具栏中选择保存图标 如果需要备份可以使用另存为 主窗口File菜单Save Model As 6970实例实例2:统计信息的查看与显示:统计信息的查看与显示 打开已保存的例1的模型文件 另存为Example2.fsm7071选取进行统计对象(选取进行统计对象(1)按住Ctrl键,选中三个Processor对象,这时候所
27、选中的对象外面出现一红色方框7172选取进行统计对象(选取进行统计对象(2)点击主窗口菜单Statistics/Object Graph Data/Selected Objects On选择所选中对象为统计对象 进行统计的对象外面出现绿色方框 按住Shift键点击模型视图的空白区域,可取消所有对象的选定(红色方框)7273添加添加Recorder对象对象 拖放3个Recorder对象至建模视图中7374修改修改Recorder对象视图参数对象视图参数 打开透视图 依次打开Recorder的属性对话框,修改Visual选项卡中的SX,SY均修改为6,其它视情况调整7475修改修改Recorder
28、对象图示参数对象图示参数 双击第一个Recorder对象,打开属性对话框 点击按钮“Record”,选择 Type of Data为Standard Data Object Name为Processor 3 Data to capture为Staytime 点击“Apply”保存7576修改修改Recorder对象表头对象表头“Standard Display Options”属性下修改Graph Title为Staytime of Processor 3 修改坐标轴参数 Lower Bound改为0 Upper Bound改为20 Divisions改为10 点击按钮“Done”退出参数设置
29、 依次修改其它两个Recorder对象的参数7677保存,重置,运行保存,重置,运行7778实例实例3:TaskExecuter的应用的应用 在例1的基础上,2个检测员参与到了产品的检测中 检测员的任务是从缓冲区取出产品,并安装到相应的监测系统中,安装时间为10秒 传送带末端的产品由叉车送出7879修改仿真模型修改仿真模型 打开例1的仿真模型文件,另存为Example3.fsm 修改仿真模型如图7980创建创建“s”连接连接 按住“s”将Dispatcher对象分别与第一个Queue对象及Process对象连接起来 同样连接第二个Queue对象与叉车对象8081连接连接Dispatcher与与
30、Operator 按住“a”连接Dispatcher对象的输出端口和两个Operator对象的输入端口8182修改缓冲区参数修改缓冲区参数 打开第一个Queue的参数窗口 在Flow选项卡中选中“Use Transport”同样修改另一个Queue的选项8283修改检测系统的参数修改检测系统的参数 打开Processor对象的参数窗口 修改Setup Time为By Expression:10 选中Operators选项卡中的Use Operator(s)for Setup 同样修改其它两个Processor对象8384保存,重置,运行保存,重置,运行8485实例实例4:NetworkNode
31、的应用的应用 将例3中的Sink改成3个货架,3种产品检测完毕后分别放入对应的三个货架中 叉车只能够沿着规定路线行驶8586修改例修改例3仿真模型仿真模型 删除Sink对象,添加三个Rack对象 将第二个Queue对象与三个Rack对象分别用“a”连接8687修改缓存区与货架参数修改缓存区与货架参数 修改第二个Queue对象的Send To Port参数为By Expression 默认值即可87 修改货架高度为5层,点击“Apply Basic Settings”和“OK”确定88保存,重置,运行保存,重置,运行 观察仿真运行时叉车的行驶路线8889添加添加NetworkNode对象对象 在
32、模型视图中添加NetworkNode对象“a”连接NetworkNode到相应的存取位置(蓝色细线)8990创建路网创建路网“a”连接相应的NetworkNode对象形成路网“a”连接叉车到路网中(红色细线)9091路网修改方法路网修改方法 右键调出Travel Networks 窗口,选择Curve再连接,托拽路网上的小黑点(SplinePoint),可以修改路径的弯曲形状 按住“x”键单击小黑点(SplinePoint)可以在路段上添加另一个另外一个小黑点(SplinePoint)9192路网修改方法路网修改方法 右键后选择Curve托拽路网上的 按住“q”键从一个NetworkNode拖
33、到另一个NetworkNode可取消托拽方向的连接,形成单向路径(取消路径需要按住取消双方向的连接)9293模型路网修改模型路网修改 设置2条单向路径9394保存,重置,运行保存,重置,运行9495实例实例5:连续系统应用:连续系统应用 首先通过Operator将2个不同类型的FlowItem分别转换为2种流体然后分别传入2个储罐Tank根据比例进行混合加工成一种新流体,然后再转换为固体传送至Sink里。9596模型描述模型描述 FlowItem到达时间:按照0到10的指数分布 ItemToFluid最大容量:20加仑 ItemToFluid转换率:1个单位的FlowItem转换为10加仑 I
34、temToFluid传送速率:每秒2加仑 Pipe最大容量:20加仑(进Tank);其他为10加仑 Tank:1加仑为低标位,45加仑为高标位 FluidToItem容量:10加仑 FluidToItem转换率:10加仑转换1个单位FlowItem FluidToItem传送速率:每秒1加仑9697模型描述(续)模型描述(续)混合器Mixer Steps步骤 Step 1:接收入口1的Fluids,无延迟时间 Step 2:接收入口2的Fluids,延迟10秒钟 混合器Mixer Recipe策略:入口1:接收10加仑,执行Step1 入口2:接收20加仑,执行Step29798步骤步骤1:构
35、建模型布局:构建模型布局 将仿真所需要的对象模型从对象库中拖拽到仿真视图窗口中的适当位置 所需对象如下:2个Sources 1个Operator 2个FluidToItems 2个FluidPipes 2个FluidTanks 2个more FluidPipes 1个FluidMixer 1个FluidProcessor 1个FluidToItem 1个Conveyor 1个Sink 9899步骤步骤1:构建模型布局(续):构建模型布局(续)99100步骤步骤2:定义对象流程:定义对象流程 利用“A”键分别做如下图连接100101步骤步骤3.编辑对象参数编辑对象参数 定义Source1,Sou
36、rce2 设置ItemToFluid参数 设置Tank参数 设置FluidMixer参数 设置FluidToItem参数 设置所有Pipe参数 FluidProcessor参数默认不变101102定义定义Source参数参数 定义source流出间隔时间,以及分别设置ItemType为:1,2102103设置设置ItemToFluid参数参数 MaximumContent设为20 Fluid per Discrete Unit设为10 MaximumObjectRate以及MaximumPortRate设为2103104设置设置Tank参数参数 设置LowMark:10;HighMark:45
37、 设置PassingLowMark以及PassingHighMark触发器104105设置设置FluidMixer参数参数 根据模型描述分别设置FluidMixer的MixerSteps及MixerRecipe105106设置设置FluidToItem参数参数 同ItemToFluid类似,设置如下 MaximumContent设为20 Fluid per Discrete Unit设为10 MaximumObjectRate以及MaximumPort Rate设为2106107设置设置Pipe参数参数 Flow Mode设为:Flow Evenly MaximumContent设为:20 M
38、aximumFlowRate设为:2 为了显示2种不同流的效果,将前面2个Pipe的颜色分别设为红色,蓝色。在每个pipe的属性窗口即可以改变。107108步骤步骤4:保存,重置,运行:保存,重置,运行108109美化与演示美化与演示 View setting AVI 制作制作 图片抓取图片抓取110培训内容培训内容 Flexsim软件的安装步骤 Flexsim建模的基本概念 Flexsim软件的使用步骤 Flexsim实例训练 Flexsim软件的开发应用 Code 树结构视图 Tools Menu110111一般规则一般规则 区分大小写(A不等同于a)没有限制特定的格式(以“易读的”代码为
39、目标,可以自由使用空格、制表符和回车换行)文本字符串由引号括起,mytext 函数调用后面用圆括号,逗号分隔函数的参数,moveobject(item,container)函数总是以分号结束112一般规则一般规则 根据需要可以在数学和逻辑表达式中自由地使用圆括号,(x+10)*y 大括号用于定义一段逻辑表达 双斜线用于一行中其后的部分,/my comment 多行注释以/*开始,*/结束 名字定义中不能含有空格或特殊字符,下划线除外 名字中可以含有数字,但是不能以数字开头113Code Flexsim主要两种编码形式:Flexscript、C+。关系:Flexscript具有C+的结构,C+的
40、语法,但又相对独立于C+。在Flexsim自带的Command集中C+和Flexscript可以一样使用。区别:Flexscript更加便捷,调试运行无需编译,在安装Flexsim时不对Visual C+.Net做要求;C+调试运行必须首先进行编译,并且需要安装Visual C+.Net。但其能力包含Flexscript但又超过它功能更强大。113114Code 在Flexsim里面,虽然可以使用所有C+功能,但是作为一个Flexsim的建模者仅仅需要知道很少以部分Command就可以用来创建出复杂的模型。因此,本部分通过对FlexScript的讲解来进行Flexsim编码部分的说明。1141
41、15变量类型变量类型115变量名变量名类型说明类型说明int整型变量double浮点变量string字符串变量treenode树节点变量数组变量intarray整型数组变量doublearray浮点数组变量stringarray字符串数组变量treenodearray树节点数组变量116数学运算符及方法数学运算符及方法操作符或方法操作符或方法浮点例子浮点例子整型例子整型例子+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)sqr
42、t()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)116117比较运算符及方法比较运算符及方法操作符或方法操作符或方法例子例子(greater than)1.71.7(false)(less than)-1.7=(greater than or equal to)45=45(true)=(less than or eq
43、ual to)45 5&y45!(logical NOT)!(x=32|y45)min()min(x,y)max()max(x,y)118119赋值运算符赋值运算符操作符操作符例子例子=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)119120基本对象指代基本对象指代 current:当前对象 item:当前涉及的实体 model():模型树根节点 rank(node,rankn
44、um),rank(queue,2)node(relativepath,startnode),node(/Source1,model()121基本对象统计数据基本对象统计数据 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),
45、getoutput(current)122基本对象属性基本对象属性 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)123对象空间方面的属性对象空间方面的属性 位置:xloc(obj),yloc(obj),zloc(obj),setloc(obj,lx,ly,lz)尺寸:xsize(obj),ysize(ob
46、j),zsize(obj),setsize(obj,sx,sy,sz)转角:xrot(obj),yrot(obj),zrot(obj),setrot(obj,rx,ry,rz)124基本对象控制函数基本对象控制函数 closeinput(obj),openinput(obj)stopinput(obj),resumeinput(obj)closeoutput(obj),openoutput(obj)stopoutput(obj),resumeoutput(obj)sendmessage(toobj,fromobj,param1,param2,param3)senddelayedmessage(
47、toobj,delaytime,fromobj,param1,param2,param3)125基本对象控制函数基本对象控制函数 stopobject(obj),resumeobject(obj)moveobject(obj,container)closeoutput(current)senddelayedmessage(centerobject(current,1),10,current,1,getlabelnum(current,2),0)126消息消息 消息:一个对象发送到另一个对象的信息 当一个对象接收到消息时,它的“OnMessage”(消息)触发器被触发 消息的发出是通过函数sen
48、dmessage(发出即时消息)和senddelayedmessage(发出延时消息)每条消息可以有三个附加的数值型参数127消息执行机制消息执行机制sendmessage(toobj,fromobj,param1,param2,param3)senddelayedmessage(toobj,delaytime,fromobj,param1,param2,param3)currentmsgsendingobjectmsgparam(1)msgparam(2)msgparam(3)delaytimecurrent128案例案例 目的 学习如何控制产品流和发送延时消息 描述 工作台在处理完每个产品
49、之后,需要等待50秒钟,才能继续处理后面的产品。使用closeinput和senddelayedmessage函数实现此功能。问题 如果此工作台最多可以同时处理两件产品,每次处理完一批(一件或两件)产品之后需要等待,如何实现?129案例案例130提示和输出提示和输出 语法 pf(num),pf(99.99)pt(str),pt(finished)pr():回车 msg(caption,str),msg(Step 1 completed,Continue to Step 2?)打印到Output Console(输出控制台)视图菜单中打开输出控制台131可用的变量和返回值可用的变量和返回值132
50、可用的变量和返回值可用的变量和返回值133数组变量的声明数组变量的声明intarray indexes=makearray(5);/makes an array with 5 elementsindexes1=2;/in Flexsim,arrays are 1-basedindexes2=3;indexes3=2;indexes4=6;indexes5=10;doublearray weights=makearray(3);133134fillarray(weights,3.5,6.7,1.4);/fillarray is a quick way of setting the array v