设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8349|回复: 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'* x  p% c' I' S; W& T
*/# G  r3 w- x  r# S: ?9 P6 O( n
is
( f# o' j; a4 R        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
7 L: z* A% H% Y9 ~do
4 i* s! {. v- W" i        Lan := rootfolder.Internal.Tools.AOLlanguage;
2 d; L$ C" j  v1 q% a        if current = @.Destination -- else return
- i; E- T( P# ]" R$ ^1 O% g: }        then
/ [7 l2 M3 X6 N! T7 J. W' x0 N2 \' y                @.Destination := void;6 G8 D: s3 z/ {8 i+ d5 H" n/ w9 ~" I# D
                if @.occupied then+ [, p7 m& ~$ \; ~
                        part := @.cont;
* p' ~5 I5 i4 n: e  B3 x* G* e                        @.transpOrder := void;4 `! V9 ?' c+ Q
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,$ ?9 g' Q% s( ]/ |2 ^1 S# W* v: H
                                @,root.eventcontroller.simTime);
; `- F; v! h: [' p! t- i                        @.HasOrder := false;! b, P; U7 U- I: ?, J8 }
                        @.DrivingHome := true;
) G2 K8 O& e6 L. u+ S                        rgManager.tryToStartTransOrder;
: B2 e: S0 s1 W) ~& R                        if @.Destination = void3 K( Y/ S" M( e! d
                        then -- no transport order for vehicle @/ `  t( `9 S* M4 j$ _' X8 y
                                @.Destination :=: k$ m2 Q7 D2 x1 W: A/ ?
                                rgManager.nearestFreeStation(@,track.~);' }! t4 g, r7 @* b
                                newDirection(@);   3 y% E' u& o7 I1 E* T- N0 e
                                if @.Destination /= void then
+ i  z2 J4 _4 d; ?! E) v                                        @.Destination.NumReservation :=, g* |& N6 R6 ^* ^% j! [2 d
                                        @.Destination.NumReservation + 1;
+ |1 X+ ^+ c0 H                                end;
* c9 |& t% i* q& i                                @.CurrIcon := "drivingHome";/ j( c  y- Z. B( ^# k
                                @.DrivingHome := true;
3 [4 s8 X) O1 F' U5 X' j                        end;% F: l1 \( l7 ]# d' f, k' j
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station. G5 ^! M0 s1 q$ y9 e$ s$ \
                        part := @.transpOrder;1 Q; n4 C* ]. [) f! L% Z9 d1 k
                        part.move(@);-- load part% s, o6 E' w( m5 d. p" q
                        @.CurrIcon := "load";
3 R) f6 v* L4 G2 K) W                        GlobalDistObj := part.globDestination;
" s- {) J- h7 A8 ]                        assignLObj := rgmanager.rgAssignL;
! d" ~: q6 V: z2 v6 M: t3 d                        row := assignLObj.getRowNo(GlobalDistObj);
+ x; _$ c, r& |9 V! x! b0 G                        if Row = -1 then -- since 70. p$ f: I6 z8 ?. ^; x/ h& Y
                                if lan=1 then5 h7 ~+ ~' i! z7 y  Z( S7 v
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\"")," v6 f% S5 L9 t) y
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
6 B6 O- Y$ @, y1 B% |4 [' C2 M                                else2 u3 K$ K, h2 s
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
7 u6 h. p" V6 M5 b                                                to_str("in docking station: \"",?.~.name,"\""));                                ! K7 `0 B+ ?+ p# y% r
                                end;
4 F( H  R* e$ f# o  u) D                        else
9 R2 M5 V0 L: E, N                                @.Destination := assignLObj[1,row];3 I& V# d6 a. f/ \6 I! L6 C0 {
                        end;                        $ ]! t7 ~$ J. d2 C! }4 R
                        newDirection(@);2 Q3 }% |2 [5 B" e0 U9 V
                        @.HasOrder := true;% Q6 P* G% T/ D
                end;; D2 [! n, i2 S
        end;2 h; o+ ^& P' b! j
end;        -- of the method
: g* ?* y# V3 @7 g1 A! {
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
% r: v" @; W- Y! [, X% _6 E3 x* g8 x0 `9 S
这是AGV_putin中arrive的method。: o! u$ |; q! z. |1 p

! W8 K* O' T0 M; v* H% c  S( x当到达物料速度越高时,这个报警更多,
3 H- f$ w  f+ J5 e# a可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
3 t0 O' r& Q/ ^" I7 d. T: G程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?8 V" w" `9 ~- c' B2 q

6 O+ q6 v% y: d9 ~另外一个小建议,就是move,所有的move都可以这样0 X+ X' q7 E! F; J; F! x
if not move() then debug end2 x! A6 P5 k& n' k8 Z
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。# _* M( n  C+ w' ?) d- \: p  s2 G
plant simulation中的free libraries有AGV模板,% [/ l$ c( t3 m/ e, \
里面也有案例。% G( D$ S! Y: \$ ?, K4 d' x- I$ O
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
6 }% i: q& L: K' q/ q! Q7 y; [+ W2 g- {$ E& y
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 " D! n0 @6 y& b: b, \

! a% I" U. `5 l' {那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 / n7 E  q0 G% |
这是AGV_putin中arrive的method。
! B% b' C5 o+ _+ `$ P. [; L. z! K; m" ?. E: Q& o: T: j
当到达物料速度越高时,这个报警更多,

. D  [  p3 q" z* y$ i另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-29 05:38 , Processed in 0.021259 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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