版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1FlexSim树结构和脚本语言1. 树和节点 2. 函数 3. 建模语言Flexsim脚本语言4. 模型的建立12什么是节点?什么是节点? FlexSim的基础数据结构是一棵层次分明的树 主树(与模型和工程相关的实体和数据) 视图树(与GUI相关的实体和下拉列表) 模型树(与模型相关的实体和数据) 节点是树结构最基本的组成模块 节点包含了实体、GUI和数据的所有信息。23节点的结构节点的结构 节点有名字 节点可以拥有一个数据类型 数值 字符串 实体 如果节点拥有实体数据,使用 查看含有实体信息(数据项和成员函数)的独立的节点列表 如果节点包含子节点,使用 展开并查看子节点34节点符号节点符号
2、 标准文件夹节点 实体节点 实体数据 函数 (C+) 函数(FlexScript)45模型树模型树56什么是函数?什么是函数?functionname(argument1, argument2, etc) 参数可以是: 数值型的值 字符串(“Text”) 引用的一个实体或者节点 函数示例: colorrandom(item)-(查看发生器实体的离开触发器)(查看发生器实体的离开触发器) FlexSim中很多函数都用于读取树中的数据或者将数据保存到树结构中 67函数和函数和“返回返回”语句语句 调用函数就像询问一个问题 用户输入参数,函数的“返回值”就是问题的答案 实体的下拉列表中的属性都是函数
3、 调用的函数不同,返回值的意义也不一样8一般规则一般规则 区分大小写(A不等同于a) 没有特定格式(以“易读的”代码为目标,可以自由使用空格、制表符和回车换行) 文本字符串由引号括起,mytext 被调用的函数后面用圆括号,逗号分隔其参数,moveobject(object1, object2); 函数和命令都以分号结束 根据需要,可以在数学和逻辑表达式中自由地使用圆括号,Ex: (x+3)*2) 大括号用于定义一段逻辑代码 使用双斜线注释掉一行代码,/and type note here 多行注释以/*开始,*/结束 名字定义中不能含有空格或特殊字符,下划线除外 名字中可以含有数字,但是不能
4、以数字开头89逻辑语句逻辑语句 提供的帮助提供的帮助 现存的下拉列表选项是很好的示例 帮助命令, 将鼠标放置到代码中的某个命令上可出现提示。 帮助属性提示910逻辑创建器逻辑创建器 用模块的形式显示建模逻辑 通过组合模块,自定义逻辑和行为 可以切换模块视图和代码视图1011变量类型变量类型 整数型 浮点型 字符串 树节点型whole numbers (1, 2, 3, 14324)real numbers (2.5, 3.14159)text string (“Anthony was here.”)reference to a node in the tree1112定义和设置变量定义和设置变
5、量 int index = 1; double weight = 175.8; string category = “groceries”; treenode forklift = centerobject(current,1);1213数学运算符数学运算符 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 加 yx 减 yx 乘以 yx 除以 yx平方根x的y次方 (xy)与x最接近的整数返回x的数值返回x/y的余返回x与y的最小值返回x与y的最大值1314赋值运算符赋
6、值运算符 x = y x += y x -= y x *= y x /= y x + x -设置 x 为 y设置 x 等于 x加y设置 x等于 x减y设置x等于 x 乘以 y设置 x等于 x除以 yx加1x减114Remember: = is not the same as = is used to set a value= is a comparison operator15基本的实体引用基本的实体引用 current - 当前实体, 也就是代码所在的实体。 item - 导致事件触发的临时实体。 model() -引用模型树 so() - 对树结构中任意一个节点的临时引用。右键单击节点,将
7、其指定为so().1516基本的实体数据统计基本的实体数据统计 content( object ) getinput( object ) getoutput( object ) getstatenum( object ) int inventory = content(current); int produced = getoutput(current);1617实体的基本属性实体的基本属性 xloc( object )yloc( object )zloc( object ) setloc( object, xnum, ynum, znum ) xsize( object )ysize( ob
8、ject )zsize( object ) setsize( object, xnum, ynum, znum ) xrot( object )yrot( object )zrot( object ) setrot( object, xdeg, ydeg, zdeg )1718提示和打印提示和打印 句法 pt( text string ) pf( float value ) pd( discrete value ) pr( ) msg( “window title”, “message text”, button type ) 在输出控制台打印信息 主菜单: 视图 - 输出控制台 示例 pt(
9、“Item In “); pt(getname(current); pt(“ “); pf(time(); pr();1819处理器的属性处理器的属性 理解处理器实体的可编辑选项可以帮助你更好的掌握FlexSim。 关于每个可编辑项,请回答下面4个问题: 它的应用目的是什么? 什么时候执行? 可以访问哪些变量? 它的返回值是什么?1920访问变量和返回值访问变量和返回值Edit Field编辑区域编辑区域Access Variables访问变量访问变量Returns返回返回Setup Timecurrent, item, portdelay timeProcess Timecurrent, i
10、temdelay timeSend To Portcurrent, itemport numberPull From Portcurrentport numberPull Requirementcurrent, item, porttrue/false (1/0)Request Transport Fromcurrent, item, portnumeric pointerPick Operatorcurrent, itemnumeric pointerOnResetcurrentN/AOnMessagecurrent, msgsendingobject, msgparam1, msgpara
11、m2, msgparam3N/AOnEntrycurrent, item, portN/AOnExitcurrent, item, portN/AOnSetupFinishcurrent, itemN/AOnProcessFinishcurrent, itemN/A2021代码练习代码练习 1 目的 学习在代码编辑窗口中编写代码。 对用于定义代码模板窗口的特殊注释进行介绍。 bernoulli命令简介.bernoulli(num probability, num succeed-value, num fail-value, num stream) 描述 做此练习,请不要使用代码模板 (从最基本
12、的编辑选项开始,写自己的代码)! 模型布局,请看下一个幻灯片。 使用发生器的 “创建触发”编辑框, 将70%的临时实体设置为类型1,剩余30%设置为类型2(使用bernoulli命令).2122代码练习代码练习 1,2,3 A1的模型布局的模型布局2223If条件句条件句if (test expression)code blockelsecode block23if (getitemtype(item) = 1)colorred(item);elsecolorblack(item);24代码练习代码练习 2 目的 学习使用代码设置和读取临时实体的类型 临时实体箱的介绍 描述 使用与练习1相同的
13、布局. 当临时实体离开发生器时,设置它们的颜色 在发生器的“离开触发”域段中使用“if ”条件句,将临时实体类型为1的临时实体设置为红色,类型为2的临时实体设置为绿色. 2425比较运算符比较运算符 x y x = y x 0)destroyobject(last(current);在编程时,只要While循环语句中的表达式返回真,代码就会重复执行。它也可能通过break或者return语句来强制跳出循环要确保表达式最后会跳出循环,避免无限循环如果你正在进行无限循环,请按“ctrl-break”跳出循环。 3131for (int index=1; index=content(current)
14、; index+)colorblue(rank(current,index);For循环允许重复执行一段代码若干次。For循环在一开始就定义了循环的条件: 1. 定义变量并且设置它的初始值 2. 设置跳出循环的条件 3. 确定怎么处理每一次循环之后的变量要确保表达式最后会跳出循环从而避免无限循环请记住, “ctrl-break” 可帮助你跳出无限循环!for (start expression1; test expression2; count expression3)/code blockFor循环语句循环语句32代码练习代码练习 4目的 学习编辑自己的 “for” 循环和“while”循环
15、。描述 合成器将由订单指定的货物放到一个托盘上进行打包。 - 假设一个发生器产生订单,由托盘表示特定订单,另外一个发生器产生无限的box。- 合成器将打包了的托盘发送到传送带,然后再发送到另外一个传送带。- 在第一个传送带的离开触发器上编写“for”循环,用来修改托盘上所有box的颜色。问题 使用“改变3D图形”下拉选项,能否将托盘的3D图形变换成物料箱(Tote)? 用“while”循环实现上述颜色修改3233练习练习4 布局布局3334高级模型练习:高级模型练习:A1:常用基本命令,开关端口以 及消息A2:任务序列3435模型模型A1 - 概念概念35 关闭和打开输入、输出端口 发送消息
16、停止命令和恢复命令36基本的实体控制基本的实体控制 closeinput( object ), openinput( object ) stopinput( object ), resumeinput( object ) closeoutput( object ), openoutput( object ) stopoutput( object ), resumeoutput( object ) sendmessage( toobject, fromobject, parameter1, parameter2, parameter3 ) senddelayedmessage( toobject
17、, delaytime, fromobject, parameter1, parameter2, parameter3 ) stopobject( object ), resumeobject( object )3637消息消息 message 从一个实体发送到另一个实体的信息. 当实体接收到消息时,触发器被触发。 消息能够通过命令发出。 sendmessage() 是立即发送消息, senddelayedmessage()是延迟一段时间之后才发送消息。3738执行顺序执行顺序(消息消息)38OnMessagetrigger ofreceiving objectOnMessagetrigger
18、 ofreceiving objectdelaysendmessage()senddelayedmessage()39模型模型 A2 - 概念概念39 自定义任务序列 全局任务序列 全局变量40控制任务执行器控制任务执行器 简单命令简单命令requestoperators( taskexecuter, station, involvedobj, nrofops, priority, preempting )freeoperators( taskexecuter, involvedobj ) 自定义任务序列自定义任务序列createemptytasksequence( taskexecuter,
19、 priority, preempting)Returns a pointer (treenode) to the task sequence createdinserttask(tasksequence, tasktype, involved1, involved2, parameter1, parameter2, parameter3 )dispatchtasksequence( tasksequence )4041简单的任务序列格式简单的任务序列格式41treenode forklift = centerobject(current, 1);treenode origin = cente
20、robject(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, destination, NULL);inser
21、ttask(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_TRAVELTOLOC:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 九年级物理上学期第二次月考试卷含解析新人教版
- 为教育机构设计的2026年在线学习平台升级方案
- excel汇报工作方案
- 内蒙矿山建设方案
- 2026年跨境电商移动端用户行为洞察与策略分析
- 旧村土地复垦实施方案
- 监管科技总体建设方案
- 2025年玩具行业消费趋势预测方案
- 安全生产一般事故的标准
- 企业业务流程优化数据分析方案
- GB/T 31961-2024载货汽车和客车轮辋规格系列
- 大学生《思想道德与法治》考试复习题及答案
- 河南省历年中考语文现代文阅读真题49篇(含答案)(2003-2023)
- DL∕T 5210.4-2018 电力建设施工质量验收规程 第4部分:热工仪表及控制装置
- 神经源性肠道功能障碍的康复护理
- 毕业设计-螺纹轴数控加工工艺设计
- 食品安全风险评估报告
- 差热分析法(DTA)课件
- 日本宪法完整版本
- 钢材理论重量表大全(经典)
- 肝硬化门脉高压症的介入治疗
评论
0/150
提交评论