设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6673|回复: 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'1 [8 O5 H' P$ S9 s' p' I
*/
# @* R0 r# v# q) b" c! }; i  fis
# v& ^8 {5 e3 m' o. u- Q0 v        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
$ s6 W$ F* k4 u. v7 W) S9 W- y7 pdo
8 r3 N! `" u4 o/ {" ^4 c        Lan := rootfolder.Internal.Tools.AOLlanguage;
0 ]' I* Q; b! ~        if current = @.Destination -- else return+ q  `( }# b, b/ O
        then* Z, g/ ~& v" U: {5 T! Y
                @.Destination := void;7 Z0 E0 a3 q4 w! d6 T4 l7 e
                if @.occupied then/ ?+ n" P  E# B( w7 n9 X
                        part := @.cont;
, Q# e6 {: v6 a' c. d7 [2 X2 q2 w' V                        @.transpOrder := void;7 L. X$ ?! \5 [7 I8 e
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,- a' p, d6 p, A; \4 a1 \9 U
                                @,root.eventcontroller.simTime);
9 Y' s- L; |0 F3 W                        @.HasOrder := false;7 A0 v' h; ]/ k8 U! R1 ]
                        @.DrivingHome := true;
- T1 G4 e& u. P4 o" j% W8 e                        rgManager.tryToStartTransOrder;/ I; g8 z" f* c& D6 e
                        if @.Destination = void8 N+ k' S# ^6 X
                        then -- no transport order for vehicle @8 S  D7 Z1 [- p) }$ G
                                @.Destination :=0 U% h! X: e! r  X" U- L
                                rgManager.nearestFreeStation(@,track.~);
! I$ D! |2 }+ I, f: Y+ z2 @                                newDirection(@);   
$ ?; j! X+ l) L3 ~                                if @.Destination /= void then
6 l) |. a. O: g2 a% l: {                                        @.Destination.NumReservation :=( ]8 z$ L4 x1 I+ O5 B' d; V+ b
                                        @.Destination.NumReservation + 1;
7 B! X  \: Z: q7 [2 O2 U/ |                                end;+ k: ?" z; K8 A5 v& e
                                @.CurrIcon := "drivingHome";
3 a5 L9 C" b! F  b+ ^0 h" i                                @.DrivingHome := true;6 ^- F# P/ A  X+ _
                        end;) n5 g# D; _/ Y
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station& d% g: \# r0 h3 y2 O% J
                        part := @.transpOrder;! L/ g! D- P. P+ J* R4 R* ~2 |
                        part.move(@);-- load part
, S$ C" Q/ T3 [1 r2 @4 g                        @.CurrIcon := "load";
1 e7 Y& u: s! E& Z. e# L, ]9 X                        GlobalDistObj := part.globDestination;/ I; k$ I5 z- ~
                        assignLObj := rgmanager.rgAssignL;
2 n8 _! Z" e4 d                        row := assignLObj.getRowNo(GlobalDistObj);/ s8 ^( |8 G+ E. @) X
                        if Row = -1 then -- since 70
1 X$ J. u2 o+ }9 z                                if lan=1 then
/ y% w! J1 A  [6 E9 Z$ g; f* r                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),4 A/ T; [) M/ Q  i- z7 e
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
4 s5 N+ n2 l3 s6 g" D                                else
$ W- E/ t5 P+ |0 _  `  x                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
& J! w  V* S: P% m  f1 K0 W+ g                                                to_str("in docking station: \"",?.~.name,"\""));                                . f# U' _* F$ T* L" G! \2 T
                                end;
. Y2 W8 F% t; T3 k9 F                        else
5 X7 N+ F" l* a( g0 N                                @.Destination := assignLObj[1,row];
. j/ M, n, g2 V# u$ X                        end;                       
1 T9 _+ a& T  Q& m. k                        newDirection(@);  a7 y" @" n; H! J( `
                        @.HasOrder := true;
7 x+ J: R6 {8 Y8 g! G                end;
$ V( u$ A# `  X        end;( @! v9 E) Z% K& b4 \2 I/ F
end;        -- of the method! P7 X1 Y; @) z
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 " f3 D& ~* |5 O) p
8 i' D) ^  C. a0 @
这是AGV_putin中arrive的method。
5 A4 v. q) p/ X, o+ x" u' m: N
6 m: V1 E0 t' Z* e# _* g当到达物料速度越高时,这个报警更多,
0 M/ T2 l5 j2 t5 T# T4 t4 E6 O& e可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。, S/ a% {6 u2 }( J1 z+ _1 N
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?7 y3 L7 ?+ c% Q. h% M+ R( h4 \
# D8 j3 i6 A: i! k3 h  c/ X
另外一个小建议,就是move,所有的move都可以这样
3 F4 n) _& I2 V* S6 ]  U8 nif not move() then debug end. w4 j9 P1 P0 V3 d  j# ]+ Y
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。$ |& y# p! s* K2 O* |* L
plant simulation中的free libraries有AGV模板,
1 u, @, j% l0 h$ [9 V( ?/ b: t里面也有案例。
. y; ~# `% G8 }: {  h+ `& L5 n1 V: ]我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。- e* W5 f, D: l9 ^

* c; ^) z& P. `: h0 b# G我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 / F' w8 V% B! P" M' Y2 P! ?" L* {

3 O0 o- ^7 E: C( X9 T那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
, Q0 b" n( c. W$ O  R3 M这是AGV_putin中arrive的method。( k! X1 T9 k4 H2 T1 ?0 l  h

0 X; D! w& l. ]( B3 C7 U当到达物料速度越高时,这个报警更多,

1 _3 A. I% l5 |- n另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-20 05:24 , Processed in 0.027961 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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