全球FlexSim系统仿真中文论坛

搜索
查看: 6257|回复: 6
打印 上一主题 下一主题

“用户事件”UserEvents求助

[复制链接]
跳转到指定楼层
1#
domcylai 发表于 2011-11-4 16:30:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 domcylai 于 2011-11-6 22:49 编辑 / v( b! j8 o/ i4 f. J& I8 U- K

4 O2 G$ G, ^& Q3 M  ^3 ^. `0 I8 n最近在学习UserEvent时,遇到一些问题(附件):' F( ]) a4 n4 p  y% K2 n: j0 @
1.模型中Tools 有一个GlobalTables : num ;
2 e, ?9 d* a9 [2.现在要求每隔一段时间以后,从FlowItemBin中产生Box进入系统,产生Box的数量从num表中取值,第一次产生的num是row1 的值,第二次是row2....0 \" w' a+ C0 B
3.当执行到最后一次后,停止用户事件。7 s& ]# q- |9 i. j' {1 D/ L

- K7 I, n) I% x
" V$ c  y9 y: h) O) f* z这个方法虽然实现了上述的功能,但是没有扩展性。如果num表内row的数量很大,而且不确定就不容易实现了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

评分

参与人数 1威望 +12 收起 理由
Rosalyn + 12

查看全部评分

2#
 楼主| domcylai 发表于 2011-11-4 17:29:34 | 只看该作者
本帖最后由 domcylai 于 2011-11-6 22:53 编辑 : o! \; Q+ W8 I/ {, x9 r+ r) ?( q- f
3 I9 t- b8 r2 O: n4 F
解决方法是:用一个for语句来控制:关键代码如下
3 K9 g# E: m  C0 L# q- Y* w" n/ w for(int i=1;i<=gettablerows("rank");i++)
3 O& p: r& \& d% a{        if(i==num)  // 此处num值是记录UserEvent 已经运行的次数,可以新增一个节点或用一个table来记录/ Z: ^) F$ S1 e
        {        ' R, ]( f5 R1 D# z2 |( K/ E3 {( o
                for(int j=1;j<=gettablenum("rank",i,1);j++)
2 V) Z* e. g1 w& |3 T                {
: W) X2 f" H. @) a% l* K) o                        insertcopy(node("/Tools/FlowItemBin/1/1",model()),node("/Queue1",model()));
; p8 ^1 P, y- ~) q                }: Q% T0 y1 v4 Z1 [$ ?- D5 J0 a8 |7 w
        }6 i9 N" E" V6 i; s- j3 x
}
5 v- C5 U  M% `7 M1 N3 B; W  e% b* A此外我还加了一条语句:' Q$ z  l1 \, O( L0 T$ c8 Q
//if(num==gettablerows("rank"))
5 \* z! ]3 X4 M: Q$ K6 \) Uif(num==5)     //UserEvent运行5次后关闭
+ x$ n+ W( z9 _5 A4 \setnodenum(node("/Tools/UserEvents/UserEvent1>variables/repeat",model()),0);
% j" [+ X+ ~5 E' celse : C3 G" J+ j% {6 i$ v& P; |
{4 f. A5 }/ P  [, i: F' f( u0 U
        num=num+1;/ K8 ]5 }3 x$ ~+ u( D4 i1 A
        setnodenum(runnum,num);
1 Y7 Q0 {5 J& N4 a. ]; @! W9 F}
% c5 R% h- T5 p# N3 ^3 D) U- v也就是控制 该UserEvent 自动运行的开关节点。=1 为开 =0 为关。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
3#
 楼主| domcylai 发表于 2011-11-6 23:06:29 | 只看该作者
UserEvents 功能是正式版软件才能用,Demo版用户可以使用另外的方法来“制造”一个时间定时器:比如设定一个小车在两点间运动,每次触碰的时间通过速度来控制。也可以用传送带等
4#
qiush1234 发表于 2011-11-10 09:19:04 | 只看该作者
过来学习的,不知道有没有自定义函数这样的教程啊。
5#
 楼主| domcylai 发表于 2011-11-11 17:33:21 | 只看该作者
自定义函数是神马东西?是指Script教程吗?
6#
Rosalyn 发表于 2011-11-14 20:12:15 | 只看该作者
3# domcylai
' f: w% K7 s- _
6 @- h, H- J% f5 U* Q0 o# s3 a: x, x
学得越来越不错了,补充一下,时间定时器,还可以用发生器和吸收器两个来控制,固定某个时间点创建临时实体,在创建触发里编辑代码
7#
Rosalyn 发表于 2011-11-14 20:17:45 | 只看该作者
4# qiush1234
4 y! m) y! b* o& m自定义函数,我觉得可以通过C++编程和脚本编程,然后变成全局变量,可以让整个模型都能调用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-9-3 16:03 , Processed in 0.061690 second(s), 15 queries .

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

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