设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7978|回复: 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'3 @/ i( ^' T1 Z
*/
0 X( z4 U, d8 v2 r4 ?: sis
% i# F2 t% Q- j+ Q        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
& _- ]  l4 k9 B* t: C4 E+ B1 Xdo
, ^8 D! o/ i/ l0 E9 e  s5 }/ C$ O        Lan := rootfolder.Internal.Tools.AOLlanguage;/ [+ T. J( M- E3 @7 w5 p5 `5 |4 m( j: h
        if current = @.Destination -- else return- U2 g, h4 E6 o( s  y/ u5 j
        then
" }! c5 l3 y7 B& B1 L                @.Destination := void;6 \; N7 z, K9 h
                if @.occupied then
% u* F1 z. _0 ^# i0 ]                        part := @.cont;2 D0 U* M% C5 j& a# r1 W
                        @.transpOrder := void;
5 G/ e& H9 E3 P# e) z3 z* x, a3 H                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,; F- f2 K0 `8 E$ N1 R3 B
                                @,root.eventcontroller.simTime);4 P! Q+ N, L  Y6 y
                        @.HasOrder := false;
* U4 \: F. {& A" c% [' Y& B                        @.DrivingHome := true;
5 m. Z. p1 Z9 k+ c6 n8 p                        rgManager.tryToStartTransOrder;8 I% u. A9 z% N; J3 f  W
                        if @.Destination = void& R0 q' G& a9 x8 y# t9 E. ^3 u( g  b/ d
                        then -- no transport order for vehicle @+ B- Z2 y6 u2 f6 }, w
                                @.Destination :=  h7 _) W$ o" _
                                rgManager.nearestFreeStation(@,track.~);* D: g' U, `0 K1 f
                                newDirection(@);     U! c* d: t3 B/ @8 H
                                if @.Destination /= void then7 ^; U8 T0 R1 [) N1 u0 t, f% Q
                                        @.Destination.NumReservation :=
4 u& D! L$ R* Q3 @                                        @.Destination.NumReservation + 1;4 Q; ^% o! ~7 i5 V
                                end;
2 Q* e- v3 q+ J) L6 c) C                                @.CurrIcon := "drivingHome";
, m7 U8 y8 R& V. F8 y+ x                                @.DrivingHome := true;, l. I$ h3 p* z3 _
                        end;
9 r, E3 v9 D0 A2 M                else -- the vehicle @ is empty, both vehicle and part are in the same dock station7 a1 y) x/ x: F
                        part := @.transpOrder;3 N- w  R, e1 c5 M
                        part.move(@);-- load part4 N3 e, i8 N7 A$ p& f  E9 B
                        @.CurrIcon := "load";
& n- p8 T; o' t" \" S1 c3 @/ S                        GlobalDistObj := part.globDestination;
2 ?+ M: S# `& Z' x; y                        assignLObj := rgmanager.rgAssignL;0 u9 w  j) Q" j8 ]7 Y# t; U& N
                        row := assignLObj.getRowNo(GlobalDistObj);% ?7 o1 K0 u1 y
                        if Row = -1 then -- since 706 u* }2 @# i( n2 p% n
                                if lan=1 then1 e2 V4 z- v4 I  _0 P, B8 M+ x
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
7 {+ m+ a* }+ f* P/ g; C                                                to_str("in der Andockstation: \"",?.~.name,"\""));
# s$ J3 |4 A3 Z: y1 i  n                                else
0 `4 ^( Z' u7 D5 v, E* u                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),: J* E$ D2 P$ a2 S3 P8 w1 ]/ n
                                                to_str("in docking station: \"",?.~.name,"\""));                                # a1 T  L, X+ N) S( z% \
                                end;9 G! }( O0 v6 G6 l: \$ N  a( P8 `
                        else
/ I, V0 q- d9 _5 b) F                                @.Destination := assignLObj[1,row];
" I0 o1 X& |; S                        end;                        9 ?. Y- Q# x1 E+ V# u! h
                        newDirection(@);
" z0 V0 E! c# K                        @.HasOrder := true;; Y, Z# c4 i7 u& x$ y1 {
                end;3 N0 ]% ^$ p9 }9 x" O
        end;
8 y: G) v3 F3 q' Wend;        -- of the method
8 ]. g+ n) J& ?) C9 X0 y/ A, C
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
% w- B" }, k4 s8 t2 \$ ]! r% y: i4 a6 `1 ?- P+ m4 i/ Q: |# t
这是AGV_putin中arrive的method。  u5 ]2 n: L0 O3 \9 U
7 O0 M* K; Z  h2 A$ z$ |
当到达物料速度越高时,这个报警更多,
- G3 S, G" x6 J$ w% R4 t! k可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。! X5 v# G5 A  z5 I
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
; e7 J: T: y7 e* ~5 R6 e
) g3 L: a3 G6 b: y+ \# G5 D* l3 N) _  c另外一个小建议,就是move,所有的move都可以这样
' F* y1 _4 |7 mif not move() then debug end
& d$ K( o" R! w这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
- ?, g$ Y' d2 Iplant simulation中的free libraries有AGV模板,! ]. Z. P2 e* O0 p$ {5 ^) k
里面也有案例。- A: W% m" e2 _5 T0 J8 ]( @' @
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。! B* J7 a. F" t
* c, p( w& d- O( E) r; e- p2 ?
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 , z1 B' x) |0 T* o8 c. A8 c
1 g3 ~+ j4 v! Q# ~+ W- v: |7 n
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 " @8 n; R$ g: B* e7 D" a* J
这是AGV_putin中arrive的method。
" ^, \' R* ?3 ]5 \6 Q9 X$ f8 s
) e6 z/ N- w2 C. X当到达物料速度越高时,这个报警更多,

; t% I- f5 ]; p3 a3 D另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-8 18:57 , Processed in 0.018316 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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