设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7728|回复: 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'
3 f. m% M. C5 K$ \3 n/ Y*/
, l0 n7 O3 E5 c  ~" t, zis
  ^$ `: l, Q+ t) R* C        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
, B" Z3 u0 a5 |do
) j' i2 b6 b, P* \3 ?        Lan := rootfolder.Internal.Tools.AOLlanguage;
$ w) I% G9 F$ O' q6 p* l        if current = @.Destination -- else return" m) o7 V2 W4 W  f. h9 k
        then
5 Z! Y) g& Z# V                @.Destination := void;
" W, r9 B1 W, u" O0 _; V) U                if @.occupied then
/ X1 u5 D$ x; {$ u+ \! a                        part := @.cont;
. P! h, t# p0 }) v2 Q                        @.transpOrder := void;, P7 H' ?. F5 H
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
# D( w3 R! c# P6 N/ h                                @,root.eventcontroller.simTime);
& ~7 W1 @- w, F* U$ Y                        @.HasOrder := false;' B0 k# H3 P; l
                        @.DrivingHome := true;
" Y  M6 T& R1 U                        rgManager.tryToStartTransOrder;
* `( C% l1 B9 e+ \% q                        if @.Destination = void
) x% ~8 L8 Y4 N. P; h                        then -- no transport order for vehicle @: d  I4 u4 u4 s! ~( p& U$ A
                                @.Destination :=
% M* o, m; {4 O8 R+ l                                rgManager.nearestFreeStation(@,track.~);
, m$ p5 b& G% x# \7 @$ ]                                newDirection(@);   ( x! K, Y- \1 |: u" [( f4 Z( @' {
                                if @.Destination /= void then
* _& X2 u, Y' o                                        @.Destination.NumReservation :=! z5 _( k7 g- w/ P# Z+ N0 A
                                        @.Destination.NumReservation + 1;
/ L, h, O" F% J                                end;5 S  k! C5 L/ N4 H7 C6 D  \
                                @.CurrIcon := "drivingHome";! @+ j) R2 K0 J3 M/ _( S1 u8 J: ?
                                @.DrivingHome := true;% I8 b: ]1 [8 H- A7 Z' e5 D( W
                        end;
. }1 L( z" K6 [+ }4 H                else -- the vehicle @ is empty, both vehicle and part are in the same dock station1 V7 S4 D% ], K; u
                        part := @.transpOrder;7 H+ ~/ _- u# W
                        part.move(@);-- load part
& `5 Z3 w4 ?* h$ C                        @.CurrIcon := "load";
8 x/ V1 ?. x. D1 b7 i                        GlobalDistObj := part.globDestination;( j8 p# d4 `- H" V) O% O
                        assignLObj := rgmanager.rgAssignL;
3 E* o+ C( _3 J# c                        row := assignLObj.getRowNo(GlobalDistObj);- l+ @  I: P1 Y+ J5 |: k! a
                        if Row = -1 then -- since 70  I  ?  ?% u+ }9 R- l9 i
                                if lan=1 then, d/ S7 z) b8 Z- U, N3 N& V
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
' o  p: P7 f( s4 F2 Q                                                to_str("in der Andockstation: \"",?.~.name,"\""));: T8 ], W* r0 \
                                else
0 Q9 I" `- N6 G) [) q. \                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
; }2 `! c/ O/ o                                                to_str("in docking station: \"",?.~.name,"\""));                                ' I4 _2 G- Y) r3 l  h
                                end;
7 U3 y  ~, q3 b; e& ^                        else7 e- ^8 |! k7 I
                                @.Destination := assignLObj[1,row];* P0 d' x' N1 B4 @6 X+ x
                        end;                       
* e1 H- }/ f6 E1 }1 R                        newDirection(@);
# n4 g3 ~5 _7 ^6 K( g- j                        @.HasOrder := true;" a% g3 G/ h' G" A0 L% b) d
                end;
& r3 Q0 f/ Q. J! z( N! q3 }0 C        end;3 }5 Z9 }. T8 V$ B, Q& c
end;        -- of the method
6 e# ]4 V! o+ o& @1 y
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
1 M1 x  R$ n& e( @+ N- w! T% k3 O. z8 A! c& z9 ^% W
这是AGV_putin中arrive的method。% \* e; ?8 x! u5 p; z1 B" h

7 m1 p7 @/ K: t当到达物料速度越高时,这个报警更多,
  C9 W! `5 R% j6 [9 T# V可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
3 v- j( C/ d- o) a* n( U/ P程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?9 f2 l: ?% W; R; ~& E$ y- o
+ H" }# _# U" L# _# y- Y
另外一个小建议,就是move,所有的move都可以这样+ m' b* [* l* o1 v4 @- j9 C
if not move() then debug end+ i9 l% M- \$ l9 x# \) |
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。" \# }' a& ]4 z
plant simulation中的free libraries有AGV模板,+ {" j1 n1 K1 W7 Z7 \' |4 l
里面也有案例。0 I, d8 p- k, l; J5 ?/ u+ F
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
* R+ W9 e! A" I# e1 D  ?1 m5 m( a  J# n9 m
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
$ O" W- k( s* ]( ]$ A' Y& L
  l$ J! D1 d( E/ l% S1 V那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 " r# T% Y1 _6 ]
这是AGV_putin中arrive的method。
4 q" V$ K$ p  z1 @% V: M' d( }/ K; u6 b7 ]* d$ k% T2 i
当到达物料速度越高时,这个报警更多,

0 T% G  B) b! V另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-26 10:01 , Processed in 0.020005 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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