收藏 分销(赏)

Flexsim操作2PPT.ppt

上传人:w****g 文档编号:10306502 上传时间:2025-05-22 格式:PPT 页数:85 大小:2.28MB
下载 相关 举报
Flexsim操作2PPT.ppt_第1页
第1页 / 共85页
Flexsim操作2PPT.ppt_第2页
第2页 / 共85页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,CSN Simulation GP,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,Click to edit Master title style,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,CSN Simulation GP,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,CSN Simulation GP,1,仿真專班培训,Beijing CSN Technology Inc.,李 亚 兵,2,课程大纲,第五部分、建模语言,第六部分、概念和模型,3,第五部分 建模语言,Flexsim,层次化结构,树形结构,建模语言,定制模型逻辑,4,什么是节点?,Flexsim,的基本数据结构是一个层次化的树形结构,主树,模型和工程相关的对象和数据,视图树,包括图形用户界面相关的对象和下拉菜单,模型树,模型相关的对象和数据,节点是,“,树,”,的基本构成单元,节点在表面是看不到的,它们包含了对象、图形用户界面和数据的所有信息,5,节点结构,节点有名字,节点可以拥有一个数据项,数值,字符串,对象,如果节点拥有对象数据,使用 查看含有对象信息的展开的节点列表(数据项和成员函数),如果节点包含子节点,使用 展开并查看子节点,6,节点符号,标准文件夹,对象,对象数据,C+,函数,FlexScript,(,Flexsim,脚本)函数,7,模型树样本,8,什么是函数?,函数名(参数,1,,参数,2,,等等),参数可以是,数值,字符串,指向对象或节点的指针,函数举例,colorrandom(item),许多,Flexsim,函数的作用都是从,“,树,”,中读取数据和向,“,树,”,存放数据,9,一般规则,区分大小写(,A,不等同于,a,),没有限制特定的格式(以“易读的,”,代码为目标,可以自由使用空格、制表符和回车换行),文本字符串由引号括起,,mytext,函数调用后面用圆括号,逗号分隔函数的参数,,moveobject(item,container),函数总是以分号结束,根据需要可以在数学和逻辑表达式中自由地使用圆括号,,(x+10)*y,大括号用于定义一段逻辑表达,双斜线用于一行中其后的部分,,/my comment,多行注释以,/*,开始,,*,/,结束,名字定义中不能含有空格或特殊字符,下划线除外,名字中可以含有数字,但是不能以数字开头,10,书写逻辑可能用到的帮助,现有的下拉菜单选项,示例和模型(,/samples,和,/userprojects/DemoModels,),Command Summary,(命令集),Command Hints,(命令提示),C+,参考书,11,变量类型,int,(整数型),,1,、,999,double,(双精度型),,0.0,、,123.45,string,(字符串型),,good,fsnode*,(节点指针型),,theOp,、,item,12,变量声明和赋值,整数型,,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,次方,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 block,for(int index=1;index=content(current);index+),totalWeight+=getlabelnum(rank(current,index),weight);,for,循环允许一段代码重复执行一定次数,测试表达式最终值同样需要为假,以避免无限循环。,35,代码练习四,目的,学习使用,for,循环,描述,组合器将,8,个箱子放在,1,个托盘上,一个发生器提供托盘,另外一个发生器提供箱子,组合器发送实体到一条输送机,再由这条输送机发送到另一条输送机,在第一条输送机的离开触发器,使用,for,循环改变托盘上所有箱子的颜色,问题,尝试使用,setobjectshapeindex,函数改变箱子的外形,36,代码练习四布局,37,第六部分 概念和模型,通过搭建一些模型学习更多,Flexsim,概念和用法,38,模型四,概念,实体类型,“,推,”,与,“,拉,”,式规则,概率分布函数,39,处理器,“,拉,”,实体,Pull From Port,(接收端口):实体可以进入的输入端口,Pull Requirement,:决定是否允许一个实体进入,上游对象发送端口项设置为,Open all ports,(所有端口),40,模型四,目的,学习使用,“,拉,”,式规则,根据实体的实体类型定义它们的加工路线,描述,电子部件加工完成后需要接受测试,两种类型的部件会进入堆放区,它们的到达是随机的,其中,40%,是类型为,1,的,,60%,是类型为,2,的。,部件到达的间隔时间服从均值为,40,秒的指数分布,两台测试机用于类型为,1,的部件,三台测试机用于类型为,2,的部件,测试时间服从,120,到,150,秒的均匀分布,问题,尝试平衡各个测试机的工作量,尝试使用“推”规则实现此模型,41,模型四布局,42,模型五,概念,标签和实体类型,经验分布:全局表,触发器顺序,43,模型五,目的,学习如何在实体上设置和使用标签,用于决定加工路线,描述,零件的到达服从均值为,30,秒的指数分布,四种类型的零件分别占全部零件的,20%,、,30%,、,40%,、,10%,。,四台处理器分别处理这四种不同类型的零件。首次加工的零件的处理时间服从,100,到,120,秒的均匀分布,返工的零件的处理时间服从,120,到,130,秒的均匀分布。,零件加工完成后会被测试。每个零件的测试时间是,10,秒钟。测试合格的产品会离开模型,,10%,的产品会需要返工。,返工的零件将被优先处理,问题,瓶颈在哪里?,尝试改变需要返工的零件的形状,44,模型五布局,45,模型六,概念,全局表,标签,触发器,46,全局表函数,gettablenum(,tablename,rownum,colnum,),settablenum(,tablename,rownum,colnum,num,),gettablestr(,tablename,rownum,colnum,),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,使用全局表,以保证产品按照正确的顺序发送到相应的工作台进行加工,所有没有完全加工完成的产品都放置在同一个堆放区中,问题,尝试用颜色标示产品所处的加工步骤,48,模型六布局,49,模型七,概念,任务序列优先级,全局指针,50,模型七,目的,学习如何使用一个操作员同时负责搬运和处理实体,描述,零件的到达时间间隔是服从均值为,20,秒的指数分布。零件到达后由操作员将其运送到一个空闲的工作台上。,操作员需要对零件进行,10,秒钟的预处理,之后工作台自行处理实体,需要,20,秒钟时间,加工完成后,实体离开系统,一个操作员负责所有的三个工作台,问题,使操作员在运送完一个实体后,立即对该实体进行预处理,尝试不使用中心端口连接实现此模型,51,模型七布局,52,模型八,概念,发送端口,“,中断,”,需求,53,模型八,目的,学习使用移动资源上的“中断”需求项,描述,发生器均匀地产生三种不同类型的实体,并随机发送到其后的三个堆放区内。,一辆运输车将实体运送到后面的三个堆放区内,此三个堆放区分别可以容纳一种类型的实体。,实体经过处理器,最后由接收器离开系统。,运输车辆最多一次可以装载,5,个实体。,运输车辆只能同时装载同一类型的实体。,问题,尝试其他“中断”需求选项,观察运输车辆的行为。,54,模型八布局,55,模型九,概念,移动资源组,自定义任务序列,时间表,56,模型九,目的,练习使用移动资源组、调度规则,描述,一个工作单元有,5,个工作台,每个零件必须依次在,5,个工作台上进行加工,此工作单元中有一组由,3,个操作员组成的移动资源组,操作员负责运送每个零件到下一个工作台,以及预处理任务,预处理时间是,5,秒钟,处理时间是,15,秒钟,每,25,秒到达一个新零件,问题,每小时的生产能力是多少?,使用自定义任务序列,以提高生产能力。,使用时间表,安排操作员在不同的时间休息。,57,模型九布局,58,模型十,概念,更新组合器组件列表,Excel,数据导入,59,定制,Excel,数据导入,/,导出,规则,必须首先使用,excellaunch,函数启动,Excel,,然后使用,excelopen,函数打开一个,Excel,文档。使用,excelsetsheet,函数指定一个表单,然后可以使用,excelreadnum,,,excelwritenum,,,excelimporttable,和,excelexporttable,等函数进行读写操作。如果需要打开另一个文档,需要先使用,excelclose,函数关闭当前文档。最后使用,excelquit,函数退出,Excel,。,示例,excellaunch();,excelopen(C:Program FilesFlexsim3userprojectsTrainingExcel Custom.xls);,excelsetsheet(Sheet1);,excelwritenum(1,2,gettablenum(Data,1,1);,settablenum(Data,1,1,excelreadnum(1,1);,excelclose(true);,excelquit();,60,模型十,目的,学习如何控制组合器的组件列表,学习如何从,Excel,导入数据到发生器的到达时刻表,描述,一个供应商向,5,个不同的客户提供总共,10,种不同的产品,每个客户的订单不同,每个客户所订的产品放在一个托盘上,经过输送机进入接收器,使用订单和时刻表两个表格构建此模型,问题,从,Excel,中导入所需的表格,61,模型十布局,62,模型十订单表,Customer1,Customer2,Customer3,Customer4,Customer5,Product1,1,2,3,1,4,Product2,2,0,1,2,1,Product3,0,1,0,1,2,Product4,1,2,1,3,2,Product5,3,3,3,0,1,Product6,2,4,0,2,0,Product7,0,0,2,2,3,Product8,2,3,3,3,0,Product9,1,2,4,1,2,Product10,1,1,3,0,0,63,模型十到达时刻表,ArrivalTime,ItemName,ItemType,Quantity,Customer1,0,OrderA,1,1,Customer2,3600,OrderB,2,1,Customer3,7200,OrderC,3,1,Customer4,10800,OrderD,4,1,Customer5,14400,OrderE,5,1,64,更深一步的概念和模型,打开、关闭输入,/,输出端口,消息,抽象模型,全局对象指针,自定义任务序列,数据库,用户事件,模型初始化代码,全局,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,),senddelayedmessage(,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,”,(消息)触发器被触发,消息的发出是通过函数,sendmessage,(发出即时消息)和,senddelayedmessage,(发出延时消息),每条消息可以有三个附加的数值型参数,68,消息执行机制,69,模型,A1,目的,学习如何控制产品流和发送延时消息,描述,工作台在处理完每个产品之后,需要等待,50,秒钟,才能继续处理后面的产品。使用,closeinput,和,senddelayedmessage,函数实现此功能。,问题,如果此工作台最多可以同时处理两件产品,每次处理完一批(一件或两件)产品之后需要等待,如何实现?,70,模型,A1,布局,71,模型,A2,概念,抽象模型,全局对象指针,For,循环,moveobject,函数,72,模型,A2,目的,学习创建抽象模型的方法,学习在触发器中定义,C+,逻辑代码,描述,每天都有货物到达,也都有订单到达,,1,份货物可以满足,1,份订单的需求。,每天到达货物的数量和每天的订单数量都服从均值为,10,的指数分布。,一共有,5,种不同类型的货物和订单,每天到达的货物和订单都会是其中一种,而且每一种的可能性都相同。货物和订单的类型相匹配。,货物到达时,如果现存的订单显示需要这种货物,那么货物要立即满足订单的需要,同时更新订单;如果不需要则暂时存放起来。订单到达时,如果库存中的货物有可以满足需要的,那么立即消除相应的货物和订单;否则将订单保留。,问题,如果连续运行,1,年,需要多大的容量以暂存货物?,画出表示每天缺货总量的曲线图,订单被满足的平均等待时间是多长?,73,模型,A2,布局,74,模型,A3,概念,自定义任务序列,全局对象指针,75,移动资源控制,简单指令,createdelaytask(centerobject(current,1),100,STATE_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=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);,inserttask(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,delaytime,state,TASKTYPE_BREAK:,NULL,NULL,TASKTYPE_TRAVEL:,destination,NULL,TASKTYPE_TRAVELTOLOC:,NULL,NULL,lx,ly,lz,endspeed,TASKTYPE_TRAVELRELATIVE:,NULL,NULL,ox,oy,oz,endspeed,TASKTYPE_SENDMESSAGE:,toobj,fromobj,param1,param2,param3,delaytime,TASKTYPE_MOVEOBJECT:,obj,container,port,78,模型,A3,目的,学习如何创建自己的任务序列,描述,模型中包括一个发生器,五个工作台和一个接收器,操作员从发生器取一个实体到第一个工作台进行加工,完成后再运送到第二个工作台进行加工,依此类推,直到全部加工完成后送到接收器。也就是说同一个操作员要负责一个实体从头到尾的全部流程。,使用全局对象指针代替中心端口连接,问题,一个实体需要多长时间才能完成所有的工序?,79,模型,A3,布局,80,模型,A4,概念,全局,C+,代码,用户函数,81,全局,C+,代码和用户函数使用,Global C+Code,(全局,C+,代码)通常用于定义全局变量或全局性的子函数,也常在这里导入外部,C+,代码文件。,#include./././userprojects/customcode.cpp,User Command,(用户函数)用于用户自定义函数作为补充。通过用户函数定义的函数与原有函数具有相同的效力,如可以在命令集中找到相关说明。,传递到用户函数的参数要使用,parnode,,,parval,,,parstr,等函数转换为相应的类型。,用户函数所接受的实参为数值型,可以使用,tonum,函数进行类型转换。,用户函数的返回值为双精度型,82,模型,A4,目的,学习用户函数和全局,C+,代码的使用,描述,发生器为每个生成的实体创建标签,“,priority,”,,并随机赋值为,1,到,5,的整数。,实体进入堆放区后,按照它们的标签值进行排序,排序算法由预先定义的函数实现。,问题,分别尝试使用用户函数,全局,C+,代码和外部,C+,代码文件定义算法函数,83,模型,A4,布局,84,Other Useful Tools,Visual Tool(Additional Uses),Traffic Control Object,Task Executer Collision Tab,Experimenter,Presentation Builder,ExpertFit,OptQuest Optimizer,And much more!,85,TEL:010-51288549,FAX:010-82898250,eMail:lybsimcsn-,www.csn-,谢 谢!,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服