设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10954|回复: 13

[求助] 模型异常停止问题 附上模型 求助大家了

  [复制链接]
发表于 2012-4-14 14:27:26 | 显示全部楼层 |阅读模式
上次模型总是异常停止的问题,改了很多次还是一样,不明白问题出现在哪里,求大家帮助了,另外问些基本的问题,Method的指示绿色代表执行,暗黄色是等待么?藕荷色是中断么?基础的问题,我是初学者见笑了。

本帖子中包含更多资源

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

x
发表于 2012-4-14 21:26:00 | 显示全部楼层
问题出现在Assembly_Store20 X4 a! [7 F2 g0 E+ {0 h  O0 O+ X
                if .NewFolder.JopShop.M14.cont.name="J13" then8 {" V& L: f3 M& @! f0 a3 t& w
                        print "11111";7 l) E8 i- Z8 ~, U3 F( c
                        waituntil .NewFolder.JopShop.Var_J12=true prio 1;  D; e& K! U0 L! F* \7 u6 A- g6 c
                        print "2222222";/ C' U  I4 \/ d' x# L
当模型停止时,只显示了111111,而222222没有出来,表示程序停止在waituntil .NewFolder.JopShop.Var_J12=true prio 1;
 楼主| 发表于 2012-4-14 21:39:07 | 显示全部楼层
老马多拉 发表于 2012-4-14 21:26 9 @! q2 @& x, H; j- N5 R
问题出现在Assembly_Store2
! Q' H: r- e9 O0 ~: \                if .NewFolder.JopShop.M14.cont.name="J13" then
4 u" w( J6 @  A                        print "11111";
  ^! \/ s) U0 b+ k0 y* U  n& r
谢谢您的解答,周老师,waituntil不是只中断当前method么,为什么连source和 别的机器都停止了~这点我最是疑惑。
发表于 2012-4-14 21:41:21 | 显示全部楼层
一点建议:9 F! O/ g  b6 V8 P/ H! M% W& p
1、store1/2不知什么用途,如果仅仅是仓储,则后端部建议和装配相连,因为store是被动的;可以考虑在装配前增加一个Buffer,加工时间为0;
  I" N. W3 Q. z$ S! f  a2、写一个通用的method,由各M*的离开控制触发,最后一道工序加工完成后且满足装配条件的的工件送Buffer1/2;最后一道工序加工完成后且不满足装配条件的工件送Store1/2;满足***条件的送B9/B10;非最后工序的工件加工完成后送下工序的B*......
( ~2 J0 H5 f7 J% ]/ ~7 V& @3、关于装配的从动工件,是否可改为前节点方式
 楼主| 发表于 2012-4-14 23:38:19 | 显示全部楼层
老马多拉 发表于 2012-4-14 21:41 ' b; k, W) v. a# t( m0 a
一点建议:0 ^3 W, m: J, o  t; Z, f) E
1、store1/2不知什么用途,如果仅仅是仓储,则后端部建议和装配相连,因为store是被动的;可以 ...
) \/ Z4 ^4 x8 @# ^0 T# o; P& u
加Store的原因主要是因为装配的种类不同,例如,J1 和J2, J14和J15都在M13上装配,需要进行选择,Buffer是先进先出的,所以可能到达M13的是J2,但buffer出来的却是J14,就没办法正确装配。! I8 q$ |: F  k' R& H! o) Y9 A, o
另外关于通用method,因为加工的路径都不相同,所以就拆开了~这个影响应该不大吧。- ?- @  }6 C' N9 h) [
最后“关于装配的从动工件,是否可改为前节点方式”,我不是很理解您的意思,麻烦请您详细的说明下。
3 y) C, ^3 V1 j麻烦您了,谢谢。
 楼主| 发表于 2012-4-14 23:43:36 | 显示全部楼层
taoyifei2000 发表于 2012-4-14 20:58 , B; e. S3 j3 j$ F  B: B9 \) j
大概看了一下,应该是M13 M14装配那里的问题,没有完成任务,后面的工件进不去,所以卡住了。/ r6 N# E8 o  b6 q. ^! j6 |
9 N- }: {( _- W% ?5 U
至于不同i ...
0 k( A, i  y. k$ K4 F( y- Y! D
主要是,我不知道M13 M14装配出现什么问题了,为什么会导致整个模型都停止~
发表于 2012-4-15 07:53:13 | 显示全部楼层
& G. @+ s3 w. d% n! s
原来将工件送入Store1,然后在Store的入口判断,需要使用等待语句等等;现在改为在最后一道工序加工完成后判断:如果需要到M13装配,就送到装配前节点2(即新增加的BF1),无须装配的则直接送入Store1
6 u% i! x0 W, M6 A" M2 l& ~4 p4 T: Q' q

! }6 i3 D" J$ X7 P& J3 F
8 \" y! M" k9 b# J; p) u4 Q) y; I: a

本帖子中包含更多资源

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

x
 楼主| 发表于 2012-4-15 09:39:29 | 显示全部楼层
老马多拉 发表于 2012-4-15 07:53 / n5 B/ m( t! {6 b) c3 V
原来将工件送入Store1,然后在Store的入口判断,需要使用等待语句等等;现在改为在最后一道工序加工完成后 ...

  f6 d6 Q2 z/ t# b0 ]我可不可以这样理解,在M13上装配的从动部件全部送入BF1,不装配的送入Store1,这样就有一个问题,BF1是先进先出或者先进后出的,如果M13上的为J15,而BF1先出的是J1就没办法装配,之前用Store的原因就是需要遍历Store,找出对应的部件。
, A. Z. T& v0 S& R/ {4 T& ]5 ^+ Y7 D( I1 U7 {% x' [5 X
还是您是说 如果M13上有J15,那么将当前的J14送入BF1,而J1和其他J14均送入Store1,这样的话我就需要首先遍历Store1再将当前的J14送入BF1了,每一次都要遍历Store1.
; x: d9 h, w7 X2 e( r
: d& k% n/ T4 J+ [ 周老师,其实我的理想模型是每一个机器前都只有一个暂存区,M13和M14前也都只有一个暂存区,但是我没有想到实现的方法才采取了现在模型中将主动从动分开的方法。% Y# V  A/ c, e
多次向您提问,实在是很不好意思,劳烦您了。
 楼主| 发表于 2012-4-15 11:19:37 | 显示全部楼层
taoyifei2000 发表于 2012-4-15 11:05 * A2 v2 k$ D0 Q1 R
既然这样,你就上placebuffer试试,附上小模型,按照assembly中的装配要求,对placebuffer中进入的任意顺 ...
( `4 C1 R+ I$ ?  p, w4 K
很感谢您的帮助,但是版主的模型我打不开,因为license问题,method打不开~ 可不可以导出method发给我~麻烦了~
发表于 2012-4-15 14:34:53 | 显示全部楼层
arch1104 发表于 2012-4-15 11:19
, {: C. Q) M% ~9 b- M( N9 B$ A7 W很感谢您的帮助,但是版主的模型我打不开,因为license问题,method打不开~ 可不可以导出method发给我~麻 ...
2 Q& A- X- `4 U/ ^, S
右击method,run就打开了
 楼主| 发表于 2012-4-15 18:07:36 | 显示全部楼层
taoyifei2000 发表于 2012-4-15 11:05 # p0 G( v+ Y  g& e
既然这样,你就上placebuffer试试,附上小模型,按照assembly中的装配要求,对placebuffer中进入的任意顺 ...

2 b4 Q& N" N8 T: F0 o) C明白了,但是placebuffer的存储方式是不是先进先出的?我还要实现先进先出的功能~所以要考虑下placebuffer的存储方式。是不是先存入placebuffer[1],然后placebuffer[2]这样,如果placebuffer[1】取出,就插入新的。$ |" t( e" ^# V% d# B+ h: i
这样就有一个问题,可能出现这种情况,就是会有很多部件到达placebuffer,每次遍历时都取出前面的,而后面的就一直储存在那了。
 楼主| 发表于 2012-4-15 19:07:16 | 显示全部楼层
taoyifei2000 发表于 2012-4-15 18:29
5 }  g. L' W$ W) J你就放心使用吧。8 u' H( E+ K2 P

6 l3 G3 M4 K. R4 k至于placebuffer的工作原理,之前周老师已经详细讲了。

6 q/ P$ y5 O) c$ t  o+ f谢谢 谢谢  问题终于解决了,对plant simulation还是不熟悉  需要学的地方还有很多,谢谢斑竹们的细心解答。
 楼主| 发表于 2012-4-17 16:40:10 | 显示全部楼层
taoyifei2000 发表于 2012-4-15 18:29 / K# J7 R( z/ I3 I- l
你就放心使用吧。1 i- ~# z4 a* @" \. X5 t4 Z
- T1 |, [, K7 q. ~$ k, i( y
至于placebuffer的工作原理,之前周老师已经详细讲了。
- [* j0 k3 H/ X. A
斑竹,我在加装配时间时发现您给的例子中a机器是没办法定义加工时间的,应该是用的creat没有从入口进入吧,所以就在placebuffer中使用了wait语句,来模拟加工时间,但是出现了 “‘creat’只能应用于列表、对象或数据类型列表的变量”  这样的错误,
% s/ K! q' u+ C- {. f, b' X我的method
' F% l6 M- f. x: |! s9 M3 A# q7 _3 n5 [0 Y
is/ {  m( C. h3 |0 t+ F' E& g
        i,j,k,h:integer;/ Z& B  k! [- L" o
do% d: r0 G; X2 R
        for k:=1 to assembly.Xdim loop;( g9 O) P: b: q2 c9 Y! J
                for i:=1 to ?.capacity loop;
; g4 w) \+ N; g9 ^6 ^                        for j:=1 to ?.capacity loop;- m* s  q% Y6 m1 g8 V
                                if ?.occupied and ?[j].occupied
; i7 P! j/ `7 W# |3 ^2 O                                then
0 Q# B+ ^" x; M, a6 F8 m                                        if ?.cont.name=assembly[1,k] and ?[j].cont.name=assembly[2,k]
  L/ i* v9 p' a% \  D: V+ o% o+ j                                        then
  n1 I% M' p: K0 K                                                waituntil a.empty prio 1;
: o* u; h4 v3 a: d8 f# Q5 j0 V8 ]9 U                                         if ?.cont.name="J2" then
  f: `+ I, q; m, O7 `. k' N                                                   wait 10;
* w# p1 t5 z# Z: f) w3 y; b                                           elseif ?.cont.name="J15" then
; H2 s/ f% ]$ Z# h/ ^. |$ [: P                                                           wait 16;
/ y8 `5 g+ b& U- Z- x' l3 t                                                           end;# l* D, @% ^; J+ m6 H
/ A. }3 U) Z1 W0 s: B2 B$ K9 E0 d5 {
                                                ?.cont.create(a);
  Z; [  ~5 J- l$ W6 F5 P% E1 q, N                                                ?[j].cont.create(a.cont);
" J5 `' J. w2 a# c# }  `. R* t. q                                                for h:=1 to ?.capacity loop;
2 V( n6 b; X, J9 z                                                        if h=i or h=j
3 _3 U) H" a" g, a                                                        then9 i# p0 Y. d' Q6 V
                                                                ?[h].cont.delete;: t8 @# U* b3 H7 x+ s& E3 D
                                                        end;2 r: f2 z: A6 m2 u6 }
                                                next;+ C  b: h  U2 H9 G: W
                                        end;
: {* f$ A. V+ i# t$ g% v, g                                end;
5 a: O5 U, f: o+ ~: o4 u                        next;. b( b) W! H3 @5 G  C4 i' I% W
                next;
( x" g7 @9 G3 c. ~5 W* }4 T        next;        3 c, t( c. f. [
end;5 a# U5 H8 O  ?' y- x6 ]
错误在红色字那一行
发表于 2012-4-17 17:39:26 | 显示全部楼层
create是针对class的。。。不能建立一个已经存在的实体。。。& S7 i* p/ C" s( c
create前面的路径应该是指向类库里的某一类mu
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-5 22:04 , Processed in 0.015049 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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