设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8143|回复: 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'
2 b/ i8 i: C* h*/% H( K5 U( R8 J+ \$ c* ]
is$ a, k3 r% E- J% w
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
1 j( e& ]7 U$ x/ Gdo+ d* V, x( X8 Q$ Z1 U  c
        Lan := rootfolder.Internal.Tools.AOLlanguage;
- F/ Y4 `" e+ S! ^        if current = @.Destination -- else return
/ w/ D9 g7 K1 X& K: X6 B        then: G2 t" J3 l7 J5 s
                @.Destination := void;7 i( O$ r; t; s+ g. [: y9 e
                if @.occupied then
6 A! h9 I) y( p: ]7 \                        part := @.cont;
5 E- ?6 e0 o, O: x$ j                        @.transpOrder := void;
1 H/ T9 C) P5 b7 A* {9 c                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
" ]. H0 U5 P/ l0 H) d# C8 b                                @,root.eventcontroller.simTime);
: y. Y% W( d' {* u! S  H( w                        @.HasOrder := false;
! o- T, a" U0 ?  Q7 N8 ], M( [                        @.DrivingHome := true;/ i3 p' C. `. u* G% O' }# n
                        rgManager.tryToStartTransOrder;
$ Q9 Y+ _8 Z8 m0 d6 ]                        if @.Destination = void
3 m8 W- ^" i2 B' r                        then -- no transport order for vehicle @! Z8 v& n; D8 y8 b8 D
                                @.Destination :=3 }, M) f( y* E' N! x
                                rgManager.nearestFreeStation(@,track.~);
, @% n1 D* c" G4 A0 X                                newDirection(@);   / {' x6 g) V9 E& _& d( `& L
                                if @.Destination /= void then
% t/ F8 J: N5 d                                        @.Destination.NumReservation :=/ S4 p$ o+ M  K2 l$ c. \
                                        @.Destination.NumReservation + 1;6 b  N8 k  c/ Z5 C6 ?+ P( R/ X
                                end;
8 a: e! d$ m/ X& B& ~9 h0 }' a) s+ M5 \                                @.CurrIcon := "drivingHome";
9 Y. |% N2 B+ |2 w3 ~, z                                @.DrivingHome := true;8 y0 F. n. Q  @. O
                        end;' T4 p+ q& b( ?$ {
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
' E3 ?, g' y, F( u8 T5 G                        part := @.transpOrder;
' i. n. W$ b- i* W- {7 P* r                        part.move(@);-- load part
6 V' K3 x7 y/ a1 z                        @.CurrIcon := "load";! M0 r# R( }* C; l
                        GlobalDistObj := part.globDestination;) U! H. f; s# Q9 R6 ~
                        assignLObj := rgmanager.rgAssignL;; j) p- ]4 C; W" W# Y" R
                        row := assignLObj.getRowNo(GlobalDistObj);/ a2 q" W. {4 @+ `/ Q* Q7 H
                        if Row = -1 then -- since 70; t8 O" b+ T8 r. Q' @' G
                                if lan=1 then* \5 u% M9 O: B  Z4 r, @
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),& {' ^* G- v. n5 i0 J( ]
                                                to_str("in der Andockstation: \"",?.~.name,"\""));/ Q& z( N& }* }4 x, r
                                else% F1 ~5 v  \) l+ P0 W. b
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),2 l/ f7 X1 S! N' \
                                                to_str("in docking station: \"",?.~.name,"\""));                                , ^+ o; D# @1 q% ~( L" f1 k# r
                                end;/ `# \% m* G) ]$ v0 o6 |% `
                        else* \! d1 a1 H5 `
                                @.Destination := assignLObj[1,row];
# \$ i! i5 v4 _# P" o8 X                        end;                        ) W! x4 }+ C& {4 h0 t
                        newDirection(@);
' e1 |! }& y/ y7 ?% [8 h' A                        @.HasOrder := true;" N1 Z! h9 D+ j
                end;
# a8 r1 Y3 f5 Z+ |2 E' r9 j        end;4 X- d- D8 G; o% R) {
end;        -- of the method  `/ {9 W) _  {: C. P. a. ]
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 , Q! v( @5 F% N
- \4 c8 m; Q1 k5 c( I& j
这是AGV_putin中arrive的method。
0 e0 X# L- m# ^: [
. e0 e. R/ ^6 o+ Q当到达物料速度越高时,这个报警更多,
4 g6 k2 y2 A% }( U) T可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
% n  L# P$ ]$ o9 s0 a0 E& t/ ?程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?$ J  w7 a7 {# L! j
- R) p- A2 }7 J4 y
另外一个小建议,就是move,所有的move都可以这样
3 O( B6 A( K9 ]3 Lif not move() then debug end
* H; S/ S' W7 G0 m4 K" d+ S这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
+ K( ]0 D( C: H) g9 [3 qplant simulation中的free libraries有AGV模板,
0 V4 V2 T( H4 E' S- m4 u8 ~里面也有案例。
5 w+ k2 V1 i$ s$ ~1 a1 M; U4 v& o- A我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
) }, {( v& ~- v6 O) U* U
! q  k; J/ i$ r- r( O& [我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 2 X" p" ]3 g) k7 T: K; g

; J1 Z8 Q; b" \" M那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
! M, B) q  `9 n; @: t* g# K这是AGV_putin中arrive的method。8 X- t9 V% F$ W

. e8 c5 I$ X0 R  e. F当到达物料速度越高时,这个报警更多,
. j2 Z9 h4 X( E1 }9 Q0 ]* }
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-17 02:54 , Processed in 0.029920 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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