设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5810|回复: 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'
  q& o$ K) _; ~2 U9 R*/
4 J" c# q. T' m& C% g) X6 cis
& u( H' |% Y" E2 n- \" J        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
1 C# o- \1 L" \, ado
: Y4 c4 y, m* r" k. d+ R        Lan := rootfolder.Internal.Tools.AOLlanguage;+ |0 x* W3 J4 S+ ^9 B* j
        if current = @.Destination -- else return
, L3 x" g( ?( e0 s        then" _/ O% D" |; @8 Y; X
                @.Destination := void;  j7 C' [& L) h2 T* b; ^& Y3 [
                if @.occupied then! i3 C' p) c% q9 i2 @3 u
                        part := @.cont;7 M/ p9 L. o) `" V, ?: t
                        @.transpOrder := void;
4 O3 U5 |% L  T# T, C( `' R* H                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,/ S7 P) K' I; Q& H- U
                                @,root.eventcontroller.simTime);: I$ p5 V- W/ x% F
                        @.HasOrder := false;( |. C- k) B+ e( Y& L$ g
                        @.DrivingHome := true;
- M6 ]: X! W& L                        rgManager.tryToStartTransOrder;
2 _7 V' J5 ^+ y                        if @.Destination = void
$ X$ e; \3 i( a# r0 s                        then -- no transport order for vehicle @0 z+ f8 r0 G! I, I3 K; \
                                @.Destination :=
  V. L+ `3 F5 C2 |. p                                rgManager.nearestFreeStation(@,track.~);2 u1 o% ]. l! d' a
                                newDirection(@);   & Y5 j, `. u% V) X/ b, R
                                if @.Destination /= void then
* C! @" C3 k' z, N& w- i: ~5 c+ U5 O                                        @.Destination.NumReservation :=
- D  L* R. f2 i, U' ?0 o: J* C& K                                        @.Destination.NumReservation + 1;
: R* N8 Q! R1 _- O                                end;
8 N/ P2 L2 _+ N1 e# ]                                @.CurrIcon := "drivingHome";
7 F5 }# U. W8 s/ C5 V6 |: M                                @.DrivingHome := true;
1 U5 H" l! ], j1 B5 ]7 }                        end;
3 v; E3 W: H4 j                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
5 M: F. K# E! N% ~- ~' d) ]                        part := @.transpOrder;  f4 [3 M  l9 t7 p; z) @7 P2 a
                        part.move(@);-- load part, |% o6 r. M+ u  c$ m- X/ {
                        @.CurrIcon := "load";- e  ~  m+ B& _+ v7 i4 O" @1 ^
                        GlobalDistObj := part.globDestination;
5 b) X3 q, c2 Y3 _- d" g                        assignLObj := rgmanager.rgAssignL;: b7 g& ^8 \9 M( u! w) J
                        row := assignLObj.getRowNo(GlobalDistObj);0 h, W- _& j8 K3 |6 b% O
                        if Row = -1 then -- since 703 j$ v& Q/ u3 Y: ]1 E9 s- \$ |! C# I
                                if lan=1 then8 {7 o8 Q6 I' o0 R/ s% D8 j
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
8 i- u1 y0 C+ \7 B5 h. j; b                                                to_str("in der Andockstation: \"",?.~.name,"\""));
. d! W0 g- K# t+ J, Z1 k                                else
6 `# q+ q% H, L0 a4 F                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
1 E$ v  t. N/ v" j                                                to_str("in docking station: \"",?.~.name,"\""));                               
! Y9 S. q& h: o7 s: C2 K                                end;
+ S+ `( ]# q3 q3 P9 M; w- T                        else* Y  ^, F. M5 t9 `
                                @.Destination := assignLObj[1,row];
/ I- z9 W' m! F  G0 p& H7 D. R                        end;                        2 K0 n, t, K1 O" f  R& J
                        newDirection(@);: i3 l0 b# v& x2 w9 B' @: i
                        @.HasOrder := true;* B4 Y& i. n1 B* r9 h1 L
                end;8 _. X% E, H1 g1 g( `& e( H4 j
        end;* x. N8 }* k% k, B
end;        -- of the method
; d9 M! ~; x6 k! A: a2 D9 o, E
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
2 {; E+ `. R7 r# c9 M1 Y' B5 R- W0 O8 Z( L0 D
这是AGV_putin中arrive的method。
7 i/ y1 z  p' y2 f- \2 P* X$ o7 Z! s! ^
当到达物料速度越高时,这个报警更多,
) N2 s7 c8 d' P' H可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
( ?* [7 P: |! `6 g2 [, n* u. H" I程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
4 N+ d$ y! i6 l- Y
/ x) d7 t9 M7 A另外一个小建议,就是move,所有的move都可以这样
, u6 X$ ?7 u9 k) ^8 M! r2 D4 Uif not move() then debug end
) n) R8 _7 R1 A6 ~/ a& K这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
, c2 }3 s, `- {  O6 e6 Qplant simulation中的free libraries有AGV模板,
( @5 F0 t8 R$ u  ~. k: a里面也有案例。3 h9 }# }* C' T# s5 y
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
% z8 B/ \- h3 o  W9 p" G
  _7 i" X! R' h7 k9 _我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 0 e) q) l+ E2 x" F3 [- d* k

. q- p2 z8 C5 Y; `. Z& n那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 ! N" }. W' r0 e+ U; b" y, ?  E
这是AGV_putin中arrive的method。  o9 h5 r4 X9 X

( p. Y3 ]$ j! w; [当到达物料速度越高时,这个报警更多,

  [5 y4 E5 e/ Q0 m- o$ _另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-12-22 17:29 , Processed in 0.018162 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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