设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6575|回复: 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'
+ Y; _! I5 [; a1 L7 K5 p# ?  u*/* K6 C- j/ \4 j3 v0 Z: t3 N
is) K0 F7 h) g  |0 }  J# C" I% `9 |# y
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;0 {5 h& o3 x; G! m2 Z5 A0 h' s
do/ d6 W, i5 E) q4 H; [
        Lan := rootfolder.Internal.Tools.AOLlanguage;
' E9 k+ p9 e6 y8 o3 e  S        if current = @.Destination -- else return( m. ^: Q3 p5 p
        then
+ S0 c7 W6 e' l% r                @.Destination := void;
$ |" v$ c8 p: Q0 }5 e                if @.occupied then
  e" d# J5 F  z+ d+ D1 v& r                        part := @.cont;
$ F0 q; L7 m1 b, b# L                        @.transpOrder := void;
, |7 P) c( d6 {- `" u5 d' t                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
, G/ ^- h  x  K% j: S/ @+ k6 m# j                                @,root.eventcontroller.simTime);
5 P  Q3 X. w' @2 l2 k: k6 C                        @.HasOrder := false;
# k1 ~; G) g8 c! f                        @.DrivingHome := true;) I: s* _* h7 w  ]$ P, T4 X, E5 `
                        rgManager.tryToStartTransOrder;
8 b- a* M  X+ C$ Q) F' [9 W                        if @.Destination = void; G" X  Z9 X6 l
                        then -- no transport order for vehicle @
4 t- ~1 l7 b  ^3 m: {( z# ^( S5 S/ u                                @.Destination :=
: H( O4 a, S2 {$ z7 \0 o0 {4 o5 P                                rgManager.nearestFreeStation(@,track.~);
) ]9 |) }7 u, x* Q% V8 \                                newDirection(@);   0 l# X& v0 l1 D! p5 E
                                if @.Destination /= void then2 c; K0 Y, k, R" X
                                        @.Destination.NumReservation :=
+ A6 `) \% A# B                                        @.Destination.NumReservation + 1;
3 j8 o  S4 g. W                                end;
7 h2 ~4 p" _/ Q. Z                                @.CurrIcon := "drivingHome";" t& C# r, W# K3 X  z$ u1 G  c$ k
                                @.DrivingHome := true;1 n  S5 j6 t6 }  Z+ Q& T) Z
                        end;
4 k5 y$ a) C& q. b' K: X                else -- the vehicle @ is empty, both vehicle and part are in the same dock station0 a5 t0 ~, u, M4 g- B
                        part := @.transpOrder;
: r. B* V: e5 _7 ^                        part.move(@);-- load part
" c9 ?* n' D- P6 X* ]6 z                        @.CurrIcon := "load";
, o5 S6 i- h% n3 B) U5 I- k                        GlobalDistObj := part.globDestination;
( S$ A  Q- K1 m5 ^- `" N; |                        assignLObj := rgmanager.rgAssignL;: V6 i! C0 ]8 Z% W; ?! g
                        row := assignLObj.getRowNo(GlobalDistObj);
$ }- g5 [8 [4 u9 \: T7 f                        if Row = -1 then -- since 70' s( J1 ]: ?* e  f2 y: ^; c
                                if lan=1 then
2 n+ @( u' t, k                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),' d3 ~0 ?1 M# w7 W/ R$ [# K- g
                                                to_str("in der Andockstation: \"",?.~.name,"\""));; s5 K" s0 B# [+ F, ~+ I
                                else
* K8 y! F1 |2 \( d0 b( W- [                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
0 j5 P. j5 \( X& u/ n4 S0 Q                                                to_str("in docking station: \"",?.~.name,"\""));                               
+ {, p+ W* n0 d3 r, M0 A* p; p                                end;# _) q$ m0 a. q8 ]3 B7 P
                        else
7 w% Z' H8 o( y5 V                                @.Destination := assignLObj[1,row];
* @! J9 D& p/ |) ~) G" Q% O7 \/ \                        end;                        3 H2 U# |- ?, M9 q( y
                        newDirection(@);% j* X7 \9 c" B" c- k
                        @.HasOrder := true;. T7 M5 q# F4 E1 a
                end;
8 T& ]& b' n" m1 ]8 l+ N        end;3 D* {5 R$ m0 |% \
end;        -- of the method5 e3 d" g9 }8 y
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
4 b0 i3 u+ Y  N  ]$ L! I2 l& c& _$ b% A2 j
这是AGV_putin中arrive的method。8 i* E3 U& M1 i2 T5 ~, h

. v& H" q! L& g$ `' b1 {当到达物料速度越高时,这个报警更多,0 C/ |( A: e8 F- Z  f
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
7 X, ?/ R, x& ^程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?/ A2 O0 Z& a3 Y/ W% O+ M' {, j6 E
" q! t. M" [! a5 a% T- L
另外一个小建议,就是move,所有的move都可以这样
+ v; t! m/ S% ]9 ^/ N( eif not move() then debug end
/ w- {4 H4 C3 d7 z8 C8 U0 q这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。( l3 j* ~5 P+ q3 T# I9 u
plant simulation中的free libraries有AGV模板,/ v$ V2 y" W9 K3 |! U
里面也有案例。; N+ Z- Y; M5 e0 V8 A6 F
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。2 U, \' I6 u0 [4 [* J3 ?& n

" K' n: k# y1 u我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
3 C' R8 A5 v/ {  K7 y+ i5 F
8 T  s: B/ E" e5 b那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 8 y% Z# J' m% C) e- C
这是AGV_putin中arrive的method。  e/ ^$ L' ], W! d) N; F
1 ?1 d. r& F6 s) S3 s) @, R
当到达物料速度越高时,这个报警更多,

& y3 q) y" D; y( o1 ?另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-13 20:51 , Processed in 0.021476 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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