设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7082|回复: 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'  A2 Y8 S# M* J5 a3 b9 r
*/) ^, x) e0 d7 Y0 E" Q/ S
is% _$ e  h, F, g5 M! n9 {
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
: |5 c3 v7 L  K7 H9 kdo
, ^+ ]5 B" m# ?. E( O        Lan := rootfolder.Internal.Tools.AOLlanguage;  J$ i5 a2 v6 z* ^4 A
        if current = @.Destination -- else return
/ {# o2 h* T+ E7 R        then: Z- z3 y) n# U* e' a9 x3 p" o8 W+ R
                @.Destination := void;
2 s6 ?+ @% n. n$ e) @                if @.occupied then/ u5 ~) V& ]! Y1 C
                        part := @.cont;
+ j2 H* E5 o5 T; r3 m                        @.transpOrder := void;
8 O2 \5 c5 {  b# |                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,/ x8 C9 w% S' A
                                @,root.eventcontroller.simTime);
# h* ^; K; ~. y5 y# i                        @.HasOrder := false;
8 s/ H* W$ R3 X3 B: R                        @.DrivingHome := true;2 s& [0 L' [( a7 B2 @
                        rgManager.tryToStartTransOrder;
9 j. t# ]; t* M, S3 P                        if @.Destination = void
* O- {, t7 d0 M2 v                        then -- no transport order for vehicle @
7 m6 R3 d: q9 V. ?7 o                                @.Destination :=1 j, u: ]5 V7 _2 o+ ^
                                rgManager.nearestFreeStation(@,track.~);
( v( V# w8 d- w9 A' Q                                newDirection(@);   9 F+ Y4 f; w+ d# |
                                if @.Destination /= void then2 ?) Q, m( s4 i7 c
                                        @.Destination.NumReservation :=
; D1 O9 X* p  y! x                                        @.Destination.NumReservation + 1;
2 a, l0 e5 Y" S3 U( a                                end;
; O& L  O" X# V                                @.CurrIcon := "drivingHome";8 I# j) p" ^+ A, c) I' n9 E% W0 G3 I
                                @.DrivingHome := true;
' O3 S4 P/ k" n8 Z) m                        end;: ^/ _3 c) r' Y3 D# g& H* ~8 K
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station# e7 D: m0 g) H! O6 H# R
                        part := @.transpOrder;
9 J: U6 m3 b- ^                        part.move(@);-- load part2 y; i2 c2 r& v$ M* a
                        @.CurrIcon := "load";/ Q4 ?, B* O) P- i1 n
                        GlobalDistObj := part.globDestination;
2 z- ]4 ^" T: _$ I' }( d                        assignLObj := rgmanager.rgAssignL;* f1 ~6 v7 Y% `- B6 x
                        row := assignLObj.getRowNo(GlobalDistObj);
' F+ E6 l  l, S                        if Row = -1 then -- since 70. M. X) l/ `: M4 [
                                if lan=1 then
0 M9 g) g4 d% ]4 m2 Q( G                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
, ~+ G* T( M, X( M+ L                                                to_str("in der Andockstation: \"",?.~.name,"\""));5 ~2 Y7 N8 _8 |5 f
                                else  J0 m' i& h- [5 K& W
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
: R7 }/ j+ {# k' }  J                                                to_str("in docking station: \"",?.~.name,"\""));                                8 q+ z% M. L6 V$ s
                                end;
" U( d/ R- T3 S                        else
  n( _8 z1 O# }: ~$ n( N7 f                                @.Destination := assignLObj[1,row];8 D2 _( t8 u3 n/ c% P
                        end;                       
& z6 J+ v, v/ S5 ?                        newDirection(@);) ]+ ]- u) Z5 v& D& L- \# r( I5 q
                        @.HasOrder := true;
& F/ N0 L% z+ G) \7 f% p. q                end;/ j. C8 T* U3 E7 ~1 X8 ^
        end;9 e& O' V% m* l6 t! q' i/ P7 V/ O
end;        -- of the method, u) e2 p: k. ?8 i. `1 }8 {
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 8 q/ R0 [5 f8 T
/ a7 t' Q! J6 ^( f
这是AGV_putin中arrive的method。
/ D+ K5 Q- X/ v3 B* p7 B0 E, e: x9 |9 g( |! c. w2 m2 I
当到达物料速度越高时,这个报警更多,  t4 \  y% ]3 ]1 B# z5 W& w: y) r; j
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。+ _# ?% b1 v8 q3 U  O, a$ z3 h
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
2 M# Y0 }) w/ f* q) e% S$ a% p
7 P7 T& j  m' Z, L; j另外一个小建议,就是move,所有的move都可以这样( u! m8 P  l0 U
if not move() then debug end
4 C. R5 k7 b. a3 W% X/ |+ p这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。' Z# ]! R" y; Q( m
plant simulation中的free libraries有AGV模板,
. g2 \3 ^7 i# T. b里面也有案例。7 \: H; O; K6 ^" a
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。' }0 |+ C: q! ~

; |% S- }& b! O- \我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 : t9 U5 f4 w$ h7 P
. p( }/ k9 V) N  w+ }0 z7 A
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 " P& _  h- \8 c5 `) _) f) A. @$ B2 ?
这是AGV_putin中arrive的method。0 m1 u  C9 P% Y8 u& L

4 ~2 W* f7 P  i4 H3 }9 }当到达物料速度越高时,这个报警更多,
% r6 i6 M; `( V. s. D+ J
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-15 21:26 , Processed in 0.018356 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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