设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6451|回复: 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'6 w; w' Z% \$ P5 L: P" @
*/
, R! K" c1 d; w% \is% y  z8 n& ]; q/ |
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
, h$ ^! `' G' \1 ?/ e8 g8 I7 w; Cdo3 q% ]3 P7 b/ z5 \9 z% d
        Lan := rootfolder.Internal.Tools.AOLlanguage;
4 w9 z+ t; c8 G, o        if current = @.Destination -- else return3 e0 O: J0 q+ T5 l  j$ m  i
        then* \" N4 Q; S& p7 Y1 V/ N1 X: J$ x9 I# D- c
                @.Destination := void;3 j; Y% n) S7 R7 f9 W! S
                if @.occupied then+ w5 |9 R% m- p2 W
                        part := @.cont;, C3 |, |. a7 L6 C9 }2 m
                        @.transpOrder := void;, i0 H, H( h  F
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
' _  Y+ c+ ~! v6 n& k. \                                @,root.eventcontroller.simTime);: D' O/ m4 x0 O: s
                        @.HasOrder := false;6 S6 z9 \/ F- w3 g5 Y# T' i
                        @.DrivingHome := true;
5 M+ o% z- }% B. \                        rgManager.tryToStartTransOrder;# `+ J, X; }  `9 P* r. y
                        if @.Destination = void
, A2 ]7 n# X. U                        then -- no transport order for vehicle @) o& A. ^5 W& w9 z
                                @.Destination :=
+ x1 Y9 p" Z) K: V2 D                                rgManager.nearestFreeStation(@,track.~);  f" z3 @! C+ \! W2 C
                                newDirection(@);   ; s( ~; v; f' w3 m( G: G
                                if @.Destination /= void then
2 E4 a) \; [. [; X                                        @.Destination.NumReservation :=
% p+ z0 \% m0 e) D+ d                                        @.Destination.NumReservation + 1;1 h7 n! R& \3 n& [7 j/ k$ s+ @
                                end;- H  _7 F* y) t* _" z! w
                                @.CurrIcon := "drivingHome";
6 O* D4 P2 o* @                                @.DrivingHome := true;
4 F2 R, J( p. ~                        end;
+ C) p, G, n0 ~8 ?                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
6 ~+ u- {/ o, ?- r% k3 q% `                        part := @.transpOrder;
' H: h) n* I  g1 x% J) H                        part.move(@);-- load part) d% s1 {; L3 Z
                        @.CurrIcon := "load";
# F- ?4 T. w4 e3 m/ y  z                        GlobalDistObj := part.globDestination;
0 w2 k$ w% T- p                        assignLObj := rgmanager.rgAssignL;
+ m* Z3 Q3 e$ d% ]                        row := assignLObj.getRowNo(GlobalDistObj);
6 o4 g. G/ Y0 i                        if Row = -1 then -- since 70! k! W- v3 S- x% b" K& z& L! U
                                if lan=1 then( H5 F5 U8 m4 e6 f8 U% k1 r" ^. r
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),2 ~. H, Y. m6 C1 w( L
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
+ B0 E% J- L* [                                else: H, \: }2 d: Z) Y$ |9 l1 N# W
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),6 v* t6 w9 s6 l# [- {* q: v
                                                to_str("in docking station: \"",?.~.name,"\""));                               
6 o" H+ q+ I% I! T$ i$ r                                end;& w, W9 n3 z) }' C# Z
                        else
1 q7 k# a, i5 \- ~                                @.Destination := assignLObj[1,row];
( N) K! i4 G, j  t% _3 h, q. H                        end;                       
4 v) g! o4 z% D                        newDirection(@);
, G) }1 B+ p3 d+ M/ [8 U                        @.HasOrder := true;0 D/ ]/ W  M: y) X/ O; {
                end;
2 ]# F1 M- |. }( X: X' R        end;
" E1 T* w; A8 V8 ?end;        -- of the method7 l% p8 F% N$ B: c
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 & S2 M* x: w3 Y% s! B, N
# m8 @, n6 o+ z& l/ u
这是AGV_putin中arrive的method。
7 L8 E+ r) h# a+ h* p; w2 E( Y6 ^* c! j6 r! u. F
当到达物料速度越高时,这个报警更多,
5 r4 x2 C7 F1 O3 T3 C可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
; r: H% f, o* {5 B( l6 t* K0 L程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?  `. l' k/ S0 I3 @8 D) [4 `
1 W2 e" B/ m. W& u
另外一个小建议,就是move,所有的move都可以这样
, H3 s2 k+ j, ?if not move() then debug end1 p( ?! Z# a& @& ]2 [
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。/ d" ?' _5 a' D' v$ L7 @
plant simulation中的free libraries有AGV模板,
. Q. n& }+ p4 [. Y; @里面也有案例。1 [- `1 Z& y! H& h1 y
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
( J+ v: K$ H/ F7 n& {$ X% @9 W1 f* ^; v2 r
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
2 Z3 _) ~, I1 w' x1 R) O  @/ [
- r0 \$ J8 r4 _- X- b那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
* _0 T$ h3 s) m2 Z6 Q* g这是AGV_putin中arrive的method。
$ F7 y) }9 o/ h# o; r/ D# {/ ~1 q9 \# b5 D' ]+ O2 X
当到达物料速度越高时,这个报警更多,

/ ^& L4 k3 l7 X9 a2 s另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-7 12:09 , Processed in 0.017615 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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