设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8789|回复: 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'
& d1 p% U3 ~* p& b* b*/, y9 j3 I  ~% A
is
" b8 F( V7 q# Q- d; D) Q        part, GlobalDistObj, assignLObj:object;row,Lan:integer;& n+ d1 L# U* d
do
& r! s" e# Z1 k8 T! ?( L9 t! e# d        Lan := rootfolder.Internal.Tools.AOLlanguage;, W: `  W" d+ N
        if current = @.Destination -- else return
. E  i% @4 J/ G        then0 u0 J5 v+ _* f# ^1 O
                @.Destination := void;
; w. y$ o" b" ^9 |  N% I1 e                if @.occupied then+ d2 P; @% L) K$ g) K
                        part := @.cont;4 C2 `+ k! g2 R% b
                        @.transpOrder := void;
/ F4 o+ q0 y. q                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,0 ?8 B! Y3 S$ _5 A8 k/ S- M
                                @,root.eventcontroller.simTime);
' R. y: e; x( [; H# k; [- J                        @.HasOrder := false;/ d0 j: Y7 m( ~+ T; R2 i% a
                        @.DrivingHome := true;
  l2 P  P2 i, J1 `; z$ k                        rgManager.tryToStartTransOrder;* W5 w# R( w& z( o! ~
                        if @.Destination = void
- p8 N# f9 N) l/ R                        then -- no transport order for vehicle @/ _6 W& Q  a5 j* ?2 z9 W; l' D
                                @.Destination :=
6 X7 [8 C# g, j& s" X                                rgManager.nearestFreeStation(@,track.~);
# G; p6 O0 h7 R' |. G& S4 o                                newDirection(@);   ; [2 T- z" P8 Z) _6 q3 H; Y
                                if @.Destination /= void then
; |! r* C) e& J# t" R                                        @.Destination.NumReservation :=& U- a6 ~* G; q7 w
                                        @.Destination.NumReservation + 1;/ u2 f! S0 G+ i0 p6 i' @
                                end;
* k, t4 a5 b/ J. |                                @.CurrIcon := "drivingHome";/ F, w$ L' u# F  n  W
                                @.DrivingHome := true;9 I4 Q% L; m: y- u" t+ J* F' ?
                        end;8 L: N) `# K9 ]2 M' N2 H& b3 }  b' W
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
$ `) ^: ^( E% K/ t: v& n                        part := @.transpOrder;
# X7 @6 `# y' x  }                        part.move(@);-- load part2 O2 e$ c: a8 J, c6 x6 W+ \1 y! C
                        @.CurrIcon := "load";. ^: d; y$ W; ^8 E$ ?
                        GlobalDistObj := part.globDestination;8 v9 F$ M8 f7 @1 C5 A* E9 H, b
                        assignLObj := rgmanager.rgAssignL;
# v7 @9 _  ?1 G" J+ ]3 |; l                        row := assignLObj.getRowNo(GlobalDistObj);4 P3 r/ ~, p' ^) y' C9 U
                        if Row = -1 then -- since 70
& H/ [5 j; K6 h& m1 b8 [                                if lan=1 then
& X1 d( N4 ?0 O" Q                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),0 I1 U) E( l4 f4 }
                                                to_str("in der Andockstation: \"",?.~.name,"\""));9 v) P7 w! y3 B! d4 g
                                else* V# \* P: V' m
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
2 g1 Q9 k- W% V. L7 n$ o* E                                                to_str("in docking station: \"",?.~.name,"\""));                               
* [, D! {+ [& y8 A                                end;
, n* d; P8 D) _, V" t* M. x9 [7 U  }                        else
+ _) ]& \4 C* w- ?, n) i3 U                                @.Destination := assignLObj[1,row];& Z1 n  C0 C' O  n+ h1 P( j
                        end;                        7 B  g2 Y% Z( v5 w4 H% w, C
                        newDirection(@);2 j$ F( z, V3 y* k3 ^1 W+ I
                        @.HasOrder := true;8 [' C1 ^3 Q& q% s& x
                end;9 `  X4 N8 }* h5 H$ n
        end;
9 w5 |% z7 Q: {% E& q6 a9 aend;        -- of the method" P; d. H. V% s
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
+ I1 }5 b# g6 |4 \. A
8 V% R9 z& f8 S* f0 b- V这是AGV_putin中arrive的method。
/ r2 R+ y. t/ A
, D$ g2 H8 r! m# }, G5 o& S3 U当到达物料速度越高时,这个报警更多,8 W# Q0 }7 G8 P( v% A3 J* _4 X
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。$ r6 C( I- M. j, Y/ y/ t
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?7 K% X. ~& M  [, d$ B6 w/ f
, ^+ w1 M/ T. t( y
另外一个小建议,就是move,所有的move都可以这样* A/ X& Z7 Q; ~( [. }7 Y. U
if not move() then debug end5 `' _. N1 g% d# K9 J
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。. U& n" ~# A5 }) w# n& l7 Q
plant simulation中的free libraries有AGV模板,/ r" n; u: L7 `6 k" b) k; w- `2 p
里面也有案例。- |/ k) i* O- I0 z( O5 [6 x
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。# b8 C/ [2 S$ G8 b5 ?
0 z# C5 J/ A' `! h4 B- T
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 2 n* M. ?+ X# a3 E
' V. A4 a, `, v8 ~! W3 r
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
# x: H/ ~  w+ h- ^1 h; H# C# |这是AGV_putin中arrive的method。
0 t5 Z% r/ {: f8 Y0 `- G: N- p- H/ E9 j
当到达物料速度越高时,这个报警更多,

' H- }1 ~/ w, u  k0 ^( @另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-26 10:35 , Processed in 0.017984 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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