全球FlexSim系统仿真中文论坛

标题: 如何让分解器中容量发往多个下游 [打印本页]

作者: shane    时间: 2019-3-27 13:17
标题: 如何让分解器中容量发往多个下游
想请教一下大家,在不添加其他的实体的条件下,能否让分解器在拆包时,第一个暂存区容量满了以后,发往第二个暂存区。需要怎么进行代码的设计呢?$ h& Z' W7 Y# B' }

作者: 十度烧    时间: 2019-3-27 14:47
可以判断分解器下游的最大容量和下游的当前容量差异,决定发送到的端口号
作者: FanQin    时间: 2019-3-27 14:49
在分解器的sendtoport上写个判断语句,if(进入端口1的item数量等于20,就发送至端口2)
作者: FanQin    时间: 2019-3-27 14:53
FanQin 发表于 2019-3-27 14:49  {* x* W% J; r1 ^
在分解器的sendtoport上写个判断语句,if(进入端口1的item数量等于20,就发送至端口2)
1 F+ H) H( {) Q+ w" @) P
或者直接在暂存区设置最大容量
作者: shane    时间: 2019-3-27 15:59
FanQin 发表于 2019-3-27 14:535 f* N- L6 K6 l! k2 H
或者直接在暂存区设置最大容量
, O; b- b4 x, h; A
直接设置最大容量会出现这样卡住的情况
作者: FanQin    时间: 2019-3-27 16:03
shane 发表于 2019-3-27 15:595 E/ x1 Q) ]/ K5 m
直接设置最大容量会出现这样卡住的情况

: ~' |! q& \# N4 s最好能看到你做的模型,这样看不清楚是哪里出了问题
作者: shane    时间: 2019-3-27 16:40
FanQin 发表于 2019-3-27 16:033 V2 c7 t8 M1 Y. L3 P* h! }) C! x" s
最好能看到你做的模型,这样看不清楚是哪里出了问题

, g1 s4 [9 d  e: {: o大佬,模型在这
作者: FanQin    时间: 2019-3-27 16:43
shane 发表于 2019-3-27 16:40# V# B: z' p7 }4 o" t- m
大佬,模型在这
5 q8 w7 T: v2 [4 G8 j) A/ w* G
下游暂存区的最大容量你设置了10,所以只能进入10个。
作者: shane    时间: 2019-3-27 16:49
FanQin 发表于 2019-3-27 16:43
! @% y* `! }- g; k9 p' m下游暂存区的最大容量你设置了10,所以只能进入10个。

+ q$ T/ P, y+ J- K1 j* i对呀,我的目的是一个暂存区10个装满了,然后就发送到另外一个暂存区。
作者: FanQin    时间: 2019-3-27 16:54
shane 发表于 2019-3-27 16:49( t2 v3 x+ \/ N" _
对呀,我的目的是一个暂存区10个装满了,然后就发送到另外一个暂存区。

3 {+ B/ ]- b2 T/ Y" @1 W2 x终于理解你的意思了。那是不能用最大容量设置。还是反回到我第一个给出的方法,需要在sendtoport上编写代码,判断进入下游1的数量是否等于10
作者: FanQin    时间: 2019-3-27 17:05
本帖最后由 FanQin 于 2019-3-27 17:11 编辑 ( G3 `# i/ O* l* S  R0 e3 j! z
shane 发表于 2019-3-27 16:53
( M5 x- f% w9 I, \! t6 b) u7 q" L我是打算这样子写代码实现的,但是不知道哪里出问题了
代码逻辑错了,你这边需要用到三个输出端口,但是这个代码只适用于两个输出端口,建议用port by case;
作者: shane    时间: 2019-3-27 17:32
FanQin 发表于 2019-3-27 17:050 T6 Q0 f: e5 S+ D/ N7 t* h* G. X
代码逻辑错了,你这边需要用到三个输出端口,但是这个代码只适用于两个输出端口,建议用port by case;
* ?2 q/ p% }2 B' `9 v
啊没事了,我发现哪里出问题了。if后面少加了一个()。
6 w& ]( z. Y2 Y' {这样子就可以实现了9 `3 ?$ J2 E7 `+ A! h: [; G; v
treenode  item = parnode(1);
4 @; X# |$ J$ ?/ z% c' l- E+ atreenode  current = ownerobject(c);
" r. R! `3 n9 W5 Z( y/**默认分解器选项*/" J$ Z7 a: s( w9 h% c* r, ]4 }, X
if(getvarnum(current,"unpack"))( o7 m. }0 d, C( \9 R
{
3 w6 x( T. C$ L' ?  if(getrank(parnode(1)) == 1)
9 [9 a) x- d$ V7 s7 g& p    return 1;
* b% ]: j4 E" H) V   else
" k/ ?" o0 y4 J  r( r- D. s$ c2 f   if (content(outobject(current, 2))<getvarnum(outobject(current, 2),"maxcontent"))1 e: \% r- H& m% F0 p6 S
    return 2;
$ O6 R- g% W2 g3 Q! S& X   if (content(outobject(current, 2))==getvarnum(outobject(current, 2),"maxcontent"))% Y7 P/ F2 G, h( N8 b
    return 3;
+ b4 M3 \5 v* N9 h}7 X% ^8 `/ l; W' j; L) m, E+ Q
else, s* i+ C" u+ L9 f& v# O# \
  return 0;
作者: zjj0605    时间: 2019-4-3 17:39
感谢楼主的分享




欢迎光临 全球FlexSim系统仿真中文论坛 (http://www.flexsimasia.com/) Powered by Discuz! X3.3