设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8463|回复: 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'+ o. Z! V! F$ V  E& o
*/$ m2 f* W; n& V- D# v: A
is
7 J* `2 P+ o' U: Q; b7 f$ F3 g        part, GlobalDistObj, assignLObj:object;row,Lan:integer;% a6 h4 i- D# K" }" }
do5 D& r+ H  K! ]6 d
        Lan := rootfolder.Internal.Tools.AOLlanguage;, m; g3 \0 V& O& x- i% r
        if current = @.Destination -- else return
- s$ P, A8 H5 I; R9 f4 _2 ^        then
1 \8 ]1 y6 @; n                @.Destination := void;
* R9 {& V0 u6 z8 \2 m                if @.occupied then
3 E- E- N& _7 |9 |/ o1 P                        part := @.cont;  S6 N4 h4 }' g  p! P' `
                        @.transpOrder := void;9 z4 _3 a$ E" q* g$ S. ^/ a' [$ G
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,! |5 w; @! j. x; r7 ?
                                @,root.eventcontroller.simTime);+ S) ~& G' ^0 h. s
                        @.HasOrder := false;
9 I- q- \7 B  l/ H' ]                        @.DrivingHome := true;
& z/ e+ N1 {- t+ ^                        rgManager.tryToStartTransOrder;
+ `. j# N+ n4 D" N8 G                        if @.Destination = void
( |$ A/ H: u9 W7 }( B                        then -- no transport order for vehicle @, Z4 G( A' e! [" W1 N; C
                                @.Destination :=
. Z7 Z* x" [* C+ E8 p                                rgManager.nearestFreeStation(@,track.~);8 J6 x8 T0 v7 Q7 ]
                                newDirection(@);   - {1 E- [4 ~- g8 ?7 C
                                if @.Destination /= void then$ H$ b6 h& F8 E, T7 H
                                        @.Destination.NumReservation :=! m' b9 h9 L" l0 L+ k: B
                                        @.Destination.NumReservation + 1;1 S. Z2 w$ }2 {0 @3 {" B/ z: X- n
                                end;0 O. L) h  [& n2 G* U2 _' `
                                @.CurrIcon := "drivingHome";! o( d) H5 ]( l9 k& G$ Q( `3 T7 h
                                @.DrivingHome := true;
2 y. n% c/ p5 O8 W                        end;* F( Y# R) Y) c) }% C  m
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
# v8 F1 m6 E3 g! n+ {                        part := @.transpOrder;
5 h# Z: O( b" E6 Q. O3 p( l4 S                        part.move(@);-- load part3 l% u1 Q% W7 l, E8 U
                        @.CurrIcon := "load";
7 f$ ~3 u7 j3 O, k$ I4 J                        GlobalDistObj := part.globDestination;+ K1 K; p# h8 ~5 N" o/ i- m2 ~5 y
                        assignLObj := rgmanager.rgAssignL;( ^5 J; X. t9 P- N
                        row := assignLObj.getRowNo(GlobalDistObj);
- j" w2 O" [: ]9 Y9 ?" }                        if Row = -1 then -- since 70
. k% j1 ^  O5 m3 h% b6 `0 [                                if lan=1 then7 M! \4 m& H0 e- h2 H' m& R
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
5 e* T7 \, J7 ?1 M                                                to_str("in der Andockstation: \"",?.~.name,"\""));) x+ Q7 C) E: P0 Q, r/ Z  a
                                else3 c4 C7 e3 R5 }" Q  G
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),7 }0 R2 l- \- N
                                                to_str("in docking station: \"",?.~.name,"\""));                               
7 p# I$ a5 d: G- m1 B4 H& U                                end;" V! K. Z. r( |% V# I) W- A
                        else
1 w% `+ ^7 p. V' t+ q" D                                @.Destination := assignLObj[1,row];5 r# H. \1 U' |& u' ?% n
                        end;                       
5 k/ z) n- B; c& K$ {8 Z6 L, `                        newDirection(@);
3 D3 @# b; P$ r, Q$ w                        @.HasOrder := true;( [+ z  @9 _. z1 I6 H; v
                end;
7 i+ D; W; m, n* [+ Q        end;% [' }) ?! A! t& h7 W% O
end;        -- of the method  z* {8 T% C* b
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
* e6 f" @5 S1 b9 |9 Y- j6 X3 j: {' c0 O0 }# B  d
这是AGV_putin中arrive的method。4 o) T( ]1 k$ @( z
6 E% y1 x) V; b  e
当到达物料速度越高时,这个报警更多,& A! t% A7 G/ R2 E
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
7 q1 D4 c" ]* k/ g5 h* C; T程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
8 Q$ w. ?& e7 _- x) Y4 r9 N6 ^- ~  y% j
另外一个小建议,就是move,所有的move都可以这样
; X- _0 R/ L6 p- Wif not move() then debug end4 M$ f* f; e& g1 \# Y
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。4 t- W2 C0 p& f$ B" E
plant simulation中的free libraries有AGV模板,) m, B6 ]/ T* k( \. M# Y, Y
里面也有案例。
! M) Q3 T7 H8 P4 `# F6 ?我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
" u/ S- b0 s9 `2 K1 L1 \
$ y. k3 f  o. I0 u/ V我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 ) H! h2 [, |) u1 e* R7 m

/ g( V& \. M( U; F$ v那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
& E. S# n5 V8 r这是AGV_putin中arrive的method。
# c8 S" L+ a# L: q( ]* J! \( ^6 p6 E# ~+ v- o- ^4 b) v. H  a5 v- }
当到达物料速度越高时,这个报警更多,

0 _5 F. t2 s0 f/ ~5 D! B8 \另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-5 14:01 , Processed in 0.019397 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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