设为首页收藏本站

最大的系统仿真与系统优化公益交流社区

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5031|回复: 3

[求助] 如何在特定时间段后同意MU通过

[复制链接]
发表于 2010-2-2 12:03:24 | 显示全部楼层 |阅读模式
初学em-plant,要求做一个模型。现在遇到了问题,求高手不吝赐教。
4 g+ i/ z, j& f' `! r/ k% t, f/ i' y1 A3 c" J$ }
某生产车间根据订单生产。订单到达的日期可从table中读取。每笔订单会要求多件产品,各订单可能要求在不同的流水线上生产不同的产品。- ^( _0 F. Y; D1 x" T
* F4 \7 U9 X9 l
我现在考虑在source里产生大量的MU,同时每个MU读取table中的订单到达日期。MU从source出来后移至一buffer,在buffer中判断该MU下步该去哪个机器。同时,首先需要判断目前的模拟时间是否已经超过了订单抵达的时间。这是最重要的,这样才能与实际情况相符,即先订单后生产。
# W8 N2 [% M. d( a( V
; s0 E6 \7 p' T6 L7 V  B如果我使用如下method与buffer的exit
7 T5 ?" v$ x+ d  U2 b7 _! X: W7 U
" w8 x: S7 ]6 uif @.arrival_time < EventController.simtime
$ r/ }6 C% D( a- V( L0 v    then 。。。。。。。。
4 U3 s# J7 j0 p2 {0 G& i. N1 }1 G6 p/ }" ]
@.arrival_time为MU的属性,在source中已从table读取,每个MU有各自的订单抵达时间(可能相同,即属同一订单)。此语句仅在buffer中判断一次,其后任凭新的MU进入,也不再判断。
6 V: r5 J& h9 q6 T# s2 }5 F& q# t. g) u' ?+ u/ p' Q4 {- R9 C
如何使得buffer可以不停判断其中包含的所有MU,并且选择符合条件的运出?
 楼主| 发表于 2010-2-2 13:28:37 | 显示全部楼层
如何不按照先进先出的原则使Mu退出proc?
发表于 2010-2-4 00:26:41 | 显示全部楼层
自己编一个程序,该程序由Init调用。
1 P8 |9 i) ?8 _5 |; |用一个tablefile,第一列为产生的时间,第二列为产生的个数。
0 H8 _6 H; B: Y/ g; G% g# z+ M& h) C0 y, }$ F$ t
程序可以这么写
5 H1 P: D' L" ^8 \while i < table.yDim loop8 ]: y. z. \, o
  wait table[1, i+1] - table[1, i];6 Q' I  [4 e. J# |/ l, _4 q
  for j := 1 to table[2, i] loop
" G2 p. [( a6 @2 Y; m7 k! n/ J* Y    myMU := ...create(Buffer);
% T6 w5 K: U% \8 B. v/ g  next;
3 Z/ x" d8 s( q8 a  i := i+1;: }5 B# W  x7 t% r2 a
end;5 ~. B. D) t/ i, \/ c% U

2 g+ b4 W) a$ n8 D+ y3 O注意,Buffer设置无穷大。
 楼主| 发表于 2010-2-7 10:39:28 | 显示全部楼层
感谢楼上的帮助。应该可行,我去试试。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|SimulWay 道于仿真   

GMT+8, 2026-6-28 01:39 , Processed in 0.016286 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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