设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7696|回复: 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'
' K3 p! U8 @* F*/
! T1 x& h+ L% i* ?/ ?is) g: J/ N2 W! r3 E/ J7 L* X
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;# g2 O" i8 q0 K0 R# r
do
6 M$ C9 u6 N$ M* w" n        Lan := rootfolder.Internal.Tools.AOLlanguage;
0 w- {2 O$ m9 Q& m4 c        if current = @.Destination -- else return
) F( c- s" @) G& J1 J- A        then5 M' T# W4 O9 h/ T/ P& @7 M
                @.Destination := void;1 c( R; S& T7 g# s6 [) E5 U6 ^# W' O
                if @.occupied then1 y- d: @% F/ g7 M. x; y# G
                        part := @.cont;
, x; Q' u+ w  n8 g                        @.transpOrder := void;
: J0 ?, P$ m2 ]$ N/ O- x                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
' y0 f7 m  E) |% R5 o. m                                @,root.eventcontroller.simTime);
/ W- y0 V3 y! C' w) ^0 j3 s                        @.HasOrder := false;4 p5 w. f" o; a. Q2 O. C0 q
                        @.DrivingHome := true;
  \* s9 E1 f4 ]+ g6 e/ w                        rgManager.tryToStartTransOrder;
( a, ^2 ]7 a  D5 o; @                        if @.Destination = void
- |  `- R% T* y- U. R, }- t                        then -- no transport order for vehicle @
2 Z1 Y- {7 c% M9 N                                @.Destination :=
1 V4 M  m$ P0 L# F+ p4 d4 W                                rgManager.nearestFreeStation(@,track.~);
' h8 O& [* u+ O0 T# L: ?                                newDirection(@);   
0 l) Q0 f6 V; S1 ^& W                                if @.Destination /= void then
3 j7 z/ p2 ?' A5 T; k                                        @.Destination.NumReservation :=
; o  P& E1 Q& |1 x                                        @.Destination.NumReservation + 1;9 [$ @) ]: D. ~% m( w7 A" ~
                                end;. [! u  K4 O6 C1 a. O2 r+ B
                                @.CurrIcon := "drivingHome";6 ^! I4 [0 }* A, T
                                @.DrivingHome := true;: s& O/ f; q8 A) s
                        end;1 q; U& X/ ?* P# o. B
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station4 k+ q8 L: J8 J
                        part := @.transpOrder;1 w0 K/ ?0 w# D
                        part.move(@);-- load part! ?5 K8 Z6 s" z$ L
                        @.CurrIcon := "load";
% _; U# G% @6 \  C4 Q                        GlobalDistObj := part.globDestination;" f* I, n$ ?" B8 l3 r
                        assignLObj := rgmanager.rgAssignL;
* e0 F- F% c9 V. g* f- t. h/ i* x                        row := assignLObj.getRowNo(GlobalDistObj);
0 e# }* N) G. ~" t0 b0 B                        if Row = -1 then -- since 70" e9 g  o3 l" H2 E
                                if lan=1 then
$ {' X# N3 x0 b7 q, i. b; N                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),, t6 n( y# \' Z4 |1 Y$ S. @; T
                                                to_str("in der Andockstation: \"",?.~.name,"\""));9 L: `, D( e. t/ ?" _) ^  m
                                else& W: e( z7 ^) ]: d5 H
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
; t. ]1 j7 V; [2 N6 H                                                to_str("in docking station: \"",?.~.name,"\""));                                3 K* ^) n0 t1 s- M9 G
                                end;
) p& x0 Q+ G% Z+ k1 K: D8 z                        else
8 \, B8 m# J8 @( m  n& A9 [$ s                                @.Destination := assignLObj[1,row];
! J) e: T- D, [* a% h6 j  j                        end;                       
% r. r! Z8 G+ ^& Y6 Z                        newDirection(@);5 R' r6 {* v# g
                        @.HasOrder := true;
1 T. ^7 O1 Q( }& u- F' b                end;% `& \; n7 C# H& q8 b
        end;: c$ n; ^" E' n! ]$ h. O9 G( e
end;        -- of the method7 j; I) F  Z% K2 u
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 % F# d2 Z) `" J- ^$ _- L; A

8 c: K- n  J9 e9 K7 x5 X% Y这是AGV_putin中arrive的method。8 A' {* P) h% ?2 _: R. [6 e5 c; U2 L

- \, O; a& W# ^9 k当到达物料速度越高时,这个报警更多,
; @3 l, M3 @0 ^( F+ {- I* s3 R可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。+ w$ P0 N9 o  _# E; M1 x6 N
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?& G9 M; t4 D2 ]

- f; |( B! |& F: O) n另外一个小建议,就是move,所有的move都可以这样
% l4 l4 n; z+ R- j5 n* z' Qif not move() then debug end
7 O2 x" H" j8 Q3 I这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
% N$ O1 w. J" w( n- T1 R! @plant simulation中的free libraries有AGV模板,
; d# |, w" ?- G0 t' `! }3 P里面也有案例。2 V$ f2 ~' }1 H) N( P
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。2 j$ R' I; n9 k7 V: d

  R  e- ?2 ~; c) v; Z  B我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
9 F( u0 b! i) x. S
5 s8 p* A( t1 w那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
/ G  N6 H% T/ ^7 q( y9 s这是AGV_putin中arrive的method。+ [# ~( w' C2 n/ k

4 T' S1 t6 V" Q6 u8 U当到达物料速度越高时,这个报警更多,

! N' p$ _3 D5 c, J另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-24 19:19 , Processed in 0.024210 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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