设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10089|回复: 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 b/ T0 f* h( G5 A*/! n3 a* |7 x7 _6 X# C
is
6 l5 I3 s$ w3 k' M2 K$ `        part, GlobalDistObj, assignLObj:object;row,Lan:integer;4 w: o) o/ L( I; Q& L; t" O3 C, N
do- O% V$ R$ b9 Z2 f# u1 B0 R1 C
        Lan := rootfolder.Internal.Tools.AOLlanguage;
# W, e7 S! r, A9 b- t        if current = @.Destination -- else return
5 E+ ~, W! F- t. V9 ^  ]; b6 D, O        then
& Q/ _/ d  K, C# Q7 g+ x                @.Destination := void;
5 f7 h  h+ @' r                if @.occupied then  M3 h8 @2 \, ^" U$ L. X8 g8 E
                        part := @.cont;
! x5 e, l4 P9 ]5 o                        @.transpOrder := void;
* W$ J2 a" G  a/ }0 @- ~                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
9 z+ q/ |0 W0 @' a                                @,root.eventcontroller.simTime);
7 K3 u* K/ Q9 m, g) Y) o                        @.HasOrder := false;) I0 O( X7 W( c" H% t; t( x' E* R* h
                        @.DrivingHome := true;& x- P( |% E- f+ @$ _- ~3 ^8 o& Z
                        rgManager.tryToStartTransOrder;
2 H) u" ~, _/ _. Q) y                        if @.Destination = void
: ~6 \5 H' m4 Z; g+ ~5 t+ O                        then -- no transport order for vehicle @
: z# q! y- q- }; J  W' B4 \                                @.Destination :=/ F+ {- \/ f1 l8 L' F. n
                                rgManager.nearestFreeStation(@,track.~);  W1 P/ A/ d6 {
                                newDirection(@);   
9 n5 C6 N* Y. t4 o                                if @.Destination /= void then
) F$ W5 s$ S  D& X  T( P$ B                                        @.Destination.NumReservation :=, c. d# Z6 |2 w0 s
                                        @.Destination.NumReservation + 1;' x& [* e( @5 B6 q, w
                                end;& {4 X" N0 q9 u+ k+ ~& T+ r7 y
                                @.CurrIcon := "drivingHome";
7 ]' q# R6 I3 Z' M4 b8 L7 ?7 d5 H                                @.DrivingHome := true;
0 u7 L- q# f3 }1 V' j( e                        end;7 b2 Z' t( z" Q. y
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station; Q4 n' h9 D6 ?  }7 h  B/ R* |7 y  ?
                        part := @.transpOrder;
) N# ?" J/ }) U  z7 V                        part.move(@);-- load part
( d+ R& d5 O9 o6 b# K8 P5 f, _                        @.CurrIcon := "load";
( d, y# v8 ^6 D( A/ ]9 F                        GlobalDistObj := part.globDestination;
4 S1 d/ e4 K; G; x1 V; ^6 O                        assignLObj := rgmanager.rgAssignL;
! E( q2 Q3 J1 O$ Z) h- s                        row := assignLObj.getRowNo(GlobalDistObj);% L) r9 J& ~' w5 W7 D! b$ |! s
                        if Row = -1 then -- since 70+ [) p/ F2 ?" V' g5 i2 [
                                if lan=1 then# V8 r4 }$ B) ?: L% Q7 h
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
; r, \% }- M/ b                                                to_str("in der Andockstation: \"",?.~.name,"\""));- s: h% Y0 }) \4 U, {
                                else
9 `9 X0 n* m1 c; Z& d                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),- e9 L. h* v, `5 o
                                                to_str("in docking station: \"",?.~.name,"\""));                               
9 P+ C  r$ ^5 O0 K9 o2 A                                end;
- E6 H" y1 `, ?4 \9 ~. n2 D/ Q# ~                        else
- B% Z; e7 o/ m" \6 v                                @.Destination := assignLObj[1,row];4 z: @  ]! G( n- O3 C* x* d
                        end;                        - X- e# k$ K1 O* Q4 w4 V& a
                        newDirection(@);" y6 [$ _* M4 A; ?- I( E; n
                        @.HasOrder := true;
' S! I+ @% j' W! Q9 _! {                end;
0 }6 s" j/ Z0 [9 ~        end;. r& a6 u$ ]3 R7 [5 v: B0 I
end;        -- of the method3 J8 Y4 l& `& f$ B; r) {6 f
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 6 W" q. ]& O# q  J0 ~$ Q
/ I2 C5 W+ P& C: p, v
这是AGV_putin中arrive的method。' R9 `7 L7 K* |/ O

  Z/ v4 u4 O2 u7 g: \2 ?; q& |' o当到达物料速度越高时,这个报警更多,
- z4 H* M5 H" \* r可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
/ F2 X0 k/ k  D) `: A, F0 ?程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
$ {$ O" t8 h& {- u6 F) Y- ~# ]) y' ?0 \4 g2 {
另外一个小建议,就是move,所有的move都可以这样/ C/ X& r: [& I7 g6 X- ~1 N
if not move() then debug end7 M# z* @0 v8 G+ `% _& h5 S
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。/ B$ \2 [& ^& O5 O* _% C# k  z* j
plant simulation中的free libraries有AGV模板,
2 y8 U9 S6 S. U; C里面也有案例。
( `1 o- a( K4 s  O我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。% s! K' d  _; p

" a" j( n0 E9 M3 P$ g我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
- G8 c3 F0 n7 }* s( j) G0 h: `2 w$ U2 l/ [. |8 e
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
4 S- a# |! f! H+ H& \这是AGV_putin中arrive的method。
5 w8 p; ]7 ]  s  i% Y  j9 r
! I# E) Q" j; m( y当到达物料速度越高时,这个报警更多,

( ^& O2 J' M) h* @2 ^) n另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-9-12 16:44 , Processed in 0.018740 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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