




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1,FlexSim树结构和脚本语言,树和节点 函数 建模语言Flexsim脚本语言 模型的建立,1,2,什么是节点?,FlexSim的基础数据结构是一棵层次分明的树 主树(与模型和工程相关的实体和数据) 视图树(与GUI相关的实体和下拉列表) 模型树(与模型相关的实体和数据) 节点是树结构最基本的组成模块 节点包含了实体、GUI和数据的所有信息。,2,3,节点的结构,节点有名字 节点可以拥有一个数据类型 数值 字符串 实体 如果节点拥有实体数据,使用 查看含有实体信息(数据项和成员函数)的独立的节点列表 如果节点包含子节点,使用 展开并查看子节点,3,4,节点符号,标准文件夹节点 实体节点 实
2、体数据 函数 (C+) 函数(FlexScript),4,5,模型树,5,6,什么是函数?,functionname(argument1, argument2, etc) 参数可以是: 数值型的值 字符串(“Text”) 引用的一个实体或者节点 函数示例: colorrandom(item) -(查看发生器实体的离开触发器) FlexSim中很多函数都用于读取树中的数据或者将数据保存到树结构中,6,7,函数和“返回”语句,调用函数就像询问一个问题 用户输入参数,函数的“返回值”就是问题的答案 实体的下拉列表中的属性都是函数 调用的函数不同,返回值的意义也不一样,8,一般规则,区分大小写(A不等
3、同于a) 没有特定格式(以“易读的”代码为目标,可以自由使用空格、制表符和回车换行) 文本字符串由引号括起,mytext 被调用的函数后面用圆括号,逗号分隔其参数,moveobject(object1, object2); 函数和命令都以分号结束 根据需要,可以在数学和逻辑表达式中自由地使用圆括号,Ex: (x+3)*2) 大括号用于定义一段逻辑代码 使用双斜线注释掉一行代码,/and type note here 多行注释以/*开始,*/结束 名字定义中不能含有空格或特殊字符,下划线除外 名字中可以含有数字,但是不能以数字开头,8,9,逻辑语句 提供的帮助,现存的下拉列表选项是很好的示例 帮
4、助命令, 将鼠标放置到代码中的某个命令上可出现提示。 帮助属性提示,9,10,逻辑创建器,用模块的形式显示建模逻辑 通过组合模块,自定义逻辑和行为 可以切换模块视图和代码视图,10,11,变量类型,整数型 浮点型 字符串 树节点型,whole numbers (1, 2, 3, 14324) real numbers (2.5, 3.14159) text string (“Anthony was here.”) reference to a node in the tree,11,12,定义和设置变量,int index = 1; double weight = 175.8; string
5、category = “groceries”; treenode forklift = centerobject(current,1);,12,13,数学运算符,x + y x - y x * y x / y sqrt(x) pow(x,y) round(x) frac(x) fmod(x,y) min(x,y) max(x,y),x 加 y x 减 y x 乘以 y x 除以 y x平方根 x的y次方 (xy) 与x最接近的整数 返回x的数值 返回x/y的余 返回x与y的最小值 返回x与y的最大值,13,14,赋值运算符,x = y x += y x -= y x *= y x /= y x
6、 + x -,设置 x 为 y 设置 x 等于 x加y 设置 x等于 x减y 设置x等于 x 乘以 y 设置 x等于 x除以 y x加1 x减1,14,Remember: = is not the same as = = is used to set a value = is a comparison operator,15,基本的实体引用,current -当前实体, 也就是代码所在的实体。 item -导致事件触发的临时实体。 model() -引用模型树 so() - 对树结构中任意一个节点的临时引用。 右键单击节点,将其指定为so().,15,16,基本的实体数据统计,content(
7、 object ) getinput( object ) getoutput( object ) getstatenum( object ) int inventory = content(current); int produced = getoutput(current);,16,17,实体的基本属性,xloc( object )yloc( object )zloc( object ) setloc( object, xnum, ynum, znum ) xsize( object )ysize( object )zsize( object ) setsize( object, xnum,
8、 ynum, znum ) xrot( object )yrot( object )zrot( object ) setrot( object, xdeg, ydeg, zdeg ),17,18,提示和打印,句法 pt( text string ) pf( float value ) pd( discrete value ) pr( ) msg( “window title”, “message text”, button type ) 在输出控制台打印信息 主菜单: 视图 - 输出控制台,示例 pt(“Item In “); pt(getname(current); pt(“ “); pf(
9、time(); pr();,18,19,处理器的属性,理解处理器实体的可编辑选项可以帮助你更好的掌握FlexSim。 关于每个可编辑项,请回答下面4个问题: 它的应用目的是什么? 什么时候执行? 可以访问哪些变量? 它的返回值是什么?,19,20,访问变量和返回值,20,21,代码练习 1,目的 学习在代码编辑窗口中编写代码。 对用于定义代码模板窗口的特殊注释进行介绍。 bernoulli命令简介. bernoulli(num probability, num succeed-value, num fail-value, num stream) 描述 做此练习,请不要使用代码模板 (从最基本的
10、编辑选项开始,写自己的代码)! 模型布局,请看下一个幻灯片。 使用发生器的 “创建触发”编辑框, 将70%的临时实体设置为类型1,剩余30%设置为类型2(使用bernoulli命令).,21,22,代码练习 1,2,3 A1的模型布局,22,23,If条件句,if (test expression) code block else code block ,23,24,代码练习 2,目的 学习使用代码设置和读取临时实体的类型 临时实体箱的介绍 描述 使用与练习1相同的布局. 当临时实体离开发生器时,设置它们的颜色 在发生器的“离开触发”域段中使用“if ”条件句,将临时实体类型为1的临时实体设置
11、为红色,类型为2的临时实体设置为绿色.,24,25,比较运算符,x y x = y x = y x = y x != y comparetext(string1,string2),25,x 大于 y x小于y x 大于等于 y x 小于等于y x等于y x 不等于 y string1与string2对比,记住:“=”和“=”是不同的 =用于赋值 =是比较运算符,26,关系运算符, case casenum2: code block break; default: code block break; ,Switch语句,27,28,代码练习3,目的 学习使用代码设置和读取标签 描述 使用练习1的
12、模型布局. 在临时实体箱中,在Box临时实体上设置名称为routing的数值标签。 当临时实体离开处理器时,设置标签值为1到4的随机分布(使用duniform()命令)。 在传送带的“发送至端口“域段中,使用switch()语句根据以下规则发送临时实体到下游实体。 标签值 1 和3 到 端口 2 标签值 2 和4 到端口 1 问题 你可以使用代码,根据标签值设置临时实体的颜色吗 ?,28,29,更高级的实体引用,rank(node, ranknum)rank(current,3) first(object) first(current) last(object) last(current) i
13、nobject(object, portnum)inobject(current,1) outobject(object, portnum)outobject(current,1) centerobject(object, portnum)centerobject(current,1) node(“relativepath”, object)node(“/Operator1”,model(),30,While语句,while (test expression) code block ,30,在编程时,只要While循环语句中的表达式返回真,代码就会重复执行。它也可能通过break或者retur
14、n语句来强制跳出循环 要确保表达式最后会跳出循环,避免无限循环 如果你正在进行无限循环,请按“ctrl-break”跳出循环。,31,31,For循环允许重复执行一段代码若干次。For循环在一开始就定义了循环的条件: 1. 定义变量并且设置它的初始值 2. 设置跳出循环的条件 3. 确定怎么处理每一次循环之后的变量 要确保表达式最后会跳出循环从而避免无限循环 请记住, “ctrl-break” 可帮助你跳出无限循环!,for (start expression1; test expression2; count expression3)/code block,For循环语句,32,代码练习 4
15、,目的 学习编辑自己的 “for” 循环和“while”循环。 描述 合成器将由订单指定的货物放到一个托盘上进行打包。 -假设一个发生器产生订单,由托盘表示特定订单,另外一个发生器产生无限的box。 -合成器将打包了的托盘发送到传送带,然后再发送到另外一个传送带。 -在第一个传送带的离开触发器上编写“for”循环,用来修改托盘上所有box的颜色。 问题 使用“改变3D图形”下拉选项,能否将托盘的3D图形变换成物料箱(Tote)? 用“while”循环实现上述颜色修改,32,33,练习4 布局,33,34,高级模型练习: A1:常用基本命令,开关端口以 及消息 A2:任务序列,34,35,模型A
16、1 - 概念,35,关闭和打开输入、输出端口 发送消息 停止命令和恢复命令,36,基本的实体控制,closeinput( object ), openinput( object ) stopinput( object ), resumeinput( object ) closeoutput( object ), openoutput( object ) stopoutput( object ), resumeoutput( object ) sendmessage( toobject, fromobject, parameter1, parameter2, parameter3 ) sendd
17、elayedmessage( toobject, delaytime, fromobject, parameter1, parameter2, parameter3 ) stopobject( object ), resumeobject( object ),36,37,消息,message 从一个实体发送到另一个实体的信息. 当实体接收到消息时,触发器被触发。 消息能够通过命令发出。 sendmessage() 是立即发送消息, senddelayedmessage()是延迟一段时间之后才发送消息。,37,38,执行顺序(消息),38,OnMessage trigger of receivi
18、ng object,OnMessage trigger of receiving object,delay,sendmessage(),senddelayedmessage(),39,模型 A2 - 概念,39,自定义任务序列 全局任务序列 全局变量,40,控制任务执行器,简单命令 requestoperators( taskexecuter, station, involvedobj, nrofops, priority, preempting ) freeoperators( taskexecuter, involvedobj ) 自定义任务序列 createemptytasksequen
19、ce( taskexecuter, priority, preempting) Returns a pointer (treenode) to the task sequence created inserttask(tasksequence, tasktype, involved1, involved2, parameter1, parameter2, parameter3 ) dispatchtasksequence( tasksequence ),40,41,简单的任务序列格式,41,treenode forklift = centerobject(current, 1); treeno
20、de origin = centerobject(current, 2); treenode destination = centerobject(current, 3); treenode item = first(origin); treenode ts = createemptytasksequence(forklift, 0, 0); inserttask(ts, TASKTYPE_TRAVEL, origin, NULL); inserttask(ts, TASKTYPE_FRLOAD, item, origin); inserttask(ts, TASKTYPE_TRAVEL, d
21、estination, NULL); inserttask(ts, TASKTYPE_FRUNLOAD, item, destination); dispatchtasksequence(ts);,42,任务类型,TASKTYPE_LOAD: flowitem, pickup TASKTYPE_FRLOAD: flowitem, pickup, outputport TASKTYPE_UNLOAD: flowitem, dropoff TASKTYPE_FRUNLOAD: flowitem, dropoff, inputport TASKTYPE_UTILIZE: involved, station, state TASKTYPE_STOPREQUESTFINISH: stoppedobject, NULL TASKTYPE_TRAVEL: destination, NULL TASKTYPE_TRAVELTOL
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【怀化】2025年湖南省怀化市溆浦县招聘事业单位工作人员65人笔试历年典型考题及考点剖析附带答案详解
- 《我的路》教学课件
- 【无锡】2025年江苏省无锡职业技术学院公开招聘专职辅导员4人笔试历年典型考题及考点剖析附带答案详解
- 定量分析概述12课件
- 【成都】2025年上半年四川成都市城市运行和政务服务管理办公室所属事业单位招聘工作人员7人笔试历年典型考题及考点剖析附带答案详解
- 第三章防火防爆技术40课件
- Brand KPIs for milk:Tirol in Brazil-英文培训课件2025
- 2025年基金从业考试知识点测试新版含答案
- 口腔知识培训课件教学
- 2025年医养结合养老机构运营环境分析与应对策略报告
- 2024年创意市集承办协议
- 合同能源托管合同
- 营养专科护士总结汇报
- 仓库转让合同范本
- VTE防控管理相关制度(VTE患者管理与随访的相关管理制度)
- 职业技能竞赛-网络与信息安全管理员理论题库(附参考答案)
- 2023年山东青岛局属高中自主招生物理试卷真题(含答案详解)
- 2024年中华全国律师协会招聘5人历年(高频重点复习提升训练)共500题附带答案详解
- 房地产 -2024年第二季度大连写字楼和零售物业市场报告
- 档案管理借阅制度
- 重力式(仰斜、俯斜)挡土墙计算软件
评论
0/150
提交评论