设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9751|回复: 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'
4 ?, s: h3 t3 a5 A*/
5 I* k4 c) G; U$ Gis/ c, A0 k1 U" |4 o
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;1 A7 C+ x' C7 v) Y$ ]* G* s* M
do
5 J; d! r- H4 r1 H1 P# q8 W        Lan := rootfolder.Internal.Tools.AOLlanguage;: P6 T, U# e/ k- {
        if current = @.Destination -- else return; s6 K; d/ ~+ q3 \- s. U- ^
        then
+ z. ?; x) B1 n                @.Destination := void;
3 X" C0 S. V" ?                if @.occupied then0 g! R& Q' R7 V: e& E
                        part := @.cont;% j. t" D& t* Y$ j9 a9 p
                        @.transpOrder := void;
+ K' }+ [: Z3 H                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
2 I) W* {+ o# H9 h* R* a- _                                @,root.eventcontroller.simTime);* d/ [  u8 j+ ~$ x9 q8 X2 t
                        @.HasOrder := false;$ n( Y' G. {# @' E
                        @.DrivingHome := true;' {/ d* Q  F6 B& x
                        rgManager.tryToStartTransOrder;
8 F( H! m( e1 t* O8 z                        if @.Destination = void) D0 v: A4 `  h6 r6 k
                        then -- no transport order for vehicle @1 b3 P5 P5 U4 g- ^- Q0 V
                                @.Destination :=
# _% V2 X$ F9 D% ~* x8 ^                                rgManager.nearestFreeStation(@,track.~);5 C6 L8 E, p$ X5 z0 x
                                newDirection(@);   4 C+ U6 o4 W6 ^" F- M4 d
                                if @.Destination /= void then
" m* ]. s2 W. e# n' `                                        @.Destination.NumReservation :=
$ h2 o" q8 y1 n5 V; x5 l                                        @.Destination.NumReservation + 1;
/ n  ^) j0 s& `( K                                end;
! `2 u: |8 H$ A! O, G+ R                                @.CurrIcon := "drivingHome";
) I" @! r' C) o+ _                                @.DrivingHome := true;
. y; y+ W3 Y: W8 h- N                        end;3 O& H+ H% w) L
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station- z7 v" b! w# k% e0 ^+ i
                        part := @.transpOrder;
9 Y# e0 z7 m4 O7 \                        part.move(@);-- load part
9 F3 y9 F! F- v+ R                        @.CurrIcon := "load";
" ?1 \0 x0 Q: O+ T, v. q  V3 @                        GlobalDistObj := part.globDestination;2 u; k- J+ s! c- Y) [" q5 b  k
                        assignLObj := rgmanager.rgAssignL;
) v. u# s# R; C; O                        row := assignLObj.getRowNo(GlobalDistObj);
+ f- @9 J9 _3 M                        if Row = -1 then -- since 70: T+ f, T9 c) M
                                if lan=1 then" ^- n2 }1 p* r: A7 _
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
5 `% g9 V2 U* c, A  Z9 s                                                to_str("in der Andockstation: \"",?.~.name,"\""));
* W) D! G1 T* Q3 A* k+ ?: v                                else
0 [% _1 @" A% ]9 M6 z                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
+ L& D; [% m4 E) B/ K; R                                                to_str("in docking station: \"",?.~.name,"\""));                               
4 N/ g2 Y- \+ k                                end;
) \7 T  O  H: r                        else
! n! w( A0 G2 B! r& e7 D' e                                @.Destination := assignLObj[1,row];
7 b9 {5 y; W) L                        end;                        2 E! S/ A8 `4 D: |' @/ W- k( X% K
                        newDirection(@);
$ y, M$ U7 T2 x! ~8 ~5 \: b                        @.HasOrder := true;* k1 b# v% M1 v5 B4 H" K
                end;
7 i3 w# L% y9 P  x        end;8 A* ~6 L+ F# Y: J6 Q6 d
end;        -- of the method
" I" F6 K0 B" h. l2 Q
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
) U" r! f7 v) t. J( K
  `+ p5 g8 w: [3 J& ]# ^8 a1 I# v: b这是AGV_putin中arrive的method。- U6 g. v) U' D4 m% k

( v, r# E) {/ r5 S- n' l当到达物料速度越高时,这个报警更多,
( j+ Q  u9 {% ]3 S可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。" ~0 [  M6 \- d& F2 ~% n
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
$ q! b& ]6 H- Z8 x2 @( A
+ r+ D. ?3 M8 b; Z" o# C另外一个小建议,就是move,所有的move都可以这样
+ x, J7 g* l5 }0 L7 o! j3 e0 Y# Pif not move() then debug end
/ D& X/ o+ x- q- ]8 ~. B这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。6 y7 B) v. n3 E+ V8 B- |1 s
plant simulation中的free libraries有AGV模板,% W( H7 m! n  z5 `. j
里面也有案例。/ S5 P) R2 s! K4 p: U: l0 }4 J: N
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
6 ~* O# b" [1 q( U: ~
( L; F1 x3 {2 O+ W, ^) b我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 5 `1 H) M/ e& N4 H# N7 U: N: o

/ S3 i  g& b1 }9 @' t# U! Z那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 9 O& i& E* J: c  |
这是AGV_putin中arrive的method。! \, A$ I: W; K
: _6 K1 C. V! U) p0 H3 X/ {
当到达物料速度越高时,这个报警更多,

' x) i* B; k* b8 x另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-22 06:18 , Processed in 0.018423 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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