设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6518|回复: 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'7 a' l8 G6 v6 Z7 z8 l/ T
*/
. U& k8 ^& N$ y2 K: d: {is
8 H% N* C2 M' R7 H        part, GlobalDistObj, assignLObj:object;row,Lan:integer;! P6 C& ?+ o$ T
do: L+ M/ c9 ~2 d1 t2 G* i
        Lan := rootfolder.Internal.Tools.AOLlanguage;
9 _. ~1 \+ C; x- p( A) Z7 ?        if current = @.Destination -- else return
& Z. c3 |8 m0 [7 ]        then
" ^' o- s5 n$ i* X! ^' f( r+ W                @.Destination := void;
' K8 i7 n2 c: J& k  R                if @.occupied then
/ a. [+ z% H  l                        part := @.cont;
/ o+ p0 F  |: E% W- D9 R                        @.transpOrder := void;  n2 T" ?1 X0 D, m
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,% n- Y) S# X9 Q# l6 m% ]
                                @,root.eventcontroller.simTime);
" M- A* Q0 T* m6 N/ j  j                        @.HasOrder := false;! C1 m- V& n- V1 t; ~' I
                        @.DrivingHome := true;. Y7 N( D, @* T* N3 D
                        rgManager.tryToStartTransOrder;" |2 M& c3 @8 p' F5 U
                        if @.Destination = void
6 @# c' {5 r& y" y. o1 g5 ]4 t                        then -- no transport order for vehicle @$ T4 J: I1 m: H+ W6 l
                                @.Destination :=
6 S. a& E% v0 s" E                                rgManager.nearestFreeStation(@,track.~);8 k+ f% A1 }- m" ]5 S0 }
                                newDirection(@);   
. q' k3 K  _: _% k                                if @.Destination /= void then
- \1 V, _$ ~8 w. p( _) u                                        @.Destination.NumReservation :=
$ ~) P$ @! ?7 G8 x! \- A                                        @.Destination.NumReservation + 1;4 o2 [, c- _  Z0 L9 I$ h
                                end;
- q7 |3 u* ]) \7 z                                @.CurrIcon := "drivingHome";# |+ I# C. h* z  n& f
                                @.DrivingHome := true;, o) v& K1 c2 X. P! D0 @
                        end;9 T; R) I6 `; \$ t2 T% e! L, t0 X
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
. x- r( F1 |& v+ v                        part := @.transpOrder;9 q. R' o+ V* H* X
                        part.move(@);-- load part4 O0 M' X5 a0 o! G5 ?
                        @.CurrIcon := "load";, U* ?( r0 J" u1 j5 u. ~" ~0 K
                        GlobalDistObj := part.globDestination;9 A& q  ]" d; _6 j
                        assignLObj := rgmanager.rgAssignL;" y: Q  K. x) t! j& F) Z
                        row := assignLObj.getRowNo(GlobalDistObj);: K& p9 B( s+ f5 p7 _
                        if Row = -1 then -- since 70
% r6 o( k" S' f8 u$ a                                if lan=1 then' C  `6 W; [1 Q' c! I
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),9 F/ H4 a, x" i2 A
                                                to_str("in der Andockstation: \"",?.~.name,"\""));! S: O1 D  n3 {( b1 X2 n# |
                                else1 l' y5 t8 k  l' ]$ O  E
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
1 {! a$ u  [5 g6 H: b; K7 z) u' t                                                to_str("in docking station: \"",?.~.name,"\""));                               
9 O3 U  x- N1 k                                end;
1 v+ |) I  K$ _& V5 B                        else( H# [- J- n1 R% Q# G
                                @.Destination := assignLObj[1,row];
' @7 X8 f7 ?9 `" R" D' ?' n                        end;                       
0 d  }4 A+ z  |/ ^" B4 p1 W* `                        newDirection(@);
- F/ f* L6 O- j% B1 |                        @.HasOrder := true;
7 F9 f. }9 ^9 g# q. Q7 s                end;5 I" ]6 Q4 V5 i
        end;
( ~( r- s2 f+ w/ }end;        -- of the method
3 t4 e5 c* D: H
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 8 @/ t1 T5 M+ p1 L; k$ i- l+ B/ p
; Z* @) }! U% |; W& n; [
这是AGV_putin中arrive的method。
0 s2 s9 d' Q1 n. I, A# S
0 _, B9 O" A) D8 z: F当到达物料速度越高时,这个报警更多,* Z; T$ w! U  Z2 w* r3 L) o% M
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
8 l* e+ k, p% i2 y程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
, k5 k, m9 u2 U% t' R
9 u! [" p; }+ S: O4 }6 B另外一个小建议,就是move,所有的move都可以这样
0 _$ \# x5 V4 b) k( Oif not move() then debug end5 w. Q; q  c5 {- I
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
% s: u4 A& t# \6 {, S; Zplant simulation中的free libraries有AGV模板,4 t) i0 k+ `3 Z8 v" F
里面也有案例。
8 N( \/ B( d; a: V% M$ @& D我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。4 ^. I7 c2 t$ S& n9 Y% i+ N

) t6 o( `/ |' J7 e我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
! b" I; M" _% X4 z
) c) |5 `, F' H4 c' z那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 & Y, x/ N6 k4 Y. a* X
这是AGV_putin中arrive的method。* i) n$ R, z; k6 m  P3 T0 P; I

( u  b# b" x. c6 N当到达物料速度越高时,这个报警更多,
1 e' n0 x  t1 ~, [" D' i  S
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-10 08:20 , Processed in 0.016315 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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