设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10088|回复: 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'
8 C2 e% U6 O1 Q1 d8 m3 l  u*/5 [) l( ^% l* m6 j# d( I
is
8 n  F+ K: T! W4 ~        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
6 i: [7 r  @  x) |5 i% Ddo
9 u0 o# d" K/ y+ F        Lan := rootfolder.Internal.Tools.AOLlanguage;
! |! D, {2 S1 V! C; v        if current = @.Destination -- else return
& E$ o3 S, f. q0 p# N/ z) f+ H$ h        then! w6 f/ k* h8 a' p) ~. l: y' B2 S
                @.Destination := void;
. ]& F! a/ v% I, n8 ?. y                if @.occupied then  d) h& O+ h& ^* V: X2 @7 w
                        part := @.cont;& K0 `# L/ Y4 m' E/ z
                        @.transpOrder := void;2 Z1 N1 o- K6 a5 |# q1 V' ?
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
$ x2 V2 a! @! J8 ?+ }                                @,root.eventcontroller.simTime);2 s0 K1 d% P  ~
                        @.HasOrder := false;
+ B6 W$ |- d& L' Y                        @.DrivingHome := true;9 h* m: I/ c0 N7 b$ l  s
                        rgManager.tryToStartTransOrder;
1 \/ G4 j! d5 L) @2 V                        if @.Destination = void
0 \; y$ b+ l4 l; E1 X                        then -- no transport order for vehicle @9 v% I: }: T# J( f3 V
                                @.Destination :=4 r3 Z: E& N5 b) n
                                rgManager.nearestFreeStation(@,track.~);
1 J' L* n! z3 T                                newDirection(@);   
* C: W) G( v% \, ^. i$ [# u2 J                                if @.Destination /= void then4 \3 M6 b2 c; L
                                        @.Destination.NumReservation :=
6 |9 P# A/ d0 k1 V, O( V                                        @.Destination.NumReservation + 1;7 v5 X! T# J" R0 R8 Y
                                end;
( s2 s0 Q. e4 f4 i0 I: k4 ?, p! `1 C                                @.CurrIcon := "drivingHome";4 w$ u" D- h- l: Y1 s1 I) Z
                                @.DrivingHome := true;% z: A& e1 [2 m9 \- g8 A  {
                        end;
& G8 ^, ^# G/ b& w                else -- the vehicle @ is empty, both vehicle and part are in the same dock station$ s& @7 F/ `" M+ c$ X
                        part := @.transpOrder;2 u2 t! @) n7 c9 g
                        part.move(@);-- load part1 m9 ^, g, i! r8 Q& O
                        @.CurrIcon := "load";' T9 l' h% b8 ^/ \
                        GlobalDistObj := part.globDestination;
# U. n% ?9 ~" E0 V- Y                        assignLObj := rgmanager.rgAssignL;% B: o0 U( d4 m& V$ i2 d% G
                        row := assignLObj.getRowNo(GlobalDistObj);
) H$ u9 i6 u8 K$ \; z- g3 v                        if Row = -1 then -- since 704 |$ h; j' A6 M) v
                                if lan=1 then
* h1 v7 y. l0 D                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),: X* x7 r& x6 F) A" N1 S& g& {5 }
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
. @% G% [9 @7 t- D& N- U& S                                else/ F% v+ U2 w8 T  h
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),8 {& A: M5 Z- T' x9 B
                                                to_str("in docking station: \"",?.~.name,"\""));                               
7 ]/ w% `; G  i% M                                end;
9 G6 H8 {5 ?* B" q! h: y                        else
) |! l/ k, W/ ~" L! T                                @.Destination := assignLObj[1,row];
# l4 D, f- K! z4 @2 d                        end;                        & l3 w; ?$ R# f4 B# H& C! z5 \4 i
                        newDirection(@);
  P! ?& S6 W9 l4 g1 h7 m% X                        @.HasOrder := true;$ J: L' J3 Q2 S5 S. K
                end;2 k" o3 ^  }: K* K3 X# i" A
        end;- ]* V- n* k! ^9 c; d# G# C* F
end;        -- of the method
* R$ s) N# H% |: G/ e. {
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 % s4 `5 h5 n9 ~: J  h
7 p3 {6 L5 w  u9 v
这是AGV_putin中arrive的method。
$ _% x- ^' ^* O! X$ P$ Z0 O
" C; y  [8 v8 X" [- x. t7 D当到达物料速度越高时,这个报警更多,0 v+ C# T; m: I1 L3 S
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
8 j, A& Y5 _* w0 j程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
4 m- |1 G- J9 ~( o& t0 ]# O% L# e' g$ a* c! U( q" `: u+ o
另外一个小建议,就是move,所有的move都可以这样" ~3 K% X# D9 U/ X, y6 ~2 C- h
if not move() then debug end( S8 H$ D; u  G2 v  r! z
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。5 E; a, o# O, W. V. H" o
plant simulation中的free libraries有AGV模板,
2 o( p5 L$ o' |6 n' g里面也有案例。" S% c* p" Z; R& P! i
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。1 j4 n1 B8 x/ w( X( F

8 ^  I* f0 _' \# ]2 m1 ^我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 ! q0 T/ m' M9 _7 I# \

. T+ C5 }) o; N. E4 V% W那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 2 C& J2 L6 y* R4 K$ X  O
这是AGV_putin中arrive的method。
: F* e; j1 X8 m% j3 T
0 ^5 b+ J- i6 X6 w9 N当到达物料速度越高时,这个报警更多,
  w! N  N1 w+ {' Q, J- n  _, U
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-9-12 16:32 , Processed in 0.021953 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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