设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7776|回复: 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 G) E5 I! M, d: q$ U* F  }
*/
. ~& i/ \5 }" {2 [3 kis
6 P, I4 D- j, M1 ?0 t1 V        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
2 b4 O/ z3 i+ ~0 P: i% i2 ]5 jdo& [5 {' P/ g& H- ?% c) c
        Lan := rootfolder.Internal.Tools.AOLlanguage;
: l& ?6 f" {1 M        if current = @.Destination -- else return: L# M1 `& }  i' ~" J  c
        then, u. P# M* D" V& d. [  K
                @.Destination := void;
" S4 J: y) h. T- e' j                if @.occupied then
5 D: {1 S. {% u5 j3 t                        part := @.cont;
8 o6 M# w# {/ t. {- P  w                        @.transpOrder := void;
) M; i! e; @& a/ \+ U9 O9 f                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1," m6 R% s4 X0 c" |' i
                                @,root.eventcontroller.simTime);  J8 N2 r9 t  ]
                        @.HasOrder := false;  k( E0 r3 ]* ?: O' N6 ]5 q  _9 t1 S
                        @.DrivingHome := true;; s, c+ M( |. S" F3 B
                        rgManager.tryToStartTransOrder;; d, i) n# g6 Q: E# y+ [' M
                        if @.Destination = void
6 K1 F, ^: T  n" }: q# M. r% {                        then -- no transport order for vehicle @
7 v9 M1 r+ X$ E                                @.Destination :=
  L# Y& R2 Q+ o5 x9 N5 V                                rgManager.nearestFreeStation(@,track.~);
" h& S5 ]3 I! e. Y                                newDirection(@);   6 X1 V3 u  k: M; H
                                if @.Destination /= void then
( f# |2 U) V6 m$ {" o, P* J                                        @.Destination.NumReservation :=6 P" m' m3 @9 y3 F5 R/ P
                                        @.Destination.NumReservation + 1;2 J, s9 r$ P6 x5 {! }
                                end;8 r2 ?9 o) [7 }6 y
                                @.CurrIcon := "drivingHome";
) k1 v* f$ s" A1 A1 z                                @.DrivingHome := true;
8 J# u$ o  M5 t* `5 h& ]                        end;
' @' A4 N) j8 {; r                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
( Q9 ~+ d! _3 e2 R! \) E                        part := @.transpOrder;& O6 S3 ^# h. f, N3 [! g$ }( c
                        part.move(@);-- load part
9 s9 g& h/ _% |* F9 O. P                        @.CurrIcon := "load";
" i3 e- x7 \# Z+ c) o) ^                        GlobalDistObj := part.globDestination;
; Q! k# ^" ^( s* A/ j6 d( \6 I                        assignLObj := rgmanager.rgAssignL;
2 D, Q$ T! B* h  @8 a4 p' {' r                        row := assignLObj.getRowNo(GlobalDistObj);: Q; ~% w3 B) Q& h
                        if Row = -1 then -- since 70
+ B1 y3 q0 m$ _2 G                                if lan=1 then
% d5 m8 D. b5 F+ `! @5 ]5 U0 K# S- L                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
- z& a+ W0 V- _: m                                                to_str("in der Andockstation: \"",?.~.name,"\""));
0 P% d7 E" Y" Q4 \                                else* E" }. Z7 |$ i; d; d
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),% I8 Z3 r4 E. `- e; }
                                                to_str("in docking station: \"",?.~.name,"\""));                               
! L6 k4 u5 Q9 G$ e/ K                                end;1 ?, ~, q5 L- W% g; z
                        else
" e5 W$ G: b% y& G: n1 q                                @.Destination := assignLObj[1,row];
1 S3 Y; }, ~: Y: b  h. M" W                        end;                       
/ A  c3 n9 m& x  e" b                        newDirection(@);9 m7 l& Q% d) T' Q- o+ q
                        @.HasOrder := true;
' f5 ?; C" q% C" q- O4 h                end;  t; ]8 M; e" M
        end;" f7 [9 n5 z, A' F1 H. Z" b
end;        -- of the method
# J8 h/ A0 E% h
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 6 w4 W/ T% p' K* U# E# Z. c! C

! j5 C4 M! Z4 ]/ i+ M1 A这是AGV_putin中arrive的method。
! S  E7 A/ |& m; [% j: b# i! @" U+ w, A0 [9 x! t2 X
当到达物料速度越高时,这个报警更多,7 L; G* q* O( c3 e& R
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
) p7 M! Z$ r; r/ l程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?' r8 `+ x+ X; n9 R7 C7 X* K

9 K8 w0 G2 j( f9 l另外一个小建议,就是move,所有的move都可以这样) ^, C9 }) \- Q/ G
if not move() then debug end" l3 O: y: Q  l  n" Q$ J" _8 `9 f8 B
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
0 s1 _* C8 P! \( Wplant simulation中的free libraries有AGV模板,% @6 w- `8 J% o+ ~- Y
里面也有案例。4 k4 r6 \, A0 |, Y
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
! p: f! X, x7 |. r) h0 {0 X7 d: B, T# {3 V
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
4 z8 j6 z. ~% U+ S  C' q$ q7 Q/ n+ n5 v: ~- @& I5 F
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 # P4 W8 W7 [) D/ w
这是AGV_putin中arrive的method。" F3 L( r* e4 D2 A8 p

  Y3 ?1 S7 q9 q) B" q( C当到达物料速度越高时,这个报警更多,
  y5 H& y& u3 l. ^& q
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-29 00:41 , Processed in 0.015847 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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