设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6975|回复: 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'8 a. g% T% U4 h. L/ K! q
*/3 Q7 I3 O9 ?! |* e2 U7 M
is
6 k$ s/ e/ c% {& y        part, GlobalDistObj, assignLObj:object;row,Lan:integer;4 u( X1 k0 D2 g8 {5 ]- H
do
' {" B. J4 ~- M; d6 ~        Lan := rootfolder.Internal.Tools.AOLlanguage;5 `2 r1 d1 U( {8 t1 D  ]
        if current = @.Destination -- else return% J0 @( Y0 C+ W( |
        then
- U0 N8 F7 N: r9 _- l& k; W                @.Destination := void;
# g) h7 p9 L9 h                if @.occupied then2 }' H7 P# z& I0 B% ]. u
                        part := @.cont;1 T  b! s' \' O8 B- f; e. g
                        @.transpOrder := void;% K6 Q  G. N- ]' H. r
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
9 _4 G3 F. Z, R! m" ^& R% t                                @,root.eventcontroller.simTime);" s- h4 _5 z' a, ^, U" a% i3 I
                        @.HasOrder := false;# g: x# \' R: D2 T  p
                        @.DrivingHome := true;3 g) C2 o$ ~4 T; c
                        rgManager.tryToStartTransOrder;
2 s, @  c5 o; j& o( J; l                        if @.Destination = void
1 _- ]8 y  ]4 Y2 ^8 B7 F% i% t                        then -- no transport order for vehicle @7 c' z( b7 w  r# [% M
                                @.Destination :=" l- l. a+ _# R- ~8 e
                                rgManager.nearestFreeStation(@,track.~);- F$ z6 |2 K8 C; m3 c- t; L
                                newDirection(@);   + o& a; E5 Z5 D5 B$ }% h
                                if @.Destination /= void then  h2 ^0 t% f5 E
                                        @.Destination.NumReservation :=7 a8 v: q* t# O$ s
                                        @.Destination.NumReservation + 1;' O: J7 t+ m- G7 x6 B1 J: Y
                                end;0 e) z: u/ d- o. f; c9 C% `6 _
                                @.CurrIcon := "drivingHome";
8 f8 E! Q: C* Q5 Y) @3 j                                @.DrivingHome := true;
* ?! x5 t' N( N                        end;* m+ w5 ?- \7 z" ]3 B" Q7 X2 @
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
6 V# C* G) ~5 V3 u# w8 i5 g1 S                        part := @.transpOrder;5 G5 |9 d) s" N( d- M, v6 j. L
                        part.move(@);-- load part
# B/ U2 |1 T* }1 E                        @.CurrIcon := "load";0 X2 b5 p0 e' I( z, t% f
                        GlobalDistObj := part.globDestination;! z+ k* t9 M9 Q. `8 v+ d9 C5 w/ B
                        assignLObj := rgmanager.rgAssignL;
/ t: Y" C0 Z' q0 w                        row := assignLObj.getRowNo(GlobalDistObj);1 ]) e( _3 i0 B# q
                        if Row = -1 then -- since 70% J: f6 C: n* c! W1 O
                                if lan=1 then
, X4 F$ J! V& `                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
( A- y  e$ |% X1 P$ T                                                to_str("in der Andockstation: \"",?.~.name,"\""));. L+ S# f2 z5 P: \+ I+ S0 s
                                else5 G* s- R# e0 ?$ s
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
4 S( y. E+ ^2 s# Y. o+ t+ j. f                                                to_str("in docking station: \"",?.~.name,"\""));                               
( ~$ }" r+ j9 D: A! _7 h                                end;
3 s/ G0 Q$ _4 h8 F" p0 A1 x                        else
9 U) W/ y. v  ~0 x2 k& M                                @.Destination := assignLObj[1,row];
4 |( [" Q' h; d                        end;                        * t  C) \5 ^3 z, A2 p
                        newDirection(@);7 }5 U3 r4 q0 c" G6 j9 o/ ^
                        @.HasOrder := true;" P2 a: t) ]4 N* {& x" j0 {5 g
                end;4 C3 g# W# g) ^+ T: v2 y
        end;- c5 x+ r- n2 b
end;        -- of the method/ A! Z, E- R- s  V: L0 f2 F3 |
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
2 I' T* i% k7 z. v( ^1 c& h* r/ U/ C, F" [) Z! j  @
这是AGV_putin中arrive的method。' h: K/ v. c$ |' w

; c0 G; J$ _- [- T; \4 R/ g" K当到达物料速度越高时,这个报警更多,
1 t1 i/ o" k. F2 x. G, w: K可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。8 G+ o1 G0 j+ j
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
4 z# M0 L$ J9 m, F
- d6 p" @7 L+ D# |4 f6 i另外一个小建议,就是move,所有的move都可以这样
& G4 J2 R( o- n2 B& c% g. H3 Cif not move() then debug end6 u" E$ n# C: S
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
1 I, s2 A4 v) Y5 ?& \" L) Rplant simulation中的free libraries有AGV模板,
9 D3 L7 M) I7 Q里面也有案例。
/ {# {+ @' X9 ~7 h" G6 [7 ]3 a我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。# t& W& Y$ r8 Y+ E" I5 G( }

6 n+ V. w3 A( d' U. Y我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 6 x/ _( q3 C. K& f9 S% i

9 }- Y' p- ]0 n- r( W; C: z" N2 u那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 & v& b! o8 `/ A% X$ Z  F2 f
这是AGV_putin中arrive的method。! u1 ?/ A3 i2 D4 H" m% N' T8 ?9 L. w

& I/ m3 {7 h6 t) T( S当到达物料速度越高时,这个报警更多,
+ k1 [3 }$ h( [7 Z
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-9 13:42 , Processed in 0.020123 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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