全球FlexSim系统仿真中文论坛

搜索
查看: 4138|回复: 2
打印 上一主题 下一主题

为什么分拣传送带和传送带的“按临时实体类型发送”的判断机制不一样?

[复制链接]
跳转到指定楼层
1#
zorsite 发表于 2012-12-5 16:04:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 zorsite 于 2012-12-5 16:17 编辑

如果是在传送带中,按临时实体类型发送代码如下:
  1. /***popup:ByExpression*/
  2. /**指定端口*/
  3. /** \n输出端口: */
  4. double value = /***tag:expression*//**/getitemtype(item)/**/;
  5. /** \n\n注释: 此指定值可以是一个常量,也可以是命令返回值(getitemtype(item), getlabelnum(item, "labelname"), 等)。*/

  6. return value;
复制代码
其判断机制为:
先获取当前临时实体类型
  1. double value =getitemtype(item);
复制代码
然后分配端口
  1. return value;
复制代码
----------------------------------------------------------------
而在分拣传送带中,按临时实体类型发送代码如下:
  1. int port = parval(2);
  2. /**按临时实体类型: */
  3. /**如果临时实体类型与端口匹配则发送临时实体。*/
  4. return getitemtype(item) == port;
复制代码
其判断机制为:
如果临时实体类型与端口匹配则发送临时实体。
  1. return getitemtype(item) == port;
复制代码
Flexsim并不是先获取临时实体类型,然后去寻找相应端口;而是在每一个端口判断,当前临时实体的类型值是否与当前端口值相符,如果相符,则发送,如果不相符,则传送到下一段端口继续判断。可能另外一种代码更为容易理解:

  1. int port = parval(2);
  2. switch(port)
  3. {
  4. case 1: return getitemtype(item) == 1;
  5. case 2: return getitemtype(item) == 2;
  6. case 3: return getitemtype(item) == 3;
  7. default: return 1;
  8. }
复制代码
--------------------------------------------------------------
在我看来,第一种机制显然更为直观,每到达一个临时实体,直接获取其类型值,然后指定端口。
为什么在分拣传送带中采用了另外一种判断机制?其用意何在?

我感觉分拣传送带应该也可以通过第一种判断机制来指定端口,但是目前我的水平不够,而且demo版无法查看树结构,所以不知然后实现。我隐约感觉,这可能是在分拣传送带下并没有“发送至端口”这一选项,而是“发送条件”。
2#
 楼主| zorsite 发表于 2012-12-7 18:25:08 | 只看该作者
本帖最后由 zorsite 于 2012-12-7 20:21 编辑

传送带send to port代码返回的是端口值:
  1. double value =getitemtype(item);
  2. return value;
  3. //返回临时实体类型作为端口值。
复制代码
分拣传送带send requirement代码返回的是0或1:
  1. int port = parval(2);
  2. //声明一个名为port 的整数变量,并为该变量赋值,取值为临时实体穿越离开的输出端口号。

  3. /**按临时实体类型: */
  4. /**如果临时实体类型与端口匹配则发送临时实体。*/
  5. return getitemtype(item) == port;
  6. //返回一个值,0或1。如果当前实体类型=端口号,返回1,则发送。如果当前实体类型不等于端口号,返回0,则更换端口,直至更换的端口值=实体类型。
复制代码
3#
domcylai 发表于 2012-12-17 09:55:05 | 只看该作者
分拣传送带上所有货物每次到达一个端口(就是那根红线,箭头指向外)的时候,就会触发这个分拣条件,条件成立就发送,条件不成立就不发送.

double value =getitemtype(item);

则条件成立return 1,否则不成立return 0。

也就是说,这个脚本里面需要返回一个值,0和!0
希望对你有帮助!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|全球FlexSim系统仿真中文论坛 ( 京ICP备14043114号-2 )

GMT+8, 2025-5-8 22:53 , Processed in 0.069038 second(s), 13 queries .

Powered by Discuz! X3.3© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表