设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4692|回复: 3

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

[复制链接]
发表于 2010-2-2 12:03:24 | 显示全部楼层 |阅读模式
初学em-plant,要求做一个模型。现在遇到了问题,求高手不吝赐教。
% b) F( z7 }  h, H
0 O$ r) @, z6 V4 S& o7 G某生产车间根据订单生产。订单到达的日期可从table中读取。每笔订单会要求多件产品,各订单可能要求在不同的流水线上生产不同的产品。
. M% [8 x9 f' l& P( Q. {$ F0 ?* a
$ b" ?& J9 h& s% m9 o我现在考虑在source里产生大量的MU,同时每个MU读取table中的订单到达日期。MU从source出来后移至一buffer,在buffer中判断该MU下步该去哪个机器。同时,首先需要判断目前的模拟时间是否已经超过了订单抵达的时间。这是最重要的,这样才能与实际情况相符,即先订单后生产。
8 Z8 Z, ~- V9 _0 e5 e3 j# \5 e. D% t7 C- s# A3 r
如果我使用如下method与buffer的exit
% C8 k6 h! q2 v* i* z# y6 s3 P7 f* u/ I9 e: Z, k9 N
if @.arrival_time < EventController.simtime
0 F, s9 }# u( {. I    then 。。。。。。。。
+ T; V% f+ n/ h3 a1 L
7 ~# q. P+ S6 H, ~! W8 ?# W# [2 a@.arrival_time为MU的属性,在source中已从table读取,每个MU有各自的订单抵达时间(可能相同,即属同一订单)。此语句仅在buffer中判断一次,其后任凭新的MU进入,也不再判断。
- N3 q/ |: ^1 m5 R6 u. ?2 H9 v8 v  w3 [% j3 b( D5 ~" d
如何使得buffer可以不停判断其中包含的所有MU,并且选择符合条件的运出?
 楼主| 发表于 2010-2-2 13:28:37 | 显示全部楼层
如何不按照先进先出的原则使Mu退出proc?
发表于 2010-2-4 00:26:41 | 显示全部楼层
自己编一个程序,该程序由Init调用。
* f# e3 k  o* D4 P* {( q& `' V0 r用一个tablefile,第一列为产生的时间,第二列为产生的个数。
; E" e" l" ?1 P; N7 W. I) P. H; J9 a# E  d
程序可以这么写
3 v1 k, v5 N8 h; lwhile i < table.yDim loop  x% O+ p& y% z' r6 g) G5 c
  wait table[1, i+1] - table[1, i];
0 x6 E' w* J5 B  for j := 1 to table[2, i] loop
# \. B2 C( N2 _3 g: p  L    myMU := ...create(Buffer);
+ u% ^- S3 x  o% w0 U/ g. C* V  next;) z: q1 `; [9 s
  i := i+1;
2 p' n- [, f: ?1 u% I$ B, iend;  @) q% M: L6 @9 k$ W5 E" i
1 g0 g3 @1 W, j6 `$ {9 D
注意,Buffer设置无穷大。
 楼主| 发表于 2010-2-7 10:39:28 | 显示全部楼层
感谢楼上的帮助。应该可行,我去试试。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-18 04:20 , Processed in 0.015988 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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