设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5069|回复: 3

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

[复制链接]
发表于 2010-2-2 12:03:24 | 显示全部楼层 |阅读模式
初学em-plant,要求做一个模型。现在遇到了问题,求高手不吝赐教。
$ U) r" ~* K  d1 w0 l( E+ j  C3 c. u7 \) p4 b$ C; Z
某生产车间根据订单生产。订单到达的日期可从table中读取。每笔订单会要求多件产品,各订单可能要求在不同的流水线上生产不同的产品。
, G; O0 o# g2 M; f3 e% h, b
8 }+ ]- H+ }/ G3 c! r我现在考虑在source里产生大量的MU,同时每个MU读取table中的订单到达日期。MU从source出来后移至一buffer,在buffer中判断该MU下步该去哪个机器。同时,首先需要判断目前的模拟时间是否已经超过了订单抵达的时间。这是最重要的,这样才能与实际情况相符,即先订单后生产。
  Y4 m) L" H  S# y" p5 H& q( k2 ]0 M1 S: [
如果我使用如下method与buffer的exit
( O% {" @/ b  k1 c. y, H+ N  |2 W
; |# X5 N4 N0 @, o" P3 ?+ v( rif @.arrival_time < EventController.simtime
' e& D0 |/ [" l* z1 E* V% N    then 。。。。。。。。
/ E  Z2 ]  e7 S' K% z2 W3 _' C: I" x# k2 I# G
@.arrival_time为MU的属性,在source中已从table读取,每个MU有各自的订单抵达时间(可能相同,即属同一订单)。此语句仅在buffer中判断一次,其后任凭新的MU进入,也不再判断。
/ S' k7 z$ n: l# _; O
4 x" ~  V5 A5 ?6 C4 D- y如何使得buffer可以不停判断其中包含的所有MU,并且选择符合条件的运出?
 楼主| 发表于 2010-2-2 13:28:37 | 显示全部楼层
如何不按照先进先出的原则使Mu退出proc?
发表于 2010-2-4 00:26:41 | 显示全部楼层
自己编一个程序,该程序由Init调用。$ i+ R  ?% k+ m/ K
用一个tablefile,第一列为产生的时间,第二列为产生的个数。
- I+ I4 t2 x2 e2 W5 d+ b) t; k8 u2 n2 c! ?( f" v& J
程序可以这么写# `) z2 H7 I1 [# z/ G' R
while i < table.yDim loop
+ _  [% R! b4 a0 j/ W  wait table[1, i+1] - table[1, i];
1 V, \# K7 O' H1 ?  for j := 1 to table[2, i] loop
$ _# u1 E) a4 N/ g; a    myMU := ...create(Buffer);$ v2 x) p+ I0 a& I! b
  next;
/ U- h8 t' @( r9 p& O2 a  i := i+1;
% a* D1 k# @* F7 send;
" t+ b# |9 `. w6 f
# q# j: A! x7 a( F/ h) i注意,Buffer设置无穷大。
 楼主| 发表于 2010-2-7 10:39:28 | 显示全部楼层
感谢楼上的帮助。应该可行,我去试试。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-7-6 21:42 , Processed in 0.020713 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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