设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9739|回复: 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': d4 y% x+ t( ]2 s) [" y
*/0 e: N" `7 h6 A8 T
is
" ?) u( ^4 F! i        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
& q  J7 J1 x9 I: {, zdo
1 U% m7 X) o7 `+ O% z        Lan := rootfolder.Internal.Tools.AOLlanguage;5 F2 f  p, }- |$ m, x( T7 Q
        if current = @.Destination -- else return
" x$ `4 w  K; ?6 ^* J, D# d        then! U; Q% R* F! d5 ]
                @.Destination := void;8 [  O& M, n# M2 g0 B: @: K
                if @.occupied then: x! b* I7 y1 s1 @; g
                        part := @.cont;1 m9 k7 P2 e* x' [
                        @.transpOrder := void;& e' o  D! Y! L# l4 Q/ J6 K
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
9 P6 i% O8 }2 w% s# f                                @,root.eventcontroller.simTime);
! ^9 c& {& F6 d9 s( j5 j' H6 a9 X( B                        @.HasOrder := false;
8 y, g2 z; G: z3 e# Z+ J5 S                        @.DrivingHome := true;
: q: b% m+ z1 D( z1 a                        rgManager.tryToStartTransOrder;
& e4 ^, _. J9 J! S                        if @.Destination = void: F" I% r, j6 F7 h9 e& e' z! [
                        then -- no transport order for vehicle @
8 x; p. g: `% R                                @.Destination :=' f" K& t& y$ r  C
                                rgManager.nearestFreeStation(@,track.~);+ z. i) z: g, K( d
                                newDirection(@);   
! ~7 Q; m/ ~4 x+ z3 x                                if @.Destination /= void then
: N6 J' Y/ M9 m9 t- a                                        @.Destination.NumReservation :=
9 k0 \$ |  P# t! }6 y8 v. ^3 ~                                        @.Destination.NumReservation + 1;* `( R3 V% ?3 w
                                end;: p1 N' n/ o6 d6 c4 E
                                @.CurrIcon := "drivingHome";) c( T& J, q, I2 p. T6 r! W
                                @.DrivingHome := true;
. A) U% V" O. i# m                        end;
7 w% m1 G. v, I4 O2 ^0 i                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
3 \# D8 W2 r: y3 U- U$ n  b                        part := @.transpOrder;( q6 }2 S/ c, T
                        part.move(@);-- load part
# ^- J  O$ o# r9 _$ `9 _9 e# e1 J                        @.CurrIcon := "load";
8 a3 o1 S& a# g                        GlobalDistObj := part.globDestination;
" F7 T" l1 Q8 y  N7 P                        assignLObj := rgmanager.rgAssignL;6 X9 L' ?5 i& f
                        row := assignLObj.getRowNo(GlobalDistObj);
% C/ i" c& h' v; P8 Z% W& h2 J                        if Row = -1 then -- since 70! Z0 v& {! c7 p
                                if lan=1 then, h+ Y" a6 w9 I. ~$ O4 u% _  K5 K
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
9 Z4 c9 {3 C4 W; z5 N                                                to_str("in der Andockstation: \"",?.~.name,"\""));
, p3 s) a! K' s8 w                                else4 T! f9 ]8 x9 ^" U( [: \/ @8 ]
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),0 T  f; V/ t. B, |
                                                to_str("in docking station: \"",?.~.name,"\""));                               
7 J3 {9 V; M2 \: x                                end;2 h9 w$ i& d) O: |( ?
                        else5 k+ j1 E) Q; Q6 a$ {3 y
                                @.Destination := assignLObj[1,row];$ \3 k4 ^3 K/ \; z3 h, [
                        end;                        8 o. J3 P" x: L4 x1 ?2 K- M! |3 d
                        newDirection(@);
$ e. s. j. V+ G1 F- s, d% u+ a9 c( {                        @.HasOrder := true;
7 Q5 X" c4 f: x& C; J" q9 }' N" Y% E                end;
; x! V8 ~$ D4 n7 d% D& P        end;
( z+ }. V+ B6 e1 Z' U4 ~end;        -- of the method
7 c% S; {& i  H+ ]
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
% m( V1 p4 {6 E$ \
9 Y9 Y/ r9 ?3 C+ e- {4 M" y这是AGV_putin中arrive的method。, A4 q$ O# \* q8 h* R; L( N8 K

" I, j  C8 N0 }. Y# w当到达物料速度越高时,这个报警更多,
* b2 u+ H0 X* x% ^4 C0 G可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。6 v; T6 \! f8 K* o2 I
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?+ G( b- n; X& m) R  L3 l' d
  A7 F/ C: _& w/ {9 V+ J( O7 k5 P
另外一个小建议,就是move,所有的move都可以这样! B/ n/ [, x1 \# {, g& S
if not move() then debug end
; m8 M% h' o5 }0 E: W" E; i  E1 t( V这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
( h2 L" k4 q. A9 R- {' dplant simulation中的free libraries有AGV模板,1 t  x& ]5 ^; ^/ o
里面也有案例。
: E* n5 ]' w/ [9 i5 |9 d9 j我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。0 F9 g" F) `1 p
9 p$ S/ E$ b$ I: [9 p5 ?
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 9 C/ d' k7 A+ w. \, E

. f  C" f$ @% V% n2 b那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
) Y, P2 }0 n) ~; s0 O这是AGV_putin中arrive的method。
$ u/ b2 ]" K. H' p
$ _- F& y7 |. \9 C当到达物料速度越高时,这个报警更多,
) X5 f) g- ~6 d! O2 i# c4 S
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-21 07:55 , Processed in 0.023014 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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