设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6086|回复: 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'
5 Z/ b) w9 p6 u6 h8 V( a0 h6 q" x*/8 U+ b$ w4 i5 G6 y* b" Y$ Q
is! Z7 ~9 p# B0 D. K
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
! C5 i9 b7 F% K* I3 bdo
$ z. \  S- S2 i; N        Lan := rootfolder.Internal.Tools.AOLlanguage;
2 H: O% m! \) @- m% q        if current = @.Destination -- else return0 c1 }! @) u# b. e/ L
        then/ l! r* |) W3 _: ~7 k
                @.Destination := void;5 b8 v" P5 N* x  W2 P
                if @.occupied then; ^4 b/ {; I2 W3 s3 j; E
                        part := @.cont;7 m3 Y2 H4 Y* P' Q( D8 }/ |
                        @.transpOrder := void;
! D! N  U0 m- C6 t  c! L" p2 x                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
1 j- h5 H4 l5 |/ ]  n                                @,root.eventcontroller.simTime);
7 W" n2 G, F( r- t) K  R                        @.HasOrder := false;+ f+ F. l* J9 D  x3 F0 q5 A6 S
                        @.DrivingHome := true;
3 W: b5 V7 I- g+ c, L$ k1 S4 g                        rgManager.tryToStartTransOrder;
, h+ Z) q2 e- u" B4 ?- }                        if @.Destination = void
: s7 H4 w. h0 q3 v% E( D) B# l7 t0 b                        then -- no transport order for vehicle @
  i; h7 H3 H+ S4 q                                @.Destination :=8 f5 S# X/ p! \) h1 ~1 e! N9 O2 q* ^
                                rgManager.nearestFreeStation(@,track.~);
# \* H: N8 B3 w# h' L                                newDirection(@);   
. d6 Z  A3 V6 f. l! E7 J3 o                                if @.Destination /= void then7 s  j& \7 ?8 {0 O  F6 R+ y
                                        @.Destination.NumReservation :=
. Q9 r( N* V0 E' d7 G. I: z                                        @.Destination.NumReservation + 1;' G) K' J5 v. U# G. V( Z8 r& z5 Q
                                end;
, [' R) e6 Q. s. N! M) n                                @.CurrIcon := "drivingHome";
9 Z8 S8 N; f5 X                                @.DrivingHome := true;
: n" t) b7 z5 B# P4 [* [                        end;: G0 G' n7 y! a
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
5 }3 X7 J3 j; t1 \" @                        part := @.transpOrder;3 x+ b, ~& ]* ~% N) b
                        part.move(@);-- load part
( F' a+ `" V1 }! J                        @.CurrIcon := "load";; X1 ~' |2 }' n1 Z
                        GlobalDistObj := part.globDestination;
1 X. [) g! B+ x5 `" `; I4 T: ~                        assignLObj := rgmanager.rgAssignL;
5 E0 l) d+ E. x( k                        row := assignLObj.getRowNo(GlobalDistObj);
- {, m* P! o* H7 s- V' d                        if Row = -1 then -- since 70' y' U1 Q: @3 e# b
                                if lan=1 then* o% g( E. E) n# A# d$ s
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),) [1 x/ L3 u/ v$ w3 s* {
                                                to_str("in der Andockstation: \"",?.~.name,"\""));$ n/ |4 {$ x$ Q! [6 u! r0 _! B
                                else
! x1 K# \% q  R  e7 s+ @. t0 r                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
# C/ m" ^, S+ L- D* |                                                to_str("in docking station: \"",?.~.name,"\""));                                : y1 J: E& }/ @: x* v
                                end;3 z. }6 {$ ?; H
                        else
! F; }0 \$ L( d# ]) F                                @.Destination := assignLObj[1,row];  c$ V# U' k0 U  Y' U7 k8 M8 w
                        end;                        ) J% w7 C& c5 E/ J* x
                        newDirection(@);7 O( f! G5 R/ \$ D
                        @.HasOrder := true;
$ c9 ~- |) H+ w+ n+ U5 H9 q7 R                end;" J! O5 `: H3 q* i- P/ W2 g  z1 S6 b6 [
        end;  J( E) C. Z: E* I
end;        -- of the method
* `' B. b; T& b/ a! u$ }; E% i
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
4 `- ~) o4 R: y9 Z
' P& U# [7 u$ ^' t$ w- V8 q这是AGV_putin中arrive的method。, A: ~( I! |. B+ D

# Y) R% i8 X7 g4 l当到达物料速度越高时,这个报警更多,( r' O1 \8 l0 {' I. a
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
  r* g, ^% s. |3 w) F8 Q' C1 u程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
& @' {( e- I- h( X; Y
: B8 J# k4 E* o2 W另外一个小建议,就是move,所有的move都可以这样
0 U1 F8 l8 f* uif not move() then debug end
$ O" h5 D; L- \  W* s: w这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
# B: K' [; \. c( G) o( a$ M2 E% }plant simulation中的free libraries有AGV模板,
$ x! v( m% L- A. W; m' `7 u" E. _' c里面也有案例。
8 \! M2 t' J) T6 S/ L我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。8 D1 }, `7 S" |# n, D9 ~, |- i
# i2 |; R( G2 j8 p( n( ^* }
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
$ A) g* U* y4 \8 W
  M3 w7 g6 G" n/ L那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
0 U. J& b! g2 A这是AGV_putin中arrive的method。0 J2 F. P, M( ]% t: R' ^, _

) A- W' N8 c! X4 k' }; |当到达物料速度越高时,这个报警更多,

. p, d" `5 Z5 A9 B. `8 k另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-1-17 10:54 , Processed in 0.020176 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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