全球FlexSim系统仿真中文论坛

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

“用户事件”UserEvents求助

[复制链接]
跳转到指定楼层
1#
domcylai 发表于 2011-11-4 16:30:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 domcylai 于 2011-11-6 22:49 编辑
# Y# I; t- W8 F9 x2 U9 m  O; m7 J
7 u; x$ I$ r" R9 |" [1 P% V3 m最近在学习UserEvent时,遇到一些问题(附件):
) [7 J" K0 m9 C1 R. V+ A1.模型中Tools 有一个GlobalTables : num ;
+ ?  y7 g& I$ Y$ B, Y2.现在要求每隔一段时间以后,从FlowItemBin中产生Box进入系统,产生Box的数量从num表中取值,第一次产生的num是row1 的值,第二次是row2....
2 H( b2 {+ F& |$ X8 Z: ^% W3.当执行到最后一次后,停止用户事件。* y! B6 x/ a5 D* R6 k

* X6 R' b2 y; @0 D: G
( Q. L$ V0 e. @' u. H+ c! V5 @  {这个方法虽然实现了上述的功能,但是没有扩展性。如果num表内row的数量很大,而且不确定就不容易实现了。

本帖子中包含更多资源

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

x

评分

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

查看全部评分

2#
 楼主| domcylai 发表于 2011-11-4 17:29:34 | 只看该作者
本帖最后由 domcylai 于 2011-11-6 22:53 编辑 5 P, q7 }6 S' T, G* X6 n& p9 I5 H4 X

- U4 ~. r1 V* N$ v解决方法是:用一个for语句来控制:关键代码如下3 y4 y. c7 y, Y* l7 R
for(int i=1;i<=gettablerows("rank");i++)
: \8 o& Z, X5 D+ {; h; d{        if(i==num)  // 此处num值是记录UserEvent 已经运行的次数,可以新增一个节点或用一个table来记录
1 R1 m+ M2 ?8 T        {       
8 t. V# S. q9 J/ l9 A) S                for(int j=1;j<=gettablenum("rank",i,1);j++)
* a/ S0 ~8 |+ l                {! ~3 }' e. |$ j' |! O/ |
                        insertcopy(node("/Tools/FlowItemBin/1/1",model()),node("/Queue1",model()));2 Q3 Z) n0 R3 j8 T1 y: E1 K; y2 \0 i
                }
/ n2 ^! Z& V* z( G. x& }7 {5 b        }
6 n+ u' L* ]8 x5 z7 D) ]}% U# j) T4 D4 M% _* U
此外我还加了一条语句:
1 K' J) S2 C: V( P//if(num==gettablerows("rank"))# J$ N1 M4 I- u% _6 K
if(num==5)     //UserEvent运行5次后关闭" B# J. @; v: C# z: M
setnodenum(node("/Tools/UserEvents/UserEvent1>variables/repeat",model()),0);
1 y, x9 |! T/ f5 E# m: @( F; B3 Zelse ' A, i1 ~3 X* A  C
{
1 w3 Y, H" ]* V$ |7 H( `- `1 K        num=num+1;3 I: w8 E  m, a4 N5 d! F
        setnodenum(runnum,num);
: m: i$ V$ g* l$ O4 R8 ?- E}8 K" b  g2 L; X: H0 L7 F# Z9 A
也就是控制 该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 , e& ~6 H$ d' k3 P
7 L$ m. \9 c: r8 X2 Q
! ~0 G) o& ^5 f0 e7 X( X0 V
学得越来越不错了,补充一下,时间定时器,还可以用发生器和吸收器两个来控制,固定某个时间点创建临时实体,在创建触发里编辑代码
7#
Rosalyn 发表于 2011-11-14 20:17:45 | 只看该作者
4# qiush1234
/ |1 E/ m9 N; Q$ |( T自定义函数,我觉得可以通过C++编程和脚本编程,然后变成全局变量,可以让整个模型都能调用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-28 13:21 , Processed in 0.061090 second(s), 15 queries .

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

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