设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7367|回复: 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'
4 _  r0 P6 k$ R*/
. N+ v) l5 G% [2 Dis3 [% N: j. U& ]0 P+ J
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;/ c4 g4 O) v9 J7 Q0 q; }0 d
do
8 ^: ^) n% z" L: o        Lan := rootfolder.Internal.Tools.AOLlanguage;
1 X2 P0 X/ y# W; U$ s; S8 @6 t        if current = @.Destination -- else return: S# N" ]1 D8 X8 X* R& |
        then
  }! m3 U" p- q" k  j: p& q* Q                @.Destination := void;5 ~1 |2 \! v, ?9 v; [1 k1 b, I
                if @.occupied then3 w0 h* ^1 H3 @4 \6 U4 C8 Q' j8 f
                        part := @.cont;
3 N- q8 t6 ^* Q+ R/ Y3 T0 ~& a7 z                        @.transpOrder := void;! I! m! h! x  c9 g0 y5 p* }% I
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
  f5 ^3 ^1 @$ |0 m; v                                @,root.eventcontroller.simTime);
* g$ W$ k2 V- ]$ Z                        @.HasOrder := false;( C/ C2 b5 _( i* }6 A, V7 P+ I2 Q2 B' F
                        @.DrivingHome := true;8 L* B9 y$ D# J( r6 o8 Z3 e7 ]
                        rgManager.tryToStartTransOrder;- z- \. `2 K8 i. f; u- b
                        if @.Destination = void
; S" I# ?2 _  L. l* h4 J                        then -- no transport order for vehicle @0 X" y3 u6 D2 E" ]8 W0 G
                                @.Destination :=
1 L# P  R5 M( D0 {! k. y& G                                rgManager.nearestFreeStation(@,track.~);" i+ d  p7 y# J* U
                                newDirection(@);   
# c) m3 t( N; B9 a5 _                                if @.Destination /= void then
9 c+ i3 L% u+ n                                        @.Destination.NumReservation :=* t  b9 i+ M) T" R/ T8 g/ F1 j
                                        @.Destination.NumReservation + 1;7 p3 ], j3 h- T
                                end;  w+ K: ^: }6 w
                                @.CurrIcon := "drivingHome";) y( v& y5 R* n! p( K" E8 r8 {; f
                                @.DrivingHome := true;/ N: f/ ?1 s* ^+ q
                        end;- d- t  ]$ s5 ~" }
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
/ H; _7 I4 t: M, ]" z7 x. a+ b, @* N                        part := @.transpOrder;7 G! k; i( n& x) |
                        part.move(@);-- load part
& X( @4 \3 D8 W                        @.CurrIcon := "load";1 I: {' S; [$ m5 T7 k2 }; ?
                        GlobalDistObj := part.globDestination;
3 V' G  r" I+ J" T) d1 S$ O                        assignLObj := rgmanager.rgAssignL;
% B! t6 Y; d% _' g# S9 ^' A, c" [  i                        row := assignLObj.getRowNo(GlobalDistObj);
# h% A- M  x) p1 m                        if Row = -1 then -- since 701 K4 j/ `5 J0 o- ^
                                if lan=1 then" j2 i0 E+ }% ~7 K
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
6 j2 S  k. p+ X8 _1 u, r2 D; Z                                                to_str("in der Andockstation: \"",?.~.name,"\""));+ U  G% o+ A/ e! D4 E
                                else
; f1 Q! P+ U9 O. n# J                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),' ]0 Q) h9 j$ T
                                                to_str("in docking station: \"",?.~.name,"\""));                                * d8 ^8 T4 [2 b! D7 o6 T( y5 B
                                end;
- _  S* v7 N7 f4 [2 k# q                        else
3 ]' o8 ^3 b  N$ Z                                @.Destination := assignLObj[1,row];1 @8 L0 U1 S% L" y& Y
                        end;                        % r- ^+ T& ^4 H4 {- z; r
                        newDirection(@);
! h9 r% Z1 @. Q% ^. q                        @.HasOrder := true;
+ E8 S6 Y6 A' G' E- z" Z                end;
0 Z: c0 h& K; G) Y        end;
" S) m+ N  N8 [9 Qend;        -- of the method
9 F; y& U: C, j9 X+ _$ m
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
- J3 ^8 G* T& D
1 ?5 D: Q- u4 D这是AGV_putin中arrive的method。7 r! U0 Z* E% k

( i! t' E7 B: J当到达物料速度越高时,这个报警更多,8 n0 ^2 J0 h1 W* Q* W
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
( n% G$ |* r9 }4 M! u程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
) I& U/ L5 Z$ H. d7 |
# t- N0 H5 X. q: J: L另外一个小建议,就是move,所有的move都可以这样6 r- p7 i3 Z/ i& d/ w1 T  s! R" V! F
if not move() then debug end1 \# ?6 {) ^, C5 C  ~) c4 f
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
# Y# ?4 R5 e0 X8 ^( Iplant simulation中的free libraries有AGV模板,
7 P+ J) g% O8 |* r, m里面也有案例。
7 Y' o* |* f  |% Q我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
. `  ?9 ~, Y1 c" J% F& ^  L( B4 |% q9 a8 l2 b7 _; l2 ^& M
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
2 M' E) s8 x' z4 E3 [! w+ p  u. O  O! {! [
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 2 |: |- e1 ^3 q  b3 c8 b
这是AGV_putin中arrive的method。6 J. m$ X+ i, e/ n2 U2 @

; _' r) t; ?% t- L1 N3 U8 ?当到达物料速度越高时,这个报警更多,
9 H  V- F# C7 Y  M8 A9 F
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-7 11:38 , Processed in 0.022559 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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