设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8967|回复: 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'
. |+ T# a. s' D! W6 G8 W. @/ U*/
+ E& u! \4 L" L* P& F3 pis
$ @' r/ z1 T/ v( J1 H% h8 Y        part, GlobalDistObj, assignLObj:object;row,Lan:integer;# Q. g: `" E6 a' \! M/ y5 o* [
do9 r3 D( F& W) Q2 z
        Lan := rootfolder.Internal.Tools.AOLlanguage;
5 N2 K: W, i  X% h, |' f. y$ T        if current = @.Destination -- else return) N9 Q; N0 q' ]( [* V
        then6 _8 V7 M, R, P/ S/ @
                @.Destination := void;; B0 _8 _* u2 x+ f0 G0 F
                if @.occupied then
% t3 r1 n/ ~, L: @8 m                        part := @.cont;, e/ u. l3 C3 Y& l7 t  b
                        @.transpOrder := void;# {8 _1 F, T7 D7 v: ^
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
2 H2 S) ^2 H9 R' F0 ]                                @,root.eventcontroller.simTime);) p; x3 g% S2 a+ ~
                        @.HasOrder := false;  `1 X9 ^/ t3 c* T
                        @.DrivingHome := true;! j8 O# F9 B' |2 C# @
                        rgManager.tryToStartTransOrder;
( I1 v# W8 K/ \" z9 S; A1 i; ]                        if @.Destination = void1 u- q& T; L' u$ k" ^, r2 l  p
                        then -- no transport order for vehicle @, A# B/ i3 e& @6 H5 _. ]
                                @.Destination :=2 x! H) K2 [1 w+ y) M" V+ U
                                rgManager.nearestFreeStation(@,track.~);
. `6 x0 O2 M1 f; M( o) G+ H! ]                                newDirection(@);   0 M' l9 R' q# Y7 I% u
                                if @.Destination /= void then  _6 J. g* P8 A1 n/ k& `7 j& S4 P. x" h" h
                                        @.Destination.NumReservation :=
$ i7 }3 ^6 u! s& i                                        @.Destination.NumReservation + 1;
8 }+ o7 g/ _( e0 N                                end;
" r7 r/ U( ?* r! f) T! o2 U( M                                @.CurrIcon := "drivingHome";3 \( S7 i+ x& Q1 i% z6 l3 t8 g
                                @.DrivingHome := true;6 G* T% n0 n& c' z
                        end;7 u3 o5 q$ y- R& S  ^
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station5 i# c3 @# E& V: y! ]% M' o% `1 h9 X
                        part := @.transpOrder;
3 u9 B# c2 `) j7 T. ]                        part.move(@);-- load part$ I% @* ^( \4 Z: j0 m
                        @.CurrIcon := "load";8 U8 U# }2 F0 v
                        GlobalDistObj := part.globDestination;3 s, W  V0 _- r% W1 |
                        assignLObj := rgmanager.rgAssignL;
! @9 h  {. _2 h1 a. [2 R( V                        row := assignLObj.getRowNo(GlobalDistObj);$ S' w9 f6 J! R! C
                        if Row = -1 then -- since 709 o" Q9 n" v. ^! d. f+ c! a
                                if lan=1 then
: {& f: l% U3 q$ O+ J                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),$ q" b0 ^4 S8 i. c6 K
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
; I# e& l. |4 d9 w                                else" r+ ~: o# [  J
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
" m: B+ H' j7 O+ n" ]% G                                                to_str("in docking station: \"",?.~.name,"\""));                                8 z3 f! G& v6 ~! M# a
                                end;
' W0 ?2 q+ M7 r5 V1 P& f$ N                        else
/ H* U3 R8 X' K/ T                                @.Destination := assignLObj[1,row];' p* \9 Z/ Q, L! z& Y$ p- T! i
                        end;                        2 F& n5 ^# z2 p4 _9 q) Y; e
                        newDirection(@);+ Z7 k/ D$ l  E& h( Z7 k1 t1 L
                        @.HasOrder := true;
. H' t! d1 c1 V# u                end;! C9 B1 |- c0 _
        end;
$ x8 k7 @, @0 e: I6 F/ F  ^end;        -- of the method
" m. U# v3 X  X( v6 \- W6 e0 @4 x
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 ; I2 I% T! o, n# {! @) s

& |/ a. Y& ]! A1 V9 E# Y这是AGV_putin中arrive的method。
6 m( i6 n" d1 m3 C& I3 [$ g* W
* r% p5 H% g7 ^" G1 ?6 t) B8 c当到达物料速度越高时,这个报警更多,
, y8 C# i2 a3 F$ r可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。( R! E/ j* j' Y9 L: x5 Q
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
! C, |5 ]7 r5 ^9 g
$ x$ M; q( O2 F/ r7 p* s$ z$ O另外一个小建议,就是move,所有的move都可以这样: V: s+ r( w- g: @. t
if not move() then debug end
- f1 X9 K3 \* j* ]/ g这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
+ ]4 S& u) c6 Y( rplant simulation中的free libraries有AGV模板,
, n9 C$ D. i. W  |) p1 B. O, K里面也有案例。
6 h8 p8 S$ ~& S! C* i6 C我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
: ?0 g' y/ k( l* f! y
+ a9 z2 j. L$ A我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
8 w: V% C- @0 G' n% I% o
' T4 p6 Z6 D/ v& y那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 ' C8 o% C& j/ N
这是AGV_putin中arrive的method。
5 e8 G$ b8 Y4 e. a4 u+ ^* j; N0 F  A# u
当到达物料速度越高时,这个报警更多,
; p: c8 v0 a9 D. A: p( V
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-7-6 17:35 , Processed in 0.014678 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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