设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9847|回复: 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'
, M9 c5 W! H5 K$ V) k*/' H. v$ B  \! C$ A. @( s/ W
is3 |: f) h4 H$ _3 P2 j0 }
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
' E, y; G, e$ J7 v2 D  udo& x# A; |0 m) p+ v% T
        Lan := rootfolder.Internal.Tools.AOLlanguage;; [7 A: X5 v' s- \: L9 z
        if current = @.Destination -- else return, l0 O2 X. c8 z- H
        then4 W$ i  ]8 }+ \; ^7 I
                @.Destination := void;5 ~* g* Q+ n6 m  ~2 F' Q* H: p
                if @.occupied then' ~% Q' R$ k+ g5 I) K; W5 P3 s
                        part := @.cont;
( x/ g3 m) U# X7 `" U! W4 y9 M" M                        @.transpOrder := void;2 G' f1 W7 C9 P5 }
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
' l  U4 @- f, C# a% o/ S* p) m! P                                @,root.eventcontroller.simTime);% ?2 G; k; |6 a0 a% V
                        @.HasOrder := false;9 o% R( r! I$ N$ }8 ~/ r- J
                        @.DrivingHome := true;6 C+ i' ?& L: L! Y$ g
                        rgManager.tryToStartTransOrder;* K6 D& k, b( }( z2 A
                        if @.Destination = void
- Y! T# {) n; X4 Y                        then -- no transport order for vehicle @5 z9 z7 Q  k7 J- A' P
                                @.Destination :=+ p0 i% M9 S/ V7 k
                                rgManager.nearestFreeStation(@,track.~);" N, w1 Y6 m8 Z  A3 q5 v
                                newDirection(@);   
( P8 i# i0 t2 Z" j6 r' W                                if @.Destination /= void then
5 N0 ~" V8 c* o4 L                                        @.Destination.NumReservation :=
9 j, ~, c4 a7 j+ {5 M                                        @.Destination.NumReservation + 1;0 N7 q0 ]/ P% {) l
                                end;: v$ M5 {5 ~4 V) ]" ?7 D
                                @.CurrIcon := "drivingHome";
( [- t$ |$ x  a0 ^- M6 a                                @.DrivingHome := true;
. ?3 ~+ F* E* l; W% I; |4 @9 S                        end;
- {1 H. W9 b: I0 g) p                else -- the vehicle @ is empty, both vehicle and part are in the same dock station* a+ c6 [- e) w0 l6 C
                        part := @.transpOrder;
- N2 ]  h8 B* ^% ?4 @; ?! ~( q                        part.move(@);-- load part2 _$ T" O* t  t. c4 Q
                        @.CurrIcon := "load";/ T" n0 r; r# w, |1 j3 J
                        GlobalDistObj := part.globDestination;+ J& A3 R) g( q! \
                        assignLObj := rgmanager.rgAssignL;
0 i* N6 L7 S5 y: S                        row := assignLObj.getRowNo(GlobalDistObj);- v5 H1 r; e7 V3 C  N
                        if Row = -1 then -- since 70
& j5 j7 x: m. X; |0 h( f                                if lan=1 then7 X: g1 h: f7 m( ]2 r% i
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
/ h. |9 v. g# j) m% m4 c2 Y                                                to_str("in der Andockstation: \"",?.~.name,"\""));
4 k( N# `2 i- F& x9 t                                else
$ h* a$ C! }+ i. r                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\"")," F; |6 z, D2 x$ r' V5 c. W3 v
                                                to_str("in docking station: \"",?.~.name,"\""));                                $ d" q3 g* _/ i# I7 V8 z4 }
                                end;' S' ?3 c. i5 `/ X7 {: T  b
                        else5 j$ W% E" c/ [* F5 L
                                @.Destination := assignLObj[1,row];0 U; E: E9 b' o# `; \
                        end;                       
! c4 z2 @5 W7 J/ L                        newDirection(@);
* A% n7 x" m$ n/ h. j* ~9 z+ c9 h                        @.HasOrder := true;
3 ^3 _) `8 I9 C+ F' u! k; W1 Y- v. R                end;
" K' c: F9 g! r: y8 @        end;  Q+ l$ ?, g: O, C# E( Y
end;        -- of the method
9 R: ~& u2 p8 J; Q
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 + m( i% {6 o) ]( o+ ]$ B
) ]5 j) {8 q$ X9 V
这是AGV_putin中arrive的method。
7 F, ~$ z$ w0 T+ \  H- _
7 k; G- H1 X- T1 ?8 r当到达物料速度越高时,这个报警更多,
' c" _- W# }# w1 e0 V8 F0 y可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
% k8 T! M: \1 I, _+ r3 W! D8 I程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?& x0 ~* _0 J' @' ?2 I

0 X$ \' b: K( n" w% W' c* j( ?另外一个小建议,就是move,所有的move都可以这样& k& [2 P! D; T
if not move() then debug end9 M7 s. U! d# k& U
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
- l8 r  k( ]  o6 bplant simulation中的free libraries有AGV模板,
( {  }( }- }6 A6 _1 r' `% \, ^) u里面也有案例。/ m, G* k* x. R: N4 m0 F+ M6 ?0 O
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
% x, v! J3 y9 J5 i. I  L& R$ n, h; I: ~1 ^& g" t9 T
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
, M4 X( [: b; [5 F4 W! j( C! H( }: I5 n* |' ~! l
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
- Y- U3 E# Z3 _' m4 i6 Z这是AGV_putin中arrive的method。
" Y, X5 v+ B/ Y9 P- \3 n% h0 P* s2 b4 [" ~1 t
当到达物料速度越高时,这个报警更多,

% L" K+ _6 @  j另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-29 01:21 , Processed in 0.016634 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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