设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4617|回复: 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'
( q! S: \. h" ]*/
' A# s8 f0 `5 K7 \' A$ \is4 J) S% Q* v2 C9 [
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
) v4 Y) M0 Y. T: z2 L* U4 Qdo
. q. G" x+ K0 Q' n7 Z  T        Lan := rootfolder.Internal.Tools.AOLlanguage;
2 F' ]( v- {% Q8 l  q( {! \5 E        if current = @.Destination -- else return
' p$ Y1 O% S9 P, @) r        then
+ A1 w( j9 \0 w7 A$ o* b+ {5 l                @.Destination := void;
! @) r! d  O" y                if @.occupied then1 \- Y' C( v6 d3 g
                        part := @.cont;% @+ |6 \( I$ L" Y6 p: R6 ^- B
                        @.transpOrder := void;( u! V9 F3 c, W# F. o
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,$ d8 T2 }5 I3 O; b" f8 W$ x
                                @,root.eventcontroller.simTime);/ I) i3 J' r7 P0 _) C
                        @.HasOrder := false;
% u) D7 Q- b7 @  S                        @.DrivingHome := true;
+ |1 i$ Z: w$ E( i! ]* g7 C! y                        rgManager.tryToStartTransOrder;3 X- X& p4 P5 S6 L
                        if @.Destination = void& F8 @5 E8 J" }! I9 P' B
                        then -- no transport order for vehicle @
# U  t9 B1 f# Z2 k+ S5 i                                @.Destination :=3 ^7 Y- z6 d3 }- W& v& ], h
                                rgManager.nearestFreeStation(@,track.~);
5 u& a8 Q! G# P7 [                                newDirection(@);   & b6 |$ ^5 J# O' T
                                if @.Destination /= void then
3 }- N& |8 @9 w. o( X                                        @.Destination.NumReservation :=. y) ]( e7 V% Q8 T
                                        @.Destination.NumReservation + 1;+ u6 n! U' H9 L- |  {
                                end;+ S  u$ ~" H  Z, v7 z& k7 k
                                @.CurrIcon := "drivingHome";
9 y1 `1 v8 k4 M; l; _: ]! _8 F( H                                @.DrivingHome := true;
) J' k: V  V( A  K                        end;4 {5 k$ [# X( t- C
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
7 Q; }& M& R2 H) }) A$ P& X6 Z3 i                        part := @.transpOrder;
% N" Q1 I! L9 L& k3 G                        part.move(@);-- load part5 l& y( R* H* k0 @0 l) A5 k
                        @.CurrIcon := "load";
1 V  V9 x1 x) f9 Y" z! v                        GlobalDistObj := part.globDestination;! a2 t. u/ [( Q+ r3 t
                        assignLObj := rgmanager.rgAssignL;0 _( {, a3 F, u7 R( X  s) m6 V4 K
                        row := assignLObj.getRowNo(GlobalDistObj);* B& V; L6 s' B5 P4 \/ t3 \8 ]
                        if Row = -1 then -- since 70+ Q# K% N8 Y7 h" b
                                if lan=1 then
% P* t. L. A+ |7 }/ S) H: q: u                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),: U! t, c- C3 V! u' `4 Z; Q. w% {
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
2 `+ N- P3 u: O) f* ?                                else. x( i8 h% j% ]& x3 i# j8 X
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),& n, i- l  e% h+ S* W2 d6 l$ Q6 W7 J
                                                to_str("in docking station: \"",?.~.name,"\""));                               
" K) F8 @, K$ Z7 y                                end;' y/ i4 a7 A# U  Z+ x3 l2 u
                        else0 `% Q/ Q" [1 {  K; ?) l# [
                                @.Destination := assignLObj[1,row];
1 ?, |1 ~8 r$ A                        end;                       
% {. Y! Q& Z' S1 a6 c( u* y" W* I                        newDirection(@);( Y/ G2 _+ ~2 X" ]
                        @.HasOrder := true;) v! E9 x: F7 Z
                end;* n  W4 O5 e# S& Y2 r
        end;4 j; O3 n' k& ~1 r
end;        -- of the method! R" \- m4 k: K2 f+ o7 Y% i9 |
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 6 x: b3 s+ [; G* p6 u. ]
( q! z( `. \; P" E; K1 S8 t
这是AGV_putin中arrive的method。
! H9 c! G+ ^* ]% M* p5 J8 H) q: ~) ^. A) m9 x+ B/ y. y
当到达物料速度越高时,这个报警更多,
8 L. ~. _! p  n* D+ i可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。' `4 D5 e; X* ]
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?. H8 A4 [0 ?1 t6 n, \
: ]5 d: Y. P2 ]. I) J9 i$ R0 w8 ]
另外一个小建议,就是move,所有的move都可以这样
/ X: l* P5 g5 d* P( T* ~if not move() then debug end) V+ c' @7 J2 H- Y
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
8 M+ k3 |8 M6 Y6 s+ V. Mplant simulation中的free libraries有AGV模板,* G  Y+ e5 u/ R0 g: w0 E" J4 S4 l
里面也有案例。5 w$ N2 A6 K9 l& `: r
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
' {, Y. p5 E% `3 ?! l7 r' p7 T* d: O
. H- J6 }$ H! X8 [我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 4 Z) g2 U2 ?2 V  c1 ?, h

; @( W) D7 Q+ Y8 B: o( g那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 1 R% q6 M- k0 i( b
这是AGV_putin中arrive的method。" Q! }4 o1 @6 D& D4 j

# p; g! q$ Y/ q1 X0 C# q0 y当到达物料速度越高时,这个报警更多,

$ I0 h* r) F- c/ J' A6 S& {另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-7-10 02:09 , Processed in 0.017524 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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