设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8532|回复: 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'
$ Z) {: \  `& H, `* ^: ?*/
7 ^1 r; j/ Y8 [is9 C9 J2 a- `& {- G  V4 A: T) c) ~; p
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;& o+ O6 M. |0 X1 M2 p& C; \/ o. Y
do' L1 h' B. o; _6 E; n) p- M/ d6 b
        Lan := rootfolder.Internal.Tools.AOLlanguage;
" Y2 `2 B# S' _( ]& ^' R        if current = @.Destination -- else return. q/ g( C* I: O' I" @! S
        then
2 `4 S5 ?- E, v. `                @.Destination := void;
. n" _9 m+ v0 E7 v3 {                if @.occupied then* a! H% j% O+ o( ~1 X9 D: U6 I
                        part := @.cont;
+ ]( I7 K1 g, T, ]                        @.transpOrder := void;$ y" k- |, J+ |
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,- Z' o: ^6 @! g! I0 ^4 e* r' o6 P
                                @,root.eventcontroller.simTime);
% ~6 O5 [. I+ J* V                        @.HasOrder := false;5 K2 ?$ W0 i9 Q# x: Q
                        @.DrivingHome := true;" C# ^% z. w* h4 ]+ B
                        rgManager.tryToStartTransOrder;  D% q4 c5 \( a! W5 R8 @
                        if @.Destination = void! G) j* y5 _  W, S7 W" B/ Q( v
                        then -- no transport order for vehicle @
9 U# [1 s& b4 n3 R                                @.Destination :=) l/ {; t: p4 r0 E
                                rgManager.nearestFreeStation(@,track.~);" u  C+ [) @& m7 }" l
                                newDirection(@);   7 ~$ r; ~: v* q9 n, f) o1 i3 m
                                if @.Destination /= void then
' T; h) e& W+ U: c7 h8 p+ d                                        @.Destination.NumReservation :=$ |& l  W0 A3 l( w# q9 R. r" e
                                        @.Destination.NumReservation + 1;
1 |* E( P! y6 b3 ~5 j$ g4 ^, ~                                end;3 h. `: B8 O0 h! l, i9 O
                                @.CurrIcon := "drivingHome";7 D3 P" \' }; K; B" W
                                @.DrivingHome := true;
: \1 R( f( C# L+ F& z3 g                        end;
  r% O+ t& Q2 G( f& z" v3 a                else -- the vehicle @ is empty, both vehicle and part are in the same dock station6 t1 e% \: K+ d9 @5 _
                        part := @.transpOrder;
( P3 z2 K/ W+ T                        part.move(@);-- load part
& l: `4 ^7 [0 d- [: J                        @.CurrIcon := "load";
, ], l" Z+ O8 R/ E7 W8 h3 o* H                        GlobalDistObj := part.globDestination;
( D$ q! U/ ~3 L* I% F. z. N2 `- O+ `                        assignLObj := rgmanager.rgAssignL;
9 k' h/ C; U" r  h& O. J                        row := assignLObj.getRowNo(GlobalDistObj);
3 K% R2 U, |( }) V( D7 Q                        if Row = -1 then -- since 70/ h1 m& d3 D9 P( A8 n/ J, m
                                if lan=1 then9 b" e6 z# ~5 @
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
7 _6 V) V' ~( |* V# D0 _                                                to_str("in der Andockstation: \"",?.~.name,"\""));
( V9 d' J, Z6 T5 y) P3 k/ i* t- l                                else" b2 p: v' B( B5 d  s8 ^
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),1 O% i3 |+ X% h1 I& I, K) T
                                                to_str("in docking station: \"",?.~.name,"\""));                               
. n( U) z8 F6 h& p$ S& Q                                end;
. p6 ^' `% A/ U, d- ?8 P                        else
1 @8 H" o8 U* I7 J: K                                @.Destination := assignLObj[1,row];7 J0 j! E( p! r) J$ W* V6 t
                        end;                       
  {8 {. X+ L+ x% ^8 w" }                        newDirection(@);
& v3 X5 p7 N& {                        @.HasOrder := true;
4 t" Z) H' _4 b) T2 [* Q                end;
% X* P" v& l7 ~( b, S, [) I        end;1 ]5 d  x) J+ R( a
end;        -- of the method
4 a1 \/ J# \, b# f! E
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
9 ^: ^* S" E8 L* Q6 O  l& [2 }
- _* y- g* x( K8 h( P, _- e这是AGV_putin中arrive的method。
( A- [3 L7 h! a, {
+ g0 V; G$ O& B0 X( y7 ]# s当到达物料速度越高时,这个报警更多,7 z! _2 t6 D' k
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
; r2 I% c$ X! x2 ]% V程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
5 Q5 {8 |% q4 V3 u- v( Q# S
' t3 |/ \$ ]; y0 A: _+ |6 X& [另外一个小建议,就是move,所有的move都可以这样
) D# p1 k$ N+ J% gif not move() then debug end
1 f/ Y% P! L' Q这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。! I. z7 z( l3 f# F' |
plant simulation中的free libraries有AGV模板,- g! c$ ?6 A: s
里面也有案例。8 a2 c4 B# y8 O- [
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
0 p) A; r% T. n' B2 A/ b5 E7 v9 {  o; u, T8 L
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 1 D; T* e# J/ O+ X1 m

! ^# l2 m, m8 N: ]那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 " Y* s3 l) z* f3 g+ H( B  w
这是AGV_putin中arrive的method。3 f5 @9 B& A- ]+ w) W- g9 i

: U8 o9 v6 X# }- i! d. T, n当到达物料速度越高时,这个报警更多,
: _" d1 J) C" o+ u
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-9 14:02 , Processed in 0.015571 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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