设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6523|回复: 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 ~8 G: I% G# o# |# t*/; L. I: X0 g- p, d
is
) ~) U: t( g  m& m- N2 F- r9 N        part, GlobalDistObj, assignLObj:object;row,Lan:integer;* T$ l) S7 j, @9 v9 C/ F
do. G% N+ o+ M; e+ J# B5 Q: w7 `, j% i
        Lan := rootfolder.Internal.Tools.AOLlanguage;. u7 n0 \) F7 N' J6 O5 b" V( L8 K
        if current = @.Destination -- else return! F9 w6 n8 e$ d7 `+ ]3 \" N: d, I
        then3 Z% v# q: l6 ?" ?! ~3 ~+ [6 K
                @.Destination := void;
+ T  J9 C2 x# o$ `                if @.occupied then
( v: c" e: z7 K% _4 Q                        part := @.cont;* w+ d7 i/ }& i( C- H, N. F/ `
                        @.transpOrder := void;
) R2 |0 ~) V; f# z                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
$ g% \$ r- t: o3 T                                @,root.eventcontroller.simTime);* F( ^1 S- B' e- g/ n
                        @.HasOrder := false;3 p5 |7 D  ^$ I" j/ v$ A: A
                        @.DrivingHome := true;
1 d2 r+ [2 `  o( l6 W                        rgManager.tryToStartTransOrder;
: W4 y8 y' Z2 h! O% q4 y                        if @.Destination = void
/ W0 E5 V8 ?# H8 _9 h+ r' l                        then -- no transport order for vehicle @, B& k  h) s+ p5 V
                                @.Destination :=# A. ]1 @; |- v/ s: b; n
                                rgManager.nearestFreeStation(@,track.~);
3 v/ e0 V0 L6 ]' Y9 P; O                                newDirection(@);   1 @; E1 k3 G! @
                                if @.Destination /= void then# g$ C3 K9 v6 ?  E" s, `; D3 o+ X
                                        @.Destination.NumReservation :=: x- D; V& z% }- w% k
                                        @.Destination.NumReservation + 1;" @8 T! a: L3 S5 q. Y. ?4 x
                                end;, `$ L& U: O- V2 n  R9 X
                                @.CurrIcon := "drivingHome";% i) k* N8 I0 C; ]$ u- O! i2 V% r
                                @.DrivingHome := true;' V- V* J& i' s7 T% B0 c
                        end;
6 K) W2 @( G3 B                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
. @$ m' D# N" b+ E) X                        part := @.transpOrder;
; O+ H! p: F! y/ }/ ^                        part.move(@);-- load part
5 Z/ W& A. Q: V5 ]                        @.CurrIcon := "load";/ \. j2 Q9 ?9 Y  S% A
                        GlobalDistObj := part.globDestination;; d0 Q/ R8 E5 N- _& @6 P5 ?( v
                        assignLObj := rgmanager.rgAssignL;& C% m9 D% ^! x% f/ [
                        row := assignLObj.getRowNo(GlobalDistObj);
2 l* T+ s$ d; v; W& {) O; _3 `, P                        if Row = -1 then -- since 701 {0 l: t- \! c2 T. t5 A
                                if lan=1 then
, Q/ i- k1 u& |/ Z8 _; @                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
. @, f7 F; l! {! J; k                                                to_str("in der Andockstation: \"",?.~.name,"\""));
8 y* J) t1 Y- S' Y7 v9 Q                                else
1 [5 u+ L$ u8 V                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),9 }" ?/ u" i. b( J3 k
                                                to_str("in docking station: \"",?.~.name,"\""));                                & l3 |" M: _( ^7 I
                                end;$ G3 S5 s, H5 o2 l* H
                        else+ G; w) s% K7 b5 [6 K; D/ T" _
                                @.Destination := assignLObj[1,row];
" X+ Y; p  }2 j4 [                        end;                       
' u3 q0 z+ T4 _5 V                        newDirection(@);4 \- h0 X2 N- d1 T8 a
                        @.HasOrder := true;, y- e1 P4 e: F
                end;
  |3 |: A" j9 M/ _& p: p; |! A        end;6 k8 v8 q9 f% b- v+ t2 w
end;        -- of the method6 R, {* ~0 C8 I3 q6 Q/ p
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 0 o2 m$ |% W/ S5 w0 J& {) j$ t
2 h& J! u6 x! M5 ~
这是AGV_putin中arrive的method。1 j& j7 s7 s8 T4 O
) X4 O" b; F- ^8 ^' `
当到达物料速度越高时,这个报警更多,
& q9 J9 a$ V0 |可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。5 e& R# o& p( [9 |8 q0 ^% e
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
9 k6 L) n( n. S/ v. q& d4 V( v  z* ^# _; _/ l' V9 l4 V. n
另外一个小建议,就是move,所有的move都可以这样. j/ X1 {3 D( T/ Q
if not move() then debug end
, t& q( n5 ]2 N% B2 Z这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。3 `4 [' o; M$ {6 s2 [4 _
plant simulation中的free libraries有AGV模板,  G% w9 U: z  ^
里面也有案例。
: W) L7 c2 s% e2 s我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。/ P! e0 g- |& q: @0 r; G% L
* [3 ^  X- n7 W+ }
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
/ U" l0 X* C( [6 ]+ B+ a/ [9 T* \1 @
( h/ e: ~4 e& A. a$ g- [& B那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 6 P( ?: H  h6 [6 ^6 k7 S
这是AGV_putin中arrive的method。
4 R; B9 K% o0 z1 p& s( |- N" }. l( I3 ?9 d  q3 B
当到达物料速度越高时,这个报警更多,

- v9 W- U/ C% W3 t) Z! s7 B& A+ M另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-10 18:14 , Processed in 0.023288 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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