1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,CSN Simulation GP,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,CSN Simulation GP,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,CSN Simulation GP,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,Flexsim中级课件d100706,一般规则,区分大小写(,A,不等同于,a,),没有限制特定的格式(以“易读的,”,代码为目标,可以自由
2、使用空格、制表符和回车换行),文本字符串由引号括起,,mytext,函数调用后面用圆括号,逗号分隔函数的参数,,moveobject(,item,container,),函数总是以分号结束,2,一般规则,根据需要可以在数学和逻辑表达式中自由地使用圆括号,,(x,+10)*y,大括号用于定义一段逻辑表达,双斜线用于一行中其后的部分,,/my comment,多行注释以,/*,开始,,*,/,结束,名字定义中不能含有空格或特殊字符,下划线除外,名字中可以含有数字,但是不能以数字开头,3,Code,Flexsim主要两种编码形式:Flexscript、C+。,关系:Flexscript具有C+的结构
3、,C+的语法,但又相对独立于C+。在Flexsim自带的Command集中C+和Flexscript可以一样使用。,区别:Flexscript更加便捷,调试运行无需编译,在安装Flexsim时不对Visual C+.Net做要求;C+调试运行必须首先进行编译,并且需要安装Visual C+.Net。但其能力包含Flexscript但又超过它功能更强大。,4,4,Code,在Flexsim里面,虽然可以使用所有C+功能,但是作为一个Flexsim的建模者仅仅需要知道很少以部分Command就可以用来创建出复杂的模型。因此,本部分通过对FlexScript的讲解来进行Flexsim编码部分的说明。
4、,5,5,变量类型,6,变量名,类型说明,int,整型变量,double,浮点变量,string,字符串变量,treenode,树节点变量,数组变量,intarray,整型数组变量,doublearray,浮点数组变量,stringarray,字符串数组变量,treenodearray,树节点数组变量,6,数学运算符及方法,操作符或方法,浮点例子,整型例子,+,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(=
5、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),7,7,比较运算符及方法,操作符或方法,例子,(greater than),1.71.7(false),(less than),-1.7=(greater than or equal to),45=45(true),=(less t
6、han or equal to),45 5&y45,!(logical NOT),!(x=32|y45),min(),min(x,y),max(),max(x,y),9,9,赋值运算符,操作符,例子,=,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),10,10,基本对象指代,current:当前对象,item:当前涉及的实体,model():模型树根节点
7、,rank(node,ranknum),rank(queue,2),node(relativepath,startnode),node(/Source1,model(),11,基本对象统计数据,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(curr
8、ent),getoutput(obj),,getoutput(current),12,基本对象属性,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),13,对象空间方面的属性,位置:xloc(obj),yloc(obj),zloc(obj),setloc(obj,lx,ly,lz),尺寸:xsiz
9、e(obj),ysize(obj),zsize(obj),setsize(obj,sx,sy,sz),转角:xrot(obj),yrot(obj),zrot(obj),setrot(obj,rx,ry,rz),14,基本对象控制函数,closeinput(,obj,),,,openinput(,obj,),stopinput(,obj,),,,resumeinput(,obj,),closeoutput(,obj,),,,openoutput(,obj,),stopoutput(,obj,),,,resumeoutput(,obj,),sendmessage(,toobj,fromobj,pa
10、ram1,param2,param3,),senddelayedmessage(,toobj,delaytime,fromobj,param1,param2,param3,),15,基本对象控制函数,stopobject(,obj,),,,resumeobject,(,obj,),moveobject(,obj,container,),closeoutput(current),senddelayedmessage(centerobject(current,1),10,current,1,getlabelnum(current,2),0),16,消息,消息:一个对象发送到另一个对象的信息,当一个
11、对象接收到消息时,它的“OnMessage”(消息)触发器被触发,消息的发出是通过函数sendmessage(发出即时消息)和senddelayedmessage(发出延时消息),每条消息可以有三个附加的数值型参数,17,消息执行机制,18,案例,目的,学习如何控制产品流和发送延时消息,描述,工作台在处理完每个产品之后,需要等待,50,秒钟,才能继续处理后面的产品。使用,closeinput,和,senddelayedmessage,函数实现此功能。,问题,如果此工作台最多可以同时处理两件产品,每次处理完一批(一件或两件)产品之后需要等待,如何实现?,19,案例,20,提示和输出,语法,pf(
12、num),,pf(99.99),pt(str),,pt(finished),pr():回车,msg(caption,str),,msg(Step 1 completed,Continue to Step 2?),打印到Output Console(输出控制台),视图菜单中打开输出控制台,21,可用的变量和返回值,22,可用的变量和返回值,23,数组变量的声明,intarray indexes=makearray(5);/makes an array with 5 elementsindexes1=2;/in Flexsim,arrays are 1-basedindexes2=3;indexe
13、s3=2;indexes4=6;indexes5=10;,doublearray weights=makearray(3);,24,24,fillarray(weights,3.5,6.7,1.4);/fillarray is a quick way of setting the array values,stringarray fruits=makearray(2);fruits1=Orange;fruits2=Watermelon;,treenodearray operators=makearray(4);operators1=centerobject(current,1);operato
14、rs2=centerobject(current,2);operators3=centerobject(current,3);operators4=centerobject(current,4);,数组变量的声明,25,26,if结构的使用说明,if(,expression,),code block,else,code block,if(content(item)=2),colorred(item);,else,colorblack(item);,26,27,while结构的使用说明,while(expression),code block,while(content(current)0),d
15、estroyobject(last(current);,27,28,For结构的使用说明,for(var decl;expr;increment),code block,for(int index=1;index labels/NumOps,83,定制简单3D图形,84,3D图形编程接口OpenGL,Flexsim提供了用户直接编写OpenGL的接口,用户可通过直接编写OpenGL来实现控制二维和三维几何体的基本操作。,OpenGL是一个三维图形编程接口(“GL”即Graphics Library)。这一接口包含了数百个函数,图形程序员可以利用这些函数指定设计高品质的三维彩色图像所需的对象和操
16、作。目前它已成为国际上通用的开放式三维图形标准,。,Flexsim,有,19,个语句(实际是将,OpenGL,封装后的函数)是关于,定制,图形,的。,85,Flexsim关于3D图形编制的语句,drawtomodelscale(obj object),声明当前绘图的尺度。相当于下述,OpenGL,的语句。glScalef(1/get(spatialsx(object),1/get(spatialsz(object),1/get(spatialsy(object);,drawcolumn,(x,y,z,边角数,底部半径,顶部半径,高,rx,ry,rz,red 0-255,green 0-255,
17、blue 0-255,不透明度0-1,textureindex,textureXrepeat,textureYrepeat),画锥型。圆柱、圆锥、多边锥、多边柱都可以由它来完成。,86,Flexsim关于3D图形编制的语句,drawcube(x,y,z,sx,sy,sz,rx,ry,rz,red 0-255,green 0-255,blue 0-255,opacity 0-1,textureindex,textureXrepeat,textureYrepeat),。,画立方体。任何四边柱可以由它来完成。,drawcylinder(x,y,z,底部半径,顶部半径,高,rx,ry,rz,red 0
18、-255,green 0-255,blue 0-255,不透明度0-1,textureindex),画空心圆锥。,87,Flexsim关于3D图形编制的语句,drawrect(obj view,x1,y1,z1,x2,y2,z2,red,green,blue),画矩形平面。,drawsphere(x,y,z,半径,red 0-255,green 0-255,blue 0-255,不透明度0-1,textureindex),画空心球体。,drawtext(obj view,str text,x,y,z,width,height,厚度,rx,ry,rz,red 0-1,green 0-1,blue
19、 0-1,不透明度0-1),画立体字,但目前只限英文。,88,远程控制,89,实现方法,通过VBS脚本文件,VBScript的全称是:Microsoft Visual Basic Script Editon.(微软公司可视化BASIC脚本版).正如其字面所透露的信息,VBS(VBScript的进一步简写)是基于Visual Basic的脚本语言.Microsoft Visual Basic是微软公司出品的一套可视化编程工具,语法基于Basic.脚本语言,就是不编译成二进制文件,直接由宿主(host)解释源代码并执行,简单点说就是你写的程序不需要编译成.exe,而是直接给用户发送.vbs的源程序
20、,用户就能执行了,Dim WshShell,oExec,Set WshShell=wscript.createobject(wscript.shell),Set oExec=WshShell.Exec(C:Program FilesFlexsim4programflexsimrunner.exe C:Program FilesFlexsim4userprojectsremotetest.fsm/scenario 5),90,实现方法,通过批处理文件,批处理文件,在MS-DOS中,.bat文件是可执行文件,有一系列命令构成,其中可以包含对其他程序的调用。批处理文件是一个文本文件,这个文件的每一行
21、都是一条DOS命令(大部分时候就好像我们在DOS提示符下执行的命令行一样),你可以使用DOS下的Edit或者Windows的记事本(notepad)等任何文本文件编辑工具创建和修改批处理文件。,C:Program FilesFlexsim4programflexsimrunner.exe C:Program FilesFlexsim4userprojectsremotetest.fsm/scenario 5,91,Flexsim相关命令,resetmodel(0);,cmdcompile();,runspeed(20);,stoptime(100);,go();,cmdexit();,92,建模快捷方法,复制、粘贴,查找,部分功能复制、粘贴,自定义模块,快捷拖放、连线,外部3D导入技巧:定,位、尺寸、转角等等,93,TEL:010-51288549,FAX:010-82898250,eMail:lybsimcsn-,www.csn-,谢 谢!,QQ:,32504858,Flexsim QQ群:,69127359,论坛:,www.flexsim.asia/,94,此课件下载可自行编辑修改,仅供参考!感谢您的支持,我们努力做得更好!谢谢,