设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9749|回复: 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'  ], u- e" y7 A6 W
*/! {1 I) R+ I+ ^2 x: O
is* h% u# U$ I) K! y
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;+ @( r( q/ o2 ~8 [8 d
do+ L  ^9 U; @# s" y) R9 d6 r
        Lan := rootfolder.Internal.Tools.AOLlanguage;
, e1 Q6 r- u4 z9 G        if current = @.Destination -- else return
5 G8 X) |, J* c& M+ A        then$ _/ r# [; `# A. G1 a  J- `& \
                @.Destination := void;
! U- r2 f) `3 F' e3 q+ B                if @.occupied then
5 K* Z. U( G, i+ A* \                        part := @.cont;
+ Y  f5 Y1 O( R. B" o9 l: l                        @.transpOrder := void;
6 o# R  T. L5 f! H  K% i; K9 }; u                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,; G( c3 K/ ~: v0 X
                                @,root.eventcontroller.simTime);
: @' N3 p5 x: q6 e                        @.HasOrder := false;
$ O( X. `9 P) g8 P# m  ]3 X2 q                        @.DrivingHome := true;
% I7 u1 X- U( Q' V% m1 q: C+ B. ~$ O                        rgManager.tryToStartTransOrder;
8 F. u1 K* y( \                        if @.Destination = void
% P& j, w% D- z0 m. J                        then -- no transport order for vehicle @6 X3 ~3 D# ?( Z: X. P0 ~
                                @.Destination :=
0 }* h4 Y2 o6 X                                rgManager.nearestFreeStation(@,track.~);" Z7 r0 {$ _' p# W2 n  l: `4 m
                                newDirection(@);   
0 R3 o& u9 P! q8 m                                if @.Destination /= void then
- s/ k( G: t- h+ C7 V. d8 L                                        @.Destination.NumReservation :=
1 g% I! R- I4 X7 b+ }% @                                        @.Destination.NumReservation + 1;+ y* y4 c1 f! f5 |5 x: N7 e0 c
                                end;
* P; B# ]: w* K* t8 K% ?! P                                @.CurrIcon := "drivingHome";
( X+ t% G% \4 x3 w                                @.DrivingHome := true;
! j7 d: ]) h2 G* L                        end;! J" d9 @! C# N+ d8 G/ `# _$ ~: f8 {* a
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
/ T* ?9 R9 j: X2 D* i                        part := @.transpOrder;# l/ N3 N9 V" i! y% @2 _
                        part.move(@);-- load part, O$ `8 T* o& L% R6 Q
                        @.CurrIcon := "load";7 K6 X/ J* u9 `
                        GlobalDistObj := part.globDestination;
$ A1 C2 c* H5 I  F                        assignLObj := rgmanager.rgAssignL;5 H+ C; ]! f, P, i" \
                        row := assignLObj.getRowNo(GlobalDistObj);
) r( C7 h+ L) @+ a                        if Row = -1 then -- since 70
) h! E$ U* r; H' u                                if lan=1 then' ^7 Z6 I- x5 B+ i0 z0 e! ~
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
. e) K# b* J' x( c, U                                                to_str("in der Andockstation: \"",?.~.name,"\""));
/ E" n' _' U5 l2 R  k                                else4 \1 C" N, ?8 v8 j
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),0 r) ^, U8 E# ?3 W0 |! q
                                                to_str("in docking station: \"",?.~.name,"\""));                                  w( U/ \, P8 J4 Q8 r  V
                                end;
7 h0 D9 E( P6 ]6 ^3 z9 i" r                        else
1 X; Z6 |+ r7 W, l0 V                                @.Destination := assignLObj[1,row];2 w( O' G% d$ q+ B  `% ~
                        end;                       
3 e* ?0 u/ ~1 ?& B" ]3 ]! `                        newDirection(@);6 B2 R+ L3 }& u; `8 |. l
                        @.HasOrder := true;
; w, C& _* ~' J9 N  q: K                end;
& Z& r6 \  f# |        end;
! P0 `$ ^' f+ u, Eend;        -- of the method" s/ V; C1 H' ~
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
2 g2 M7 m1 E9 {4 u6 b% \
6 R- x% ^0 n* Q这是AGV_putin中arrive的method。4 c4 {( W7 n! m9 v
( S* P% Q# t3 A# Z- M( r# \
当到达物料速度越高时,这个报警更多,9 \1 O; a1 j& k# W8 h' p
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。9 w+ O5 n; i0 c( k
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?' j6 z( `0 ?8 H" B1 z$ p

9 J2 ^6 o- m4 K& v1 X另外一个小建议,就是move,所有的move都可以这样( ~+ M1 b: v1 H# \) s5 u6 M
if not move() then debug end% [4 l9 ~7 Q: f
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。  l  ?7 m' g5 n
plant simulation中的free libraries有AGV模板,1 {) q7 [0 D( C! S0 w3 L
里面也有案例。* u2 C6 A/ z3 M- W9 n
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
0 C, w/ [- F. v. c( s# u1 H+ A
7 t2 _6 P% x8 W) K; [/ U* n- X* _我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
) c. Q3 h3 q; h) H- M( I6 |5 Q3 A6 |. d9 }0 e
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 2 m1 b+ V3 N  l& N2 }
这是AGV_putin中arrive的method。$ T9 F' ]  N3 {/ [0 s7 n
/ g0 O) Y- d2 U5 c7 h6 b3 C
当到达物料速度越高时,这个报警更多,

3 D9 a) O3 Y, u& C  D; O另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-22 05:00 , Processed in 0.020586 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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