Flexsim操作2_第1页
Flexsim操作2_第2页
Flexsim操作2_第3页
Flexsim操作2_第4页
Flexsim操作2_第5页
已阅读5页,还剩80页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1仿真專班培训仿真專班培训李李 亚亚 兵兵2课程大纲课程大纲 第五部分、建模语言 第六部分、概念和模型3第五部分第五部分 建模语言建模语言 Flexsim层次化结构 树形结构 建模语言 定制模型逻辑4什么是节点?什么是节点? Flexsim的基本数据结构是一个层次化的树形结构 主树模型和工程相关的对象和数据 视图树包括图形用户界面相关的对象和下拉菜单 模型树模型相关的对象和数据 节点是“树”的基本构成单元 节点在表面是看不到的,它们包含了对象、图形用户界面和数据的所有信息5节点结构节点结构 节点有名字 节点可以拥有一个数据项 数值 字符串 对象 如果节点拥有对象数据,使用 查看含有对象信息的展

2、开的节点列表(数据项和成员函数) 如果节点包含子节点,使用 展开并查看子节点6节点符号节点符号 标准文件夹 对象 对象数据 C+函数 FlexScript(Flexsim脚本)函数7模型树样本模型树样本8什么是函数?什么是函数? 函数名(参数1,参数2,等等) 参数可以是 数值 字符串 指向对象或节点的指针 函数举例 colorrandom(item) 许多Flexsim函数的作用都是从“树”中读取数据和向“树”存放数据9一般规则一般规则区分大小写(A不等同于a)没有限制特定的格式(以“易读的”代码为目标,可以自由使用空格、制表符和回车换行)文本字符串由引号括起,mytext函数调用后面用圆括

3、号,逗号分隔函数的参数,moveobject(item, container)函数总是以分号结束根据需要可以在数学和逻辑表达式中自由地使用圆括号,(x+10)*y大括号用于定义一段逻辑表达双斜线用于一行中其后的部分,/my comment多行注释以/*开始,*/结束名字定义中不能含有空格或特殊字符,下划线除外名字中可以含有数字,但是不能以数字开头10书写逻辑可能用到的帮助书写逻辑可能用到的帮助 现有的下拉菜单选项 示例和模型(/samples和/userprojects/DemoModels) Command Summary(命令集) Command Hints(命令提示) C+参考书11变量

4、类型变量类型 int(整数型),1、999 double(双精度型),0.0、123.45 string(字符串型),good fsnode*(节点指针型),theOp、item12变量声明和赋值变量声明和赋值 整数型,int index = 1; 双精度型,double length = 10.5; 字符串型,string str1 = qualified; 节点指针型,fsnode* myItem = last(current);13数学运算符数学运算符 x + y:x加y x y:x减y x * y:x乘以y x / y:x除以y sqrt(x):x的平方根 pow(x,y):x的y次方

5、 trunc(x):x取整数部分 frac(x):x的小数部分 fmod(x,y):x除以y的余数 min(x,y):x和y的较小值 max(x,y):x和y的较大值14比较比较 x y:x大于y x = y:x大于等于y x 2)moveobject(last(current),queue);在程序中,while循环是在测试表达式为真时使得一段代码一直反复重复执行的结构,所以为了避免无限循环下去,最终测试表达式的值要为假。34“for”循环结构循环结构for(start expression; test expression; count expression)code blockfor(i

6、nt index = 1; index = content(current); index+)totalWeight += getlabelnum(rank(current,index),weight);for循环允许一段代码重复执行一定次数,测试表达式最终值同样需要为假,以避免无限循环。35代码练习四代码练习四 目的 学习使用for循环 描述 组合器将8个箱子放在1个托盘上 一个发生器提供托盘,另外一个发生器提供箱子 组合器发送实体到一条输送机,再由这条输送机发送到另一条输送机 在第一条输送机的离开触发器,使用for循环改变托盘上所有箱子的颜色 问题 尝试使用setobjectshapein

7、dex函数改变箱子的外形36代码练习四布局代码练习四布局37第六部分第六部分 概念和模型概念和模型 通过搭建一些模型学习更多Flexsim概念和用法38模型四模型四概念概念 实体类型 “推”与“拉”式规则 概率分布函数39处理器处理器“拉拉”实体实体 Pull From Port(接收端口):实体可以进入的输入端口 Pull Requirement:决定是否允许一个实体进入 上游对象发送端口项设置为Open all ports(所有端口)40模型四模型四 目的 学习使用“拉”式规则,根据实体的实体类型定义它们的加工路线 描述 电子部件加工完成后需要接受测试 两种类型的部件会进入堆放区,它们的到

8、达是随机的,其中40%是类型为1的,60%是类型为2的。 部件到达的间隔时间服从均值为40秒的指数分布 两台测试机用于类型为1的部件,三台测试机用于类型为2的部件 测试时间服从120到150秒的均匀分布 问题 尝试平衡各个测试机的工作量 尝试使用“推”规则实现此模型41模型四布局模型四布局42模型五模型五概念概念 标签和实体类型 经验分布:全局表 触发器顺序43模型五模型五 目的 学习如何在实体上设置和使用标签,用于决定加工路线 描述 零件的到达服从均值为30秒的指数分布,四种类型的零件分别占全部零件的20%、30%、40%、10%。 四台处理器分别处理这四种不同类型的零件。首次加工的零件的处

9、理时间服从100到120秒的均匀分布,返工的零件的处理时间服从120到130秒的均匀分布。 零件加工完成后会被测试。每个零件的测试时间是10秒钟。测试合格的产品会离开模型,10%的产品会需要返工。 返工的零件将被优先处理 问题 瓶颈在哪里? 尝试改变需要返工的零件的形状44模型五布局模型五布局45模型六模型六概念概念 全局表 标签 触发器46全局表函数全局表函数 gettablenum(tablename, rownum, colnum) settablenum(tablename, rownum, colnum, num) gettablestr(tablename, rownum, col

10、num) settablestr(tablename, rownum, colnum, str) settablenum(Inventory, 1, 5, content(current) gettablestr(Alias, getitemtype(item), 2)47模型六模型六 目的 使用全局表定义加工路线的简单案例 学习使用标签跟踪实体的加工步骤 描述 3种不同的产品需要进入一个由5台处理器组成的加工单元 产品按照下述路线被处理 类型为1的产品需要经过工作台1、3和2 类型为2的产品需要经过工作台1、2和4 类型为3的产品需要经过工作台2、4、3和5 使用全局表,以保证产品按照正确的

11、顺序发送到相应的工作台进行加工 所有没有完全加工完成的产品都放置在同一个堆放区中 问题 尝试用颜色标示产品所处的加工步骤48模型六布局模型六布局49模型七模型七概念概念 任务序列优先级 全局指针50模型七模型七 目的 学习如何使用一个操作员同时负责搬运和处理实体 描述 零件的到达时间间隔是服从均值为20秒的指数分布。零件到达后由操作员将其运送到一个空闲的工作台上。 操作员需要对零件进行10秒钟的预处理 之后工作台自行处理实体,需要20秒钟时间 加工完成后,实体离开系统 一个操作员负责所有的三个工作台 问题 使操作员在运送完一个实体后,立即对该实体进行预处理 尝试不使用中心端口连接实现此模型51

12、模型七布局模型七布局52模型八模型八概念概念 发送端口 “中断”需求53模型八模型八 目的 学习使用移动资源上的“中断”需求项 描述 发生器均匀地产生三种不同类型的实体,并随机发送到其后的三个堆放区内。 一辆运输车将实体运送到后面的三个堆放区内,此三个堆放区分别可以容纳一种类型的实体。 实体经过处理器,最后由接收器离开系统。 运输车辆最多一次可以装载5个实体。 运输车辆只能同时装载同一类型的实体。 问题 尝试其他“中断”需求选项,观察运输车辆的行为。54模型八布局模型八布局55模型九模型九概念概念 移动资源组 自定义任务序列 时间表56模型九模型九 目的 练习使用移动资源组、调度规则 描述 一

13、个工作单元有5个工作台 每个零件必须依次在5个工作台上进行加工 此工作单元中有一组由3个操作员组成的移动资源组 操作员负责运送每个零件到下一个工作台,以及预处理任务 预处理时间是5秒钟,处理时间是15秒钟 每25秒到达一个新零件 问题 每小时的生产能力是多少? 使用自定义任务序列,以提高生产能力。 使用时间表,安排操作员在不同的时间休息。 57模型九布局模型九布局58模型十模型十概念概念 更新组合器组件列表 Excel数据导入59定制定制Excel数据导入数据导入/导出导出规则 必须首先使用excellaunch函数启动Excel,然后使用excelopen函数打开一个Excel文档。使用ex

14、celsetsheet函数指定一个表单,然后可以使用excelreadnum,excelwritenum,excelimporttable和excelexporttable等函数进行读写操作。如果需要打开另一个文档,需要先使用excelclose函数关闭当前文档。最后使用excelquit函数退出Excel。示例excellaunch();excelopen(C:Program FilesFlexsim3userprojectsTrainingExcel Custom.xls);excelsetsheet(Sheet1);excelwritenum(1,2,gettablenum(Data,1

15、,1);settablenum(Data,1,1,excelreadnum(1,1);excelclose(true);excelquit();60模型十模型十 目的 学习如何控制组合器的组件列表 学习如何从Excel导入数据到发生器的到达时刻表 描述 一个供应商向5个不同的客户提供总共10种不同的产品 每个客户的订单不同 每个客户所订的产品放在一个托盘上,经过输送机进入接收器 使用订单和时刻表两个表格构建此模型 问题 从Excel中导入所需的表格61模型十布局模型十布局62模型十订单表模型十订单表Customer1Customer2Customer3Customer4Customer5Pro

16、duct112314Product220121Product301012Product412132Product533301Product624020Product700223Product823330Product912412Product101130063模型十到达时刻表模型十到达时刻表ArrivalTimeItemNameItemTypeQuantityCustomer10OrderA11Customer23600OrderB21Customer37200OrderC31Customer410800OrderD41Customer514400OrderE5164更深一步的概念和模型更深一

17、步的概念和模型 打开、关闭输入/输出端口 消息 抽象模型 全局对象指针 自定义任务序列 数据库 用户事件 模型初始化代码 全局C+代码 用户函数65模型模型A1概念概念 打开、关闭输入/输出端口 消息66基本对象控制函数基本对象控制函数closeinput(obj),openinput(obj)stopinput(obj),resumeinput(obj)closeoutput(obj),openoutput(obj)stopoutput(obj),resumeoutput(obj)sendmessage(toobj, fromobj, param1, param2, param3)sendd

18、elayedmessage(toobj, delaytime, fromobj, param1, param2, param3)stopobject(obj),resumeobject(obj)moveobject(obj, container)closeoutput(current)senddelayedmessage(centerobject(current,1),10,current,1,getlabelnum(current,2),0)67消息消息 消息:一个对象发送到另一个对象的信息 当一个对象接收到消息时,它的“OnMessage”(消息)触发器被触发 消息的发出是通过函数send

19、message(发出即时消息)和senddelayedmessage(发出延时消息) 每条消息可以有三个附加的数值型参数68消息执行机制消息执行机制sendmessage(toobj,fromobj, param1,param2, param3)senddelayedmessage(toobj,delaytime, fromobj,param1, param2, param3)currentmsgsendingobjectmsgparam(1)msgparam(2)msgparam(3)delaytimecurrent69模型模型A1 目的 学习如何控制产品流和发送延时消息 描述 工作台在处理

20、完每个产品之后,需要等待50秒钟,才能继续处理后面的产品。使用closeinput和senddelayedmessage函数实现此功能。 问题 如果此工作台最多可以同时处理两件产品,每次处理完一批(一件或两件)产品之后需要等待,如何实现?70模型模型A1布局布局71模型模型A2概念概念 抽象模型 全局对象指针 For循环 moveobject函数72模型模型A2目的学习创建抽象模型的方法学习在触发器中定义C+逻辑代码描述每天都有货物到达,也都有订单到达,1份货物可以满足1份订单的需求。每天到达货物的数量和每天的订单数量都服从均值为10的指数分布。一共有5种不同类型的货物和订单,每天到达的货物和

21、订单都会是其中一种,而且每一种的可能性都相同。货物和订单的类型相匹配。货物到达时,如果现存的订单显示需要这种货物,那么货物要立即满足订单的需要,同时更新订单;如果不需要则暂时存放起来。订单到达时,如果库存中的货物有可以满足需要的,那么立即消除相应的货物和订单;否则将订单保留。问题如果连续运行1年需要多大的容量以暂存货物?画出表示每天缺货总量的曲线图订单被满足的平均等待时间是多长?73模型模型A2布局布局74模型模型A3概念概念 自定义任务序列 全局对象指针75移动资源控制移动资源控制 简单指令createdelaytask(centerobject(current, 1), 100, STAT

22、E_UTILIZED, 0, 0)freeoperators(op, item) 自创建任务序列createemptytasksequence(te, priority, preempting) 返回值为指向此任务序列的指针(例如fsnode* ts)inserttask(ts, tasktype, involved1, involved2, param1, param2, param3, param4)dispatchtasksequence(ts)76任务序列示例任务序列示例fsnode *forklift = centerobject(current, 1);fsnode *origin

23、 = inobject(current, 1);fsnode *destination = outobject(current, 2);fsnode *item = first(origin);fsnode *ts = createemptytasksequence(forklift, 0, 0);inserttask(ts, TASKTYPE_TRAVEL, origin, NULL);inserttask(ts, TASKTYPE_FRLOAD, item, origin);inserttask(ts, TASKTYPE_TRAVEL, destination, NULL);insertt

24、ask(ts, TASKTYPE_FRUNLOAD, item, destination);dispatchtasksequence(ts);77任务类型任务类型TASKTYPE_LOAD: item, source TASKTYPE_FRLOAD: item, station, outputport TASKTYPE_UNLOAD: item, target TASKTYPE_FRUNLOAD: item, station, inputport TASKTYPE_UTILIZE: involved, station, state TASKTYPE_DELAY: NULL, NULL, del

25、aytime, state TASKTYPE_BREAK: NULL, NULL TASKTYPE_TRAVEL: destination, NULL TASKTYPE_TRAVELTOLOC: NULL, NULL, lx, ly, lz, endspeed TASKTYPE_TRAVELRELATIVE: NULL, NULL, ox, oy, oz, endspeedTASKTYPE_SENDMESSAGE: toobj, fromobj, param1, param2, param3, delaytimeTASKTYPE_MOVEOBJECT: obj, container, port78模型模型A3 目的 学习如何创建自己的任务序列 描述 模型中包括一个发生器,五个工作台和一个接收器 操作员从发生器取一个实体到第一个工作台进行加工,完成

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论