设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8350|回复: 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'
! M% X1 C, v; @* v; {*/* v" ]+ g  _; p2 z: b0 t. z5 [+ O
is7 Y- ?4 ^% b+ W! l5 S* O
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
4 X9 s% l+ a% ?- C! _8 Pdo
; z% E: O% C: h5 e; w. H/ r        Lan := rootfolder.Internal.Tools.AOLlanguage;
1 g0 u  Y) e: X" |* H2 N        if current = @.Destination -- else return# q8 u9 |5 Z8 j& B& n3 X  O
        then5 M( x- {4 V; W6 h) H; _' N
                @.Destination := void;
% G# T  n' i1 F: Z( v) H                if @.occupied then5 i0 i% `4 X' v4 i  p
                        part := @.cont;" n# k0 C/ a; D8 o+ r! J$ R, a
                        @.transpOrder := void;! a0 Q% G! ^7 \! ~8 }! s0 }: V/ j
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,- k/ q% E3 w; g) _' f! R
                                @,root.eventcontroller.simTime);/ D# Q8 O  Y1 G0 ]7 H6 j0 I
                        @.HasOrder := false;
- E) a! e7 N9 K: {: u                        @.DrivingHome := true;6 f" B) [+ Z, z2 F
                        rgManager.tryToStartTransOrder;
: G; R$ u6 t3 C5 T! d; y                        if @.Destination = void8 p; C" R7 t- p: i3 f+ m4 b& P6 p6 q
                        then -- no transport order for vehicle @6 M5 e* K. ?! \; k/ r) W/ Y) R
                                @.Destination :=
% g2 [( W- _6 s                                rgManager.nearestFreeStation(@,track.~);
# H( [$ }4 W$ D* n4 p8 S) V* b                                newDirection(@);   / C$ b/ M3 j! M6 J( g- y8 U8 z
                                if @.Destination /= void then
- c& B0 _6 Z0 s, {3 B                                        @.Destination.NumReservation :=
' G4 u8 Q3 w3 Q- C# z; x                                        @.Destination.NumReservation + 1;7 V, L  M& T" f) }0 q$ p
                                end;
6 Q* P, H6 m: I                                @.CurrIcon := "drivingHome";7 k+ |1 u* e9 H3 h  H
                                @.DrivingHome := true;4 v6 [  g9 y# ]2 {, t; B
                        end;
! T0 W3 u; o. V                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
! p2 i, z4 D& E% C                        part := @.transpOrder;
- K* A$ \$ B" N+ H) t                        part.move(@);-- load part
2 {1 R) n0 W! U) J0 B                        @.CurrIcon := "load";3 ^2 m: v7 @. c* e( ?- j' Q
                        GlobalDistObj := part.globDestination;# l; U( s. V3 C; M8 i
                        assignLObj := rgmanager.rgAssignL;1 x1 i: ?$ `  m( A; s& _
                        row := assignLObj.getRowNo(GlobalDistObj);
6 V9 Y' o, a% n/ E% g                        if Row = -1 then -- since 70
0 L/ ~! C" f- P& n                                if lan=1 then
& z: G% U$ E4 u$ u9 M0 f                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),6 r+ j  t  l# k" A; W" u1 b. o* k8 M1 N
                                                to_str("in der Andockstation: \"",?.~.name,"\""));2 n6 W4 h5 F9 [% ~0 m3 s
                                else0 T$ F2 c7 F6 t; {% x* J7 D  q
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),. V' G' ~( H' e. _# w; n4 B# h. h
                                                to_str("in docking station: \"",?.~.name,"\""));                                / E0 q& G2 j+ _, l. Y' R5 h
                                end;
; V1 e9 m6 T8 s/ m# D5 v( ?                        else
% S  ]  K8 b: }2 @7 ], b                                @.Destination := assignLObj[1,row];
5 N, r5 n- d3 U9 `. T                        end;                       
4 J1 w8 ?/ I! Y! u& O% M                        newDirection(@);
; `$ {1 e  r9 w- d+ G                        @.HasOrder := true;. P2 s/ k- S9 c; D5 C
                end;* Y3 l9 C* u- O3 ?
        end;
9 ~- \! W" V: ?3 wend;        -- of the method5 Z8 D. M: _+ w  Y* i
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 & p. ]! e/ H) V; e( C$ J! J" a5 O4 l. U
& j$ {9 a. H4 v- z' i
这是AGV_putin中arrive的method。
' h, D: _) p/ ]* b4 O% [) ?  U7 d. j  ?/ y, ~. L
当到达物料速度越高时,这个报警更多,
- C, E& [  O" P  K. c可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。+ b( b; ], Y# W( z" o
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
2 ^9 X1 E. V: ~# O+ @- j7 j) V# n% l/ b, l
另外一个小建议,就是move,所有的move都可以这样) r- G6 z( v8 ]5 X
if not move() then debug end8 V3 N. k& T5 f$ J+ d6 P$ e
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
( s. _/ [& F& A2 ~/ L& q# Iplant simulation中的free libraries有AGV模板,
% F2 Y6 o4 E5 J- u2 w% F里面也有案例。! ~3 E) E- w1 P; ~0 w
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。: a$ b8 M: {3 |1 I+ \
( q  d2 H3 @! \9 R! i
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
% G; `9 Y- m/ e( V  t; r
( H% o. w7 R$ `. Z" g0 V. B那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
0 R; Y" {/ L) X9 g2 G- U* `这是AGV_putin中arrive的method。
9 N2 g' j0 v. t! I7 ?) q, E% K7 j/ u5 `' @1 C  x
当到达物料速度越高时,这个报警更多,
- k- F4 c2 |3 Z( j0 K
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-29 05:55 , Processed in 0.020758 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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