Flexsim操作2

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1仿真專班培训李亚兵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•大括号用于定义一段逻辑表达•双斜线用于一行中其后的部分,//mycomment•多行注释以/*开始,*/结束•名字定义中不能含有空格或特殊字符,下划线除外•名字中可以含有数字,但是不能以数字开头10书写逻辑可能用到的帮助•现有的下拉菜单选项•示例和模型(/samples和/userprojects/DemoModels)•CommandSummary(命令集)•CommandHints(命令提示)•C++参考书11变量类型•int(整数型),1、999•double(双精度型),0.0、123.45•string(字符串型),good•fsnode*(节点指针型),theOp、item12变量声明和赋值•整数型,intindex=1;•双精度型,doublelength=10.5;•字符串型,stringstr1=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比较•xy:x大于y•xy:x小于y•x=y:x大于等于y•x=y:x小于等于y•x==y:x等于y•x!=y:x不等于y•comparetext(str1,str2):比较字符串str1和str2•区别“=”和“==”–=:用于赋值–==:比较操作符15关系运算符•&&:逻辑与•||:逻辑或•!:逻辑非16数值更新•x=y:使x等于y•x+=y:使x等于x加y•x-=y:使x等于x减y•x*=y:使x等于x乘以y•x/=y:使x等于x除以y•x++:x自加1•x--:x自减117基本对象指代•current:当前对象•item:当前涉及的实体•model():模型树根节点•rank(node,ranknum),rank(queue,2)•node(relativepath,startnode),node(/Source1,model())•inobject(obj,portnum),inobject(current,1)•outobject(obj,portnum),outobject(dispatcher,3)•centerobject(obj,portnum),centerobject(processor,2)18基本对象统计数据•content(obj),content(rack)•getinput(obj),getinput(sink)•getoutput(obj),getoutput(combiner)19对象空间方面的属性•位置: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)20Itemtype(实体类型)•所有的实体都有一项属性叫做实体类型。它是一种数值型的标识符,用于在模型中对实体进行处理时将一种类型的实体与另一种类型的实体区分开。21基本对象属性•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)22提示和输出•语法–pf(num),pf(99.99)–pt(str),pt(finished)–pr():回车–msg(caption,str),msg(Step1completed,ContinuetoStep2?)•打印到OutputConsole(输出控制台)–视图菜单中打开输出控制台23处理器参数•以处理器对象的编辑项为例•对每个编辑项考虑下面四个问题:–它的目的是什么?–什么时候用到它?–它提供了哪些可以使用的变量?–它返回什么值?24可用的变量和返回值编辑项可用变量返回值SetupTimecurrent,item,portdelaytimeProcessTimecurrent,itemdelaytimeMTBFcurrentdelaytimeMTTRcurrentdelaytimeSendToPortcurrent,itemportnumberPullFromPortcurrentportnumberPullRequirementcurrent,item,porttrue/falseRequestTransportFromcurrent,item,portnumericpointerPickOperatorcurrent,itemnumericpointerOnResetcurrentN/AOnMessagecurrent,msgsendingobject,msgparam(1),msgparam(2),msgparam(3)N/AOnEntrycurrent,item,portN/AOnExitcurrent,item,portN/AOnSetupFinishcurrent,itemN/AOnProcessFinishcurrent,itemN/AOnBreakDowncurrentN/AOnRepaircurrentN/A25代码练习一•目的–学习在代码编辑窗口中书写C++代码–介绍代码模版窗口的定义:说明部分(PROSESTART和PROSEEND)和参数部分(PARAMSTART和PARAMEND)–介绍bernoulli函数:bernoulli(prob,succeednum,failnum,[randomnumstream])•描述–不使用代码模版–在输送机的“发送端口”项,使用bernoulli函数发送30%的实体到1号端口,70%到2号端口。26代码练习一至三的布局27“if”分支结构if(testexpression){codeblock}else{codeblock}if(getitemtype(item)==1){colorred(item);}else{coloryellow(item);}28代码练习二•目的–学习使用C++设置和读取实体的实体类型•描述–在实体离开发生器时,设置它们的实体类型。–60%的实体设置其实体类型为7,余下的设置为3。–在输送机的“发送端口”项使用if分支结构,发送实体类型为7的到1号端口,实体类型为3的到2号端口。•问题–尝试使用代码根据实体的实体类型改变它们的颜色。29标签•信息可以以标签的形式存储于实体或其他对象上•实体和其他Flexsim对象都可以有不限数量的标签•标签有名字和数据,数据可以是数值、字符串、列表或表格30对象标签•语法–getlabelnum(obj,labelname/labelrank)–setlabelnum(obj,labelname/labelrank,num)–getlabelstr(obj,labelname/labelrank)–setlabelstr(obj,labelname/labelrank,str)–label(obj,labelname/labelrank)•举例–getlabelnum(item,weight)–fsnode*label1=label(current,1);31“switch”分支结构switch(intnum){casenum1:{codeblockbreak;}casenum2:{codeblockbreak;}default:{codeblockbreak;}}switch((int)getitemtype(item)){case3:{setlabelnum(item,1,1);break;}case7:{colorblack(item);break;}default:{inc(label(current,quantity),1);break;}}32代码练习三•目的–学习用C++设置和读取实体上的标签•描述–在FlowItemBin(实体箱)里给TexturedColoredBox这种实体创建一个名为“routing”的数值型标签–在实体离开发生器时使用duniform函数设置它们的“routing”标签为1到4之间的随机数–在输送机的“发送端口”项使用switch分支结构根据以下规则发送实体:•标签值为1和3的到2号端口•标签值为2和4的到1号端口•问题–尝试使用代码根据实体的标签值改变它们的颜色33“while”循环结构while(testexpression){codeblock}while(content(current)2){moveobject(last(current),queue);}在程序中,while循环是在测试表达式为真时使得一段代码一直反复重复执行的结构,所以为了避免无限循环下去,最终测试表达式的值要为假。34“for”循环结构for(startexpression;testexpression;countexpression){codeblock}for(intindex=1;index=content(current);index++){totalWeight+=getlabelnum(rank(current,index),weight);}for循环允许一段代码重复执行一定次数,测试表达式最终值同样需要为假,以避免无限循环。35代码练习四•目的–学习使用for循环•描述–组合器将8个箱子放在1个托盘上–一个发生器提供托盘,另外一个发生器提供箱子–组合器发送实体到一条输送机,再由这条输送机发送到另一条输送机–在第一条输送机的离开触发器,使用for循环改变托盘上所有箱子的颜色•问题–尝试使用setobjectshapeindex函数改变箱子的外形36代码练习四布局37第六部分概念和模型•通过搭建一些模型学习更多Flexsim概念和用法38模型四——概念•实体类型•“推”与“拉”式规则•概率分布函数3

1 / 85
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功