设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5561|回复: 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'
5 R% M$ k, J+ }6 H" {. f*/
; k3 o4 W  W+ q; Iis
' b$ E6 r8 M" ?        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
% B5 o5 T4 x1 P& z8 f) Y/ Y8 W# A6 bdo
4 P  g+ j+ |* q, ~; N; J- C        Lan := rootfolder.Internal.Tools.AOLlanguage;
6 v7 {$ K) H+ y: H! h        if current = @.Destination -- else return
& h& l& N: P7 T9 \6 Z        then
3 u( ^/ R+ x4 m0 m; I2 h                @.Destination := void;; c6 d, M" U& Q. a
                if @.occupied then
7 I* w! u! a% \6 I0 ?9 i                        part := @.cont;( A# B/ }* g! w
                        @.transpOrder := void;
9 ^- \$ W8 z- e                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,1 a7 W1 N1 V& Z5 W9 m
                                @,root.eventcontroller.simTime);! Y9 N+ [) \* P; F3 T# t
                        @.HasOrder := false;
+ E4 w9 J/ L5 H7 ~0 H& b& y                        @.DrivingHome := true;4 E' q$ P! Y. i4 l* t3 f$ `* U( t5 Q
                        rgManager.tryToStartTransOrder;) S7 q2 c; \5 T9 S1 w( H+ u
                        if @.Destination = void
; s; x* J+ V2 V0 `3 `1 r; r  X                        then -- no transport order for vehicle @2 E0 F, R, F( ]: O' i9 B  S
                                @.Destination :=/ ~1 g/ O4 O5 X1 A9 s
                                rgManager.nearestFreeStation(@,track.~);
9 b( b1 h! Q; n6 h0 a                                newDirection(@);   & B% ^4 K$ J5 L9 s' W+ l
                                if @.Destination /= void then8 d* l" t. }' t! z: Q4 g, ]; r
                                        @.Destination.NumReservation :=
" v6 X) n! r% z                                        @.Destination.NumReservation + 1;
2 Y4 z9 \$ K7 U                                end;
) i% p9 F1 J) }$ t* G" R  k                                @.CurrIcon := "drivingHome";7 b1 u: g" H+ s7 D* g' K" X( H. f
                                @.DrivingHome := true;1 W  M! J# J9 a, S0 q
                        end;$ C. h; J/ w: X
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
# X; k. r5 w* \" u9 F4 ]                        part := @.transpOrder;
# v6 B% l1 Z! k3 h                        part.move(@);-- load part
2 o( `6 s% ]: I* f                        @.CurrIcon := "load";
* ^. G' R- Y6 Z. r                        GlobalDistObj := part.globDestination;( R' x  i2 O, H6 Y
                        assignLObj := rgmanager.rgAssignL;
0 {2 z. u) @5 K' z  S' c& m' X                        row := assignLObj.getRowNo(GlobalDistObj);
7 s+ C- t+ E4 i/ a: E                        if Row = -1 then -- since 70* A- j3 \8 s* |9 o
                                if lan=1 then
. Y9 ?( F/ m8 z                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\"")," ~! v% l/ V% k" A/ k' s* e' I6 R7 B/ q
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
2 R/ {3 _6 F+ L" y1 `                                else# B8 _5 P! h5 W4 }$ H  z
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
- U1 ?0 u: y/ M4 V$ W9 j+ [  m- t5 Q/ b' K                                                to_str("in docking station: \"",?.~.name,"\""));                               
$ L, i0 e' r; b, s                                end;
2 R2 e  ~: W* t- v- p% E                        else1 v4 r6 ?$ H* g- Y% j/ k+ f$ k
                                @.Destination := assignLObj[1,row];# q* x0 v. R" I% {) T
                        end;                       
! n' C, o9 H6 D% i7 ^1 @                        newDirection(@);# V2 H0 M; @3 M; a9 q
                        @.HasOrder := true;
; v0 r* E8 _0 I: {: s7 F1 n! f                end;' T- \7 |( J( ]% N
        end;8 F; N5 b  u, y6 x6 i! {( w
end;        -- of the method7 l9 K8 [& W; E+ i/ n0 C; ?
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 " m7 k& p3 u* A
" F, u" V* L6 V4 }) x3 T
这是AGV_putin中arrive的method。) e3 E6 ~3 f* X: E

/ q; h; o2 ?- c9 ~% y: K当到达物料速度越高时,这个报警更多,
! u6 [4 f$ W1 Y0 f; }0 b. J1 g可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。4 k7 T% p3 R* o
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
8 c1 f/ A$ w- _* i, l5 I# S: [* k7 D9 ?' w9 A2 A
另外一个小建议,就是move,所有的move都可以这样7 W: ~" G3 P- `; q! n
if not move() then debug end5 g: T& k4 T2 ?: x3 p
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。1 q* K- ]0 C+ ~$ ^
plant simulation中的free libraries有AGV模板,3 @4 C2 p. K0 T5 ~, Q3 ]" s8 Q
里面也有案例。3 h! m- A; |; Z3 U0 w8 q+ j
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。: g4 \' t5 a% C- m: v
3 Y; C; f+ V) ^1 U4 ?( C) E
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 3 l$ ^6 A, O0 n$ j$ ]! l
6 B* _, g4 x' b
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 : q' R! ^6 d, {1 ~0 u# C4 U
这是AGV_putin中arrive的method。
9 Y) r+ y9 E: m8 P, f  T6 H6 c( C! \3 u" o2 ~' ?/ f
当到达物料速度越高时,这个报警更多,

. t' ?/ q- h7 E4 D  T另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-12-6 00:42 , Processed in 5.462947 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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