设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9844|回复: 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'6 a- h* x, r: h3 }7 S6 O
*/( G# A, T2 x1 R  [$ h1 W# j5 ^" |
is
; S0 |6 j" s$ b- q' [2 U+ u6 Q        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
# M# n* S* e9 R; udo) ^0 r9 \: I' d0 o* r* k+ X) b9 }3 u
        Lan := rootfolder.Internal.Tools.AOLlanguage;
7 e6 y' _/ v3 L" D        if current = @.Destination -- else return
" H! L9 c: j, h, L% K1 I        then
1 j* B+ b/ [, q                @.Destination := void;
3 x/ k# X: z& j1 z1 W4 }0 C                if @.occupied then- o+ n  a: i1 u6 H. j: u
                        part := @.cont;
4 `8 B1 G9 J" c4 Z/ w                        @.transpOrder := void;4 s2 E8 C3 X4 c
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
8 _$ J0 M$ q; ~5 H# x$ \1 |9 p                                @,root.eventcontroller.simTime);
+ k% z" y3 g. s( [9 l7 M$ W                        @.HasOrder := false;* M- J4 t" V) `1 a5 d
                        @.DrivingHome := true;
8 i% U; r! V9 N                        rgManager.tryToStartTransOrder;( j' L4 e/ a4 F- ~* p2 ]
                        if @.Destination = void
) K. M1 P# _: U( ?7 R  |' y2 h                        then -- no transport order for vehicle @
! B/ p" [# K1 F! R" r- F                                @.Destination :=
; b! ]* U  a1 O/ O% ?, ^4 k                                rgManager.nearestFreeStation(@,track.~);
: E! z: x3 [2 `0 ~. m                                newDirection(@);   3 G) P. d  \3 I8 ~" M$ t
                                if @.Destination /= void then5 W# D' S# O% A5 `) E/ s
                                        @.Destination.NumReservation :=
% z  G5 T5 y' v3 ^! Q" b& @                                        @.Destination.NumReservation + 1;
: c1 ~8 v$ X* K+ ^0 b, ~0 r% v                                end;4 N5 m4 O" b% ^3 X" U
                                @.CurrIcon := "drivingHome";# J( z: V. J& @8 r
                                @.DrivingHome := true;) ^& o" ^! G6 I6 t) i5 b6 G
                        end;
2 X# Q+ u& M( M: A- H7 U                else -- the vehicle @ is empty, both vehicle and part are in the same dock station7 s, N5 M! [& E( }6 l/ `' ]6 _
                        part := @.transpOrder;
" `; H5 D2 G3 X0 W1 X& Y$ O                        part.move(@);-- load part
+ _9 J: W  @7 Q8 p2 [8 J5 L                        @.CurrIcon := "load";! N- c- a) n+ T8 U8 `8 K  W1 T
                        GlobalDistObj := part.globDestination;; W, q; s, B5 o  A( W, \# b
                        assignLObj := rgmanager.rgAssignL;* Z- E3 `: w1 k2 T$ D, g/ A- |" V
                        row := assignLObj.getRowNo(GlobalDistObj);! M8 K8 F# `5 }$ x" z9 q
                        if Row = -1 then -- since 70
! o+ h6 H: L- e                                if lan=1 then5 _& O6 @0 h0 \9 T2 o
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),' b# a# K) {: e
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
, G; y7 z) w& ^$ g                                else7 b+ E& o3 J5 b, s  R
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),' ?3 j. @. L+ I# n
                                                to_str("in docking station: \"",?.~.name,"\""));                                : ^8 Y3 n5 X- |9 ~( ~7 j8 G" H0 u
                                end;' L' H" Q4 j6 N5 N. k% y9 T0 O
                        else9 l4 M' C: h7 Y4 P8 L5 ^
                                @.Destination := assignLObj[1,row];
/ [% o$ _$ N/ Y                        end;                        3 L; K3 C$ S. {# O4 ~1 [+ M/ Z
                        newDirection(@);
! y- }5 V# H4 n3 X) Y7 u. i                        @.HasOrder := true;
% W2 L2 C( ?6 w9 V) a                end;. k4 j0 q2 N- b9 k
        end;* k( {( C6 _: r. d$ j
end;        -- of the method
! x; n2 C/ L2 O) Z% B
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 3 O! `% N3 h; }0 Q

: Z% ~) x+ @  c4 {) Y( l; N这是AGV_putin中arrive的method。- `; d" M9 M9 g, E) x/ G) H

+ R2 b" ^. P3 P当到达物料速度越高时,这个报警更多,
" g: X2 u% f  O1 ^0 T6 T- r可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
$ A3 I  m# L! V* q/ N程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
# @8 Q. n( y5 n8 c( y$ d' w7 `: {, R+ D5 b7 t9 h& b
另外一个小建议,就是move,所有的move都可以这样8 l2 Q7 ~7 N9 G; y2 L
if not move() then debug end- M- L+ y9 E9 A& ]
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
/ L1 n4 T$ v; g# L9 X. L) Splant simulation中的free libraries有AGV模板,, P# E" [0 l9 G
里面也有案例。
& y; V& ~9 m, t, T" z- l& n: @9 k% n6 h# l: j我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。8 V. M& m1 ]8 s* J
: [+ N- i, O, N2 q  `" c3 r' P
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 2 t+ F  d; J) z2 e- [
8 z  O+ |1 U' A' {; a9 n! k+ w: ~
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
- N" H4 B7 d/ n# J2 `# l8 N这是AGV_putin中arrive的method。$ U# P. e( |" B; I4 G; W! q
. ^* u0 _2 z: ^
当到达物料速度越高时,这个报警更多,

: `2 b: @6 Q1 G# |/ d另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-28 19:43 , Processed in 0.018979 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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