设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7290|回复: 9

[求助] 用AGV模板发生了以下错误,请解!

  [复制链接]
发表于 2011-11-5 16:38:28 | 显示全部楼层 |阅读模式
问题在哪里?

本帖子中包含更多资源

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

x
 楼主| 发表于 2011-11-14 10:37:54 | 显示全部楼层
没有解决,再顶一下。
 楼主| 发表于 2011-11-17 11:03:27 | 显示全部楼层
/* called by:        entrance ctrl of the object 'track'; k5 z. i4 W. ~
*/' x; G  B. T& `5 [% k5 s! S
is
- G6 z: f& U* j2 \% E% v* t+ S        part, GlobalDistObj, assignLObj:object;row,Lan:integer;( D5 p3 n% K4 S: D. ]. M; w
do
. U6 \1 ~' v, n4 N2 T        Lan := rootfolder.Internal.Tools.AOLlanguage;
* A$ v6 Z8 w. R2 ~: e        if current = @.Destination -- else return
/ T  D6 U4 A/ B( u$ n1 k        then9 c9 I+ E1 D0 M! _5 N
                @.Destination := void;
  W8 y0 p" _  o2 T4 ?) ?                if @.occupied then
& `# }3 c* I6 E! ]) Y                        part := @.cont;1 d" A# g8 o4 i0 L
                        @.transpOrder := void;
$ z5 l' D0 t3 O: Y( O                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,' t7 g; E) o/ N$ B& g' i
                                @,root.eventcontroller.simTime);' a& d" _' v, k% Y; B
                        @.HasOrder := false;
) E; F+ k6 \3 i                        @.DrivingHome := true;+ l9 g( j* Q/ t
                        rgManager.tryToStartTransOrder;
3 |5 b9 i  |  i  y  ^9 u+ F3 V9 o8 N6 I                        if @.Destination = void
. D+ p0 o* `, Y, y, i/ I                        then -- no transport order for vehicle @
. d! U& Q* B. V1 u' F' a                                @.Destination :=
( c, P. c& U7 I+ `: R: \/ O6 j                                rgManager.nearestFreeStation(@,track.~);
2 N3 `( ~( |7 m% H! |6 ]* {                                newDirection(@);   
# o( ^; i- n6 P: p# I. k. y                                if @.Destination /= void then5 N: E/ _1 X' ?8 B' _' X; m5 {; ]- E; e9 D
                                        @.Destination.NumReservation :=6 s0 j' k) o2 W6 N) L. y  ]
                                        @.Destination.NumReservation + 1;8 }1 _3 ?6 q5 c9 q; B
                                end;
1 S: _2 n% m; A                                @.CurrIcon := "drivingHome";
' j5 V5 f: ^8 M8 c4 ^6 I                                @.DrivingHome := true;
. Z# A3 Q% b3 u1 s/ t                        end;' Y$ Y, ]/ d$ I  h* H3 e
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
$ d$ i+ }3 U8 ?# r$ ^                        part := @.transpOrder;
( r% \- G6 ?4 g7 j& D4 S& S                        part.move(@);-- load part/ j) G4 R+ b; Z: x* i0 e7 R$ b
                        @.CurrIcon := "load";/ T) ~) X3 `+ U3 z* o) L
                        GlobalDistObj := part.globDestination;- O3 c- ]' M  B1 k; e
                        assignLObj := rgmanager.rgAssignL;3 u6 B& H3 M% h4 v
                        row := assignLObj.getRowNo(GlobalDistObj);
1 ~9 U( k& b8 S2 i- Q& _- l9 b                        if Row = -1 then -- since 70% [' X8 ^; L( d' ]. d
                                if lan=1 then0 g6 ]1 k+ M/ W4 E% u
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),6 {: B& l8 I3 b9 t7 V8 n. l1 G, C
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
. U; P# I8 F& u, E2 i                                else2 S# ^3 A# S: ~0 o. `2 {0 ~
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
0 }( W+ h  @( C* ~6 w% k3 E5 r( s7 b                                                to_str("in docking station: \"",?.~.name,"\""));                               
! h+ \- p9 w6 h) L( E7 P                                end;' ?, f( h* I( f1 `. `' S
                        else
  p0 V& N9 ?' {" |                                @.Destination := assignLObj[1,row];2 f* }+ o  @8 i3 i0 H  b
                        end;                        8 {) g' w4 a% m! u$ T
                        newDirection(@);" j9 @( s: ]0 b2 K' W' C; I1 e
                        @.HasOrder := true;
: C5 U  q! C: V7 s) G6 k  z                end;
6 e: p1 f, X1 e9 f8 _: t        end;
, H1 B3 [( }; Y5 ]. oend;        -- of the method& M: L9 B$ k$ Y! O  S. t  R
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 , b$ c4 a7 T4 _0 T4 T* }
7 o$ X& E7 r4 ~( J% g* S
这是AGV_putin中arrive的method。" M" _4 x) {- k$ V8 E, a
" w1 T/ r3 m5 r! B( a! [' X7 R
当到达物料速度越高时,这个报警更多,
$ I2 X- V0 f- d1 P3 p' I! f可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。5 t4 f0 J$ m% N% R- k4 B
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
- c/ Q" s1 d, G, T) P, S. m
3 @( s/ y% k. U) F另外一个小建议,就是move,所有的move都可以这样. G' u; N8 ]: |$ r1 L
if not move() then debug end/ A* L  K& w5 p, T% S
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
) g$ C6 ?' U) T7 }9 rplant simulation中的free libraries有AGV模板,
: M( U2 b& u/ d里面也有案例。
, v& Z" s8 C5 g  c$ ~我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
: Z+ g7 f; M  W
  A* i+ Q5 E7 F1 X* }我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 $ X' f/ J6 W0 A/ l

. D9 B0 h9 w9 l& \, r那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 - e, Z, p) K% ?) g& D" g2 Z
这是AGV_putin中arrive的method。' {, e8 C  W' A& m9 Y* D' `) i) L
8 N; Y2 Q" S' r3 `4 Q% Y
当到达物料速度越高时,这个报警更多,

) y* s: [: \' ^- ^( W9 \另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-2 03:25 , Processed in 0.021347 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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