设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5168|回复: 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'
( ?/ P: b, S  o! `*/
8 L: R$ {: O2 y6 ~) nis
/ Y! K* ?5 f7 E& C# Y6 M# }, Z        part, GlobalDistObj, assignLObj:object;row,Lan:integer;* e5 Q8 o0 V8 S" l8 ]
do( H4 i1 t! G; s
        Lan := rootfolder.Internal.Tools.AOLlanguage;
0 a: Z2 K2 B! ~' l' E# Z        if current = @.Destination -- else return& @& J1 D# b7 Q; k' q( P" T
        then
, F9 }# x. I, z' b                @.Destination := void;' Q/ \" ^1 H" v- c  g
                if @.occupied then- A# m6 b/ m3 d
                        part := @.cont;$ A1 X9 k' T) H+ n+ b; U% T
                        @.transpOrder := void;
' X  {; _/ F7 M3 k. m' y% k6 [1 d2 f                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
! ~0 h$ Q2 M& {8 A, L                                @,root.eventcontroller.simTime);
( T( W! W$ \. o  u" t                        @.HasOrder := false;
. K7 J( g& [, u; _  ]! o, O                        @.DrivingHome := true;
! f9 w/ T$ E; M! b2 ^                        rgManager.tryToStartTransOrder;4 P8 u! j% L" E0 C3 H+ C
                        if @.Destination = void1 }- e, ]9 D  M+ T3 ~
                        then -- no transport order for vehicle @2 n/ s4 i& i/ N1 F6 s% X
                                @.Destination :=  r* D/ M1 S( X$ T
                                rgManager.nearestFreeStation(@,track.~);
1 \& r5 R3 i. s% ]/ w5 U3 c                                newDirection(@);   
7 R& o, m: p8 D. L; d                                if @.Destination /= void then
: O2 ~6 I) M$ T, f* |' B" S0 P                                        @.Destination.NumReservation :=! K, T' v8 D3 |0 a, e
                                        @.Destination.NumReservation + 1;3 m6 @1 b2 x: y# V, c( ^2 }
                                end;/ U# p* D6 z6 I$ v
                                @.CurrIcon := "drivingHome";% o/ W) H* Y# Z! S8 @
                                @.DrivingHome := true;
& s. u9 P8 ~$ @6 A$ C                        end;
) ?5 w$ S# m+ g+ }                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
& }7 Q# @/ ]* e+ Z. t                        part := @.transpOrder;4 ?7 n4 ?1 k; i$ A4 L2 c
                        part.move(@);-- load part7 r, W6 u7 _  a/ L1 I
                        @.CurrIcon := "load";
& N! D  [5 A9 H2 d1 M                        GlobalDistObj := part.globDestination;5 y. [0 ]$ x. I. E- ^6 x8 w% L' O
                        assignLObj := rgmanager.rgAssignL;: V' t9 @9 U7 S# u
                        row := assignLObj.getRowNo(GlobalDistObj);
3 L! z: u) O8 A( c: Q                        if Row = -1 then -- since 70' u) G0 l( ]- ]3 Z) Z2 e1 R
                                if lan=1 then
( W; {& e- P) j  O1 w                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),: O8 I! }, k. J8 n5 |
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
/ U. p" z. V4 ]; M# J                                else
$ s/ t6 d7 ?) V& h. O                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
8 z7 Y3 g0 n7 o+ v6 U7 G; D                                                to_str("in docking station: \"",?.~.name,"\""));                               
, J: S9 Z% H8 y9 n. E4 h% p. b                                end;& p- A( L- W% K/ Y3 K- t! c3 U6 X7 G
                        else
, x! j' W% C' \) a% ?                                @.Destination := assignLObj[1,row];' r% R. R& j5 y; c
                        end;                       
  P6 c- H+ E6 I& H6 W                        newDirection(@);/ M* h6 X6 H- E9 H( o2 I* d: ?5 y
                        @.HasOrder := true;5 d8 M6 \, |! \* j4 J: f
                end;- k# O- z& e4 e/ W& ]9 g  [) T
        end;2 v2 j  f" u. J6 ]0 f5 m
end;        -- of the method
5 _' E/ g, `. n# J0 e
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
1 @* `4 ]( s4 @. P1 b. p2 o4 r9 u  b$ R& P, P
这是AGV_putin中arrive的method。$ `) X, A- X( u$ `; @# I3 a

% n# S3 o7 W# {# @' s/ p6 ]# ~当到达物料速度越高时,这个报警更多,
% y0 V* x2 o1 A; t* w! O3 i( R可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。! J: j5 e: a" ?3 K
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?+ J) u0 X0 i6 z) B2 \7 ]

1 T  ^; I/ h7 t* a4 b- w6 E另外一个小建议,就是move,所有的move都可以这样
9 H# T- a* C* Y% M1 ~' X1 R; Fif not move() then debug end
# U8 x8 j1 n! P( ^8 C- E这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
" J$ r# R  D% H7 |4 Gplant simulation中的free libraries有AGV模板,
7 L0 ]3 I. M( x9 x9 c: c里面也有案例。
+ ]; D# a' A) b  C# Y6 B我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。$ w, B* U# p- C' x& b+ q8 `
( c, a% w2 |! s+ T5 w
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 3 M# ?, J& @0 {" H. }) h# p
3 ?9 y) l& R6 o% b& q, ?! n( w- }
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 6 Z* D3 q" ^" a  K
这是AGV_putin中arrive的method。
" H6 y( e* a' e$ D6 [) q/ y- m/ W( ?1 _1 a; {. \
当到达物料速度越高时,这个报警更多,
: D) z- M0 t8 [, a% u" a, M7 L2 ]
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-10-17 12:29 , Processed in 0.018471 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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