设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8858|回复: 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'( W( m$ E5 G4 e2 _: \& C
*/
: J* N3 A- x2 Q, ]& Qis
; V5 m. s6 u# Z, L        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
( S  T/ W! E' [: Z9 @+ pdo; @/ Z5 w; b; A* N! ]
        Lan := rootfolder.Internal.Tools.AOLlanguage;; m0 G9 R' D$ i( w) e
        if current = @.Destination -- else return$ r' i0 ~9 j' c) c/ I' V- t
        then) @3 e- _6 l, H4 [
                @.Destination := void;
( G# r4 _; a* a( H                if @.occupied then
+ W4 h8 A7 J. a3 F) M                        part := @.cont;2 r+ d3 F3 Q4 B1 k4 v" U
                        @.transpOrder := void;* A6 g5 N) s- c/ O) p2 w' x. N5 U1 o
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
3 \3 p. o- n9 u# v3 p+ n2 S; C  o- h                                @,root.eventcontroller.simTime);  |- x' M; G, ]1 M) e; ]1 l
                        @.HasOrder := false;7 a2 V/ x* }! ]( v" {; f3 s* v
                        @.DrivingHome := true;2 T$ v+ }6 @! w& |9 o; O
                        rgManager.tryToStartTransOrder;
8 p/ j1 h$ i; R" ~0 }6 A                        if @.Destination = void
8 d# `' u; j1 ^                        then -- no transport order for vehicle @2 {; B0 v" {- o1 K! S" y4 J
                                @.Destination :=
( Z4 x! D% L5 L                                rgManager.nearestFreeStation(@,track.~);0 ^: o9 a* y5 V  l5 u: l
                                newDirection(@);   5 P+ c  T  q6 s
                                if @.Destination /= void then0 I* q+ V* J! S6 _, Z$ D0 o
                                        @.Destination.NumReservation :=
0 n" H  a9 Q  T; P/ [5 X                                        @.Destination.NumReservation + 1;: A8 d6 g, |4 v/ F. L
                                end;# o) g. {, G$ n- Z# ]% j
                                @.CurrIcon := "drivingHome";; _0 }. _% g7 o* {
                                @.DrivingHome := true;8 V5 ?3 m8 v$ A/ y% H$ h/ n! B" U
                        end;
$ z+ r2 J2 e" t, x2 K- Y                else -- the vehicle @ is empty, both vehicle and part are in the same dock station  ^4 w  S, V7 j) q2 f' G
                        part := @.transpOrder;
3 l" d5 U8 r! \. [# n) y& g                        part.move(@);-- load part  R4 ]" G0 C1 M% s0 j: {
                        @.CurrIcon := "load";
3 `  O) s7 z# ~% a% q. W                        GlobalDistObj := part.globDestination;$ ^; _3 d& y1 K# ~) s
                        assignLObj := rgmanager.rgAssignL;
2 `* L0 H" M8 K; N2 i* ~' R7 r" t                        row := assignLObj.getRowNo(GlobalDistObj);
  B4 n% M  R/ h5 a                        if Row = -1 then -- since 70
4 a- D* I/ _3 B$ `4 {) S                                if lan=1 then
" K4 M& [5 B5 D; T" ?3 |, i                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),4 k) M, T3 q* J7 v& U
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
+ U$ \4 M; k5 f+ [3 _                                else+ ~/ W8 E3 t, v) F$ D
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),; a/ l1 Y% n8 d+ L; D  H
                                                to_str("in docking station: \"",?.~.name,"\""));                               
) d+ j& S# c) G: m* M                                end;
" X7 E' U9 \: t8 g4 L# ^                        else; m9 ^! z6 N3 T/ _" P$ `
                                @.Destination := assignLObj[1,row];
+ g& I+ m: I* s  o$ A7 J7 c) y                        end;                        ) h" t% H2 E3 k, a. c
                        newDirection(@);
' ?& U) m0 P8 ^* K5 Q                        @.HasOrder := true;) ?$ Q2 I7 @" d2 _: }
                end;
. E; l. k# ~2 K3 }6 I' ~8 a$ P- u$ C        end;
( b& k% b6 G& mend;        -- of the method" }9 w7 L; _" E& a
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
- f8 P) Y5 F) I4 N. L
9 h' L" W; X# o) I' c0 J" {( ~+ |这是AGV_putin中arrive的method。' `8 A0 E* v; y) t

0 i$ L" u; \" u( `当到达物料速度越高时,这个报警更多,
/ f# `6 y! s/ H4 `; x0 ?可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。1 D8 w; f0 {  ?. s
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
( ?8 @& T5 U" T- F  e# f
! ?+ c! [# A8 x7 m1 J4 T0 P另外一个小建议,就是move,所有的move都可以这样
: p5 g' ?) m* O. e; D' R" r. Mif not move() then debug end% u9 H5 m* T0 o" M) Y+ e$ C1 I- p
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。" j3 Y- F' e. H2 H7 P! h
plant simulation中的free libraries有AGV模板,
- V2 n, f; z/ T2 b& T: Y  Y! i里面也有案例。
$ I" s% u" I2 ]' u- Z我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。8 a9 B8 g% f# Y5 o+ K7 m
# W7 _9 J6 i6 E9 E
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
! E2 U) R, o& a; _0 ?% o2 Y
: _0 T4 o9 E3 u+ w那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
' u& k# ~! L8 S' W6 [2 T这是AGV_putin中arrive的method。% e6 @* i: a- B  g& O6 W7 h

' |; j1 ]6 w0 P& ]0 m4 F当到达物料速度越高时,这个报警更多,
: J3 o% A2 R2 k2 ?4 L* J2 p
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-30 16:21 , Processed in 0.016524 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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