设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9887|回复: 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'/ C3 w7 @# N" w& l. V" n
*/
: Q' w9 `  |) o! i  l2 _is- W- y. v3 d* C8 h4 W3 g6 D
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
; N$ _9 o' p# H" }1 ?do* O0 Z! _2 {3 _9 M* {* ~
        Lan := rootfolder.Internal.Tools.AOLlanguage;! G8 ^( I/ a2 O9 U: ~* r
        if current = @.Destination -- else return
2 ^1 S# a  o4 j5 B+ O7 \3 |        then: D5 K3 w* S6 l9 }6 c( P$ t
                @.Destination := void;
% x; {# H! }" S7 ^; |9 F6 h1 E                if @.occupied then
; R) Q9 {, ]' H6 z+ I$ `; C% w' j                        part := @.cont;6 G5 a0 _, M7 ]" z$ z" q# D
                        @.transpOrder := void;
+ b! [* T& N1 ~                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
# m. \" v9 i/ n( W. c+ H" e6 X                                @,root.eventcontroller.simTime);6 G( H7 M0 v" K8 U. E* O
                        @.HasOrder := false;) {! \4 |1 J; k
                        @.DrivingHome := true;
6 [3 i/ Y1 \" F7 x6 x- k                        rgManager.tryToStartTransOrder;
( I  R6 B' x1 D4 z9 G1 P: D& j0 q7 Z                        if @.Destination = void
9 M9 W( d6 r+ I% e+ e- Y                        then -- no transport order for vehicle @
& k% f5 `' h: M                                @.Destination :=. i# d8 }# B) g3 C2 w. f' i
                                rgManager.nearestFreeStation(@,track.~);6 r9 a4 X7 ]: [5 G: X) H" J! \
                                newDirection(@);   
9 n# p6 N' h  t' y                                if @.Destination /= void then
: s4 m% t: k. @) f* T9 L                                        @.Destination.NumReservation :=5 b. [8 u: d/ l
                                        @.Destination.NumReservation + 1;
3 A' K: x$ q& Q6 w5 O# x                                end;  X" [& T- Q. a+ a! X+ a4 J
                                @.CurrIcon := "drivingHome";
/ @( p! g' B( z0 r, [' n                                @.DrivingHome := true;
" I7 D/ X5 L" C                        end;5 e' P4 x: b0 t
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station% S# ?3 N9 I8 H# ^- g% B5 E* ]
                        part := @.transpOrder;0 B6 |, m$ a- q
                        part.move(@);-- load part
9 c( i) {: P/ t, t4 O                        @.CurrIcon := "load";: s/ W6 z4 c! b/ X9 D* ?
                        GlobalDistObj := part.globDestination;" O& s# m; H* O; a: m: R
                        assignLObj := rgmanager.rgAssignL;
2 C  L' t, ^: `1 q1 B1 D                        row := assignLObj.getRowNo(GlobalDistObj);9 M- L4 |# s2 M, T5 T
                        if Row = -1 then -- since 70" M3 S, z# x1 Q! {, g: y" L1 J. e
                                if lan=1 then- ], Q  ?3 |* F% j1 w
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),8 m/ q2 G/ \5 }" h" P
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
3 U  C% h& E" m' ?: t* b                                else
+ v5 Q; ~; Y3 l* c6 k) i7 m" b- @                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),6 e) p4 B1 d# B0 X
                                                to_str("in docking station: \"",?.~.name,"\""));                                9 n0 Q/ E. ^6 e5 m6 D7 N+ k
                                end;
3 E! v; q/ B$ p                        else
. q1 H. O7 q: z& b/ p! U                                @.Destination := assignLObj[1,row];& Y1 x( h* p. _, q; p2 J
                        end;                        5 E& `& Y  I1 j# _8 r
                        newDirection(@);
& a1 \2 A% T2 a& D1 o                        @.HasOrder := true;
  q5 D0 H8 q8 @* ?" Q- B9 M                end;
. r; m/ Q. R; U8 m5 I        end;
( D# V4 C' T) {end;        -- of the method
7 l% U0 w7 h: _5 e' W* y. q; [
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
- G$ v# Y9 t+ y$ a
4 c$ B+ `. H/ A& j; B/ D这是AGV_putin中arrive的method。
( Q, u, |* B% a1 V  o7 v5 r& `: t' [4 x% N4 J* m2 j% [- X* t& n6 _
当到达物料速度越高时,这个报警更多,1 [8 f( D1 ~/ ^- T. q  h% P7 T" Z% w
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
- @& Z9 a5 s+ s; O程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
5 X& [/ V( Q( I% a" j) w4 t
4 F, Q5 D) V; O! u8 q3 ^/ Q另外一个小建议,就是move,所有的move都可以这样6 V; f& f5 q% P- |3 W' C
if not move() then debug end
/ ?$ N2 a1 g1 X. K这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
  G4 S0 K  P# B5 N0 [5 @plant simulation中的free libraries有AGV模板,( }. K* x" H7 [3 n! S( d
里面也有案例。
/ D2 l0 O  _: C! n+ _5 K/ k我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。$ z5 ^% s4 b& m% r

) j4 }4 _$ Y  S) e8 {8 D, T  P5 x. q我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 8 k" P" W. a% i5 U# _; S

% r3 a0 b  i% K6 J" J5 Z那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 7 o2 H# K( z! i
这是AGV_putin中arrive的method。, o$ L' @6 K4 c9 X8 d* K
  L" e: @' p' a6 a" D+ A
当到达物料速度越高时,这个报警更多,

2 h3 a9 V3 F$ q8 k另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-31 16:31 , Processed in 0.017949 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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