设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8140|回复: 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'
; b) w( z. E/ @" n*/* J, \! G3 ?9 ~- i* _9 w1 L6 Z
is
5 I, F8 C9 T5 \+ g; v        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
  o4 @/ a; e( c' F8 F! \. Z6 ?: |do& l4 @. R+ i( i2 z/ g0 F- C
        Lan := rootfolder.Internal.Tools.AOLlanguage;! R1 l6 j7 Z* \$ C. M; D! Y5 G
        if current = @.Destination -- else return
" z! D6 \6 J* Y' Z        then
* J: \! m2 R" k" ?                @.Destination := void;7 p* a' ]- d* h, i( F# L
                if @.occupied then& D8 s7 ^$ H* m; \4 q5 ]: ^0 y
                        part := @.cont;
9 D9 b. {2 [/ y% i  _7 S                        @.transpOrder := void;
5 u2 u$ O, k7 c, A8 Q                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
( N0 R  A6 n9 m4 h/ L. w! q                                @,root.eventcontroller.simTime);4 d0 Y& |+ l0 O) d
                        @.HasOrder := false;
# |" {1 }7 R) G3 x                        @.DrivingHome := true;
. o. @! s( F4 l4 S                        rgManager.tryToStartTransOrder;
2 M  b2 }! g4 W  ?                        if @.Destination = void
- R& I1 f, b' N. A# Y/ m+ F                        then -- no transport order for vehicle @
" W! e- O2 f  {                                @.Destination :=
+ A. C5 _! u1 ~+ ?' c* `2 `: F7 {                                rgManager.nearestFreeStation(@,track.~);
: s* {' Q0 m& u. L  y4 [' ~) p  \                                newDirection(@);   2 P9 O; c/ q* W$ W( ]
                                if @.Destination /= void then5 n* l. T3 m  A4 b( Q7 K) E, Y' f
                                        @.Destination.NumReservation :=
3 J' P) F$ }- |1 P                                        @.Destination.NumReservation + 1;
0 X% o+ R0 F. C& Z* r                                end;2 K: i8 ?9 C6 y) T+ G% j0 Q
                                @.CurrIcon := "drivingHome";
5 e* `0 B8 {! i                                @.DrivingHome := true;1 b4 W, W$ F$ ]7 G8 X
                        end;
  W4 D9 T" @) Q7 H& B% O: y                else -- the vehicle @ is empty, both vehicle and part are in the same dock station* s. ?8 d4 j4 e9 i
                        part := @.transpOrder;
' O1 g' N" i0 U3 \5 @% x                        part.move(@);-- load part; \/ f$ t6 R. p/ M; F# G
                        @.CurrIcon := "load";6 m# P8 l; x% `; S
                        GlobalDistObj := part.globDestination;4 z, ~, p* \% ]0 i
                        assignLObj := rgmanager.rgAssignL;; Y& R2 j/ b: W$ }% z! M. E
                        row := assignLObj.getRowNo(GlobalDistObj);2 l) e: a7 R: W
                        if Row = -1 then -- since 70  J, b5 [' R+ m# b8 _/ s, e( }
                                if lan=1 then5 y* F, ^* [2 F9 K
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
% q, o' O4 t5 @- j) |  ]                                                to_str("in der Andockstation: \"",?.~.name,"\""));
* |3 {3 K  ]5 _: C/ U/ r' M                                else
) c) h) ?; C! C# R; R$ b/ O* U+ a! Y                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),* m! z" q0 X) L( C6 Y
                                                to_str("in docking station: \"",?.~.name,"\""));                                : H1 s+ h( q6 P1 n; q/ ~% |
                                end;' l; W) Q: ^/ L) b  \9 Z
                        else
# W6 ]8 ~# |( @; B                                @.Destination := assignLObj[1,row];( L: V$ e$ `- ?# s* d4 `2 _
                        end;                       
' l' o3 P+ i( d9 u( V9 H1 `" X                        newDirection(@);5 M7 Y9 A6 b/ w% k. w
                        @.HasOrder := true;6 T% d6 f2 j4 E2 o3 K! o8 x* i# q
                end;
, H/ v5 D  |0 n/ }2 `1 F        end;; w$ Z1 z5 u  P  u
end;        -- of the method
( |' T* v% e, X/ k- H1 g9 h
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 , O; @- l* g- A! O& _

3 v+ j1 m: i1 r" l" O& U5 p6 }9 q% \6 n这是AGV_putin中arrive的method。
3 R3 T$ ~! c4 U! J& W& _' m, }% n9 q
" h  k9 y& }9 W6 S当到达物料速度越高时,这个报警更多,
, b) i* I; k2 ~& Y可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。/ M% v8 X5 k/ D) r- Z9 |; m
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
& @! f8 z0 p, p, n6 o$ E* N
% f/ c4 h% d. Q' |另外一个小建议,就是move,所有的move都可以这样
9 G3 ], P  h* d6 [; u: kif not move() then debug end
# G) M. |2 p$ ?' d' `这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。. @( s* h; M6 [1 j7 m
plant simulation中的free libraries有AGV模板,- {& K' h# [" U' ^
里面也有案例。% \+ y8 ]9 N/ q+ p6 \" V' F
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
' P, z$ q  `: U- \7 H+ m/ P( _8 A6 B4 b
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
# X; ^1 P( C0 T6 Z+ t2 q) P) U
8 G; U8 G# e1 s+ W% u那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 5 U; G/ w. h7 Q8 e1 I; G
这是AGV_putin中arrive的method。
- @( r* j% W% o2 o, z. A$ K+ {8 `4 n$ z. d
当到达物料速度越高时,这个报警更多,
& X3 A. x" @: |3 {9 o4 l" f
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-17 00:50 , Processed in 0.025608 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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