设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9005|回复: 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'3 e. y1 m! W$ p& F# |; R9 o0 l
*/9 w1 ^/ a+ _0 T# X% F. ?& _
is
$ }3 @; |5 G9 m1 \7 g        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
- E: L# C+ ^; y/ Kdo, u2 F6 h2 N& C8 n. o3 E
        Lan := rootfolder.Internal.Tools.AOLlanguage;+ Q# Y3 C8 O+ [' K
        if current = @.Destination -- else return
+ `/ b- o1 q4 B; K) ^        then8 h6 l' ^) P+ |1 t1 v2 N
                @.Destination := void;8 E4 q8 w! z3 R, \
                if @.occupied then
# F0 F7 h: z, W3 G  C3 u                        part := @.cont;- a0 ?& [( }, I) t4 U
                        @.transpOrder := void;, p- G9 R4 ?0 A  ^- y3 C
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,) J& k) q  [0 [# B( Y$ T- P" e: X
                                @,root.eventcontroller.simTime);
# M- |9 t$ k4 d" G$ h                        @.HasOrder := false;9 m* r' O3 _" d9 J
                        @.DrivingHome := true;) V5 F# G7 f# R3 u5 w
                        rgManager.tryToStartTransOrder;! |% x0 [7 ]+ N1 P) N
                        if @.Destination = void2 [' R8 {1 ?- m  z+ l' }
                        then -- no transport order for vehicle @) D+ E7 Z! q$ ]! r
                                @.Destination :=' d7 h- c4 Y$ k/ r! p
                                rgManager.nearestFreeStation(@,track.~);
5 D0 |' |! {$ I) |5 K                                newDirection(@);   / z6 `- k/ d% g9 B) z7 o4 _$ D
                                if @.Destination /= void then
* k1 w; w" A3 m5 V1 _. e3 M5 h" L9 K                                        @.Destination.NumReservation :=( S( U; U" z' r2 n
                                        @.Destination.NumReservation + 1;# X9 ~* B0 c7 J0 w
                                end;3 A- u* B. s* e
                                @.CurrIcon := "drivingHome";& E, `, h; \3 s/ p" _- m
                                @.DrivingHome := true;, r1 M5 e% d; o6 F/ p
                        end;
, A  C: x9 M  T' G                else -- the vehicle @ is empty, both vehicle and part are in the same dock station$ |1 c+ ^6 Z7 r  I
                        part := @.transpOrder;
$ ]  Q+ r' u  K8 _2 x5 c                        part.move(@);-- load part: w, D+ }# _8 R0 x1 S
                        @.CurrIcon := "load";
9 z) y2 }8 o9 R/ v                        GlobalDistObj := part.globDestination;
, g& F3 G( d: Y4 Z& E) U                        assignLObj := rgmanager.rgAssignL;) `0 v1 P/ a9 Q1 P; Q# b9 j' q
                        row := assignLObj.getRowNo(GlobalDistObj);6 ]4 i& _4 b+ e. B/ x/ {
                        if Row = -1 then -- since 70
5 q0 \0 ^$ f: P( f5 h                                if lan=1 then9 {8 Y/ k9 L4 W8 j
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
/ s* R+ ~6 f1 B6 G5 Y$ R) ~- l: X& K                                                to_str("in der Andockstation: \"",?.~.name,"\""));
$ \" q# e% d- b, S                                else
$ F$ n& M6 q% g5 T                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
. u4 {# K/ Q7 F; |$ E                                                to_str("in docking station: \"",?.~.name,"\""));                               
/ U( z' p; D1 g' H+ |) @5 l3 }                                end;
. W/ C2 u2 Y: u0 s; o6 ~                        else9 g$ {0 t; r. R( m2 R. q
                                @.Destination := assignLObj[1,row];
3 _2 o0 p1 A, q4 O                        end;                        ) w  \: x6 Y9 Z* ?3 v
                        newDirection(@);! |+ L# H2 @6 S: T# L
                        @.HasOrder := true;
% r/ N+ q9 h6 s. C2 u+ m& J* d                end;
6 q! O. d# K9 l        end;
$ Y  J: h. B' f! Bend;        -- of the method
; x8 }) t" I# [& N
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
8 d6 E! U* s0 s) z: H, n2 j1 Q. {4 V& Y
这是AGV_putin中arrive的method。+ B4 F* Z+ X; y2 b
, \) k% P0 ~$ M; x' P9 N, M
当到达物料速度越高时,这个报警更多,
5 C4 r  u5 v( ^) I+ @$ T可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。2 _3 u8 n# Y/ {& K$ h: ?& |/ Z
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
5 h8 `: N# k& f( a+ v& R  ]
1 I: J9 ~6 s* [+ a5 Z/ d' o另外一个小建议,就是move,所有的move都可以这样
/ X" L; m0 o; K$ ]2 b! ^; E9 u6 tif not move() then debug end6 R; A  b1 M8 C" d8 o; ^3 a( l% {/ B
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
) i* m5 ?8 I* t" u" Y5 G2 lplant simulation中的free libraries有AGV模板,& W! B8 ^; \- q3 p6 T6 o
里面也有案例。
* B0 `, u% q$ k, x9 c我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。2 c3 a  Z- t; t- |& K0 x9 t4 E
9 a1 W0 h9 v, q* l0 i6 b
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 9 V% M& S* r# G

; Z1 c, a+ @' @7 o$ d9 s那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08   X0 R) g, b$ x# E$ R( Z6 R
这是AGV_putin中arrive的method。8 W$ T& [% r6 |/ ]# X
% H9 y2 w( N" v; k2 ?8 Y
当到达物料速度越高时,这个报警更多,

# ~% Z  N' Z# r! l' _, E2 ?另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-7-8 14:41 , Processed in 0.018496 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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