设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9043|回复: 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 M. S; y- D' m. W; P*/- Z8 k5 Z2 `! V" V5 h" k6 {
is
- t8 U; s8 H/ Q! S7 ]% L* ]% B        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
; R% {2 Y4 q8 `4 |3 Ado
+ L# b2 I. o: Q+ h' o, d        Lan := rootfolder.Internal.Tools.AOLlanguage;# C! g) a# J" T* K- n/ W2 g0 g
        if current = @.Destination -- else return
4 ]$ I8 W5 r+ R, x  [        then
( ]" u. ?/ Q  `3 z                @.Destination := void;% K+ Q8 u7 d+ \- @" G( c" A4 j# N, y
                if @.occupied then) h) o; ?4 u) I/ z) F! Q
                        part := @.cont;
2 S. x2 R/ u9 q( v5 d* d                        @.transpOrder := void;3 f  v" V( {2 f1 R
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
1 A7 M- [& ~1 V1 \; C                                @,root.eventcontroller.simTime);+ N. m. z7 b$ U/ s) F) @6 w/ @2 {
                        @.HasOrder := false;8 G8 L" K( }. A  c3 }( @
                        @.DrivingHome := true;
0 \: i' L' Q7 X6 n; p                        rgManager.tryToStartTransOrder;' n3 w- k, u" O0 L2 |& Q6 y
                        if @.Destination = void! M, I& c; s7 Z8 o! E
                        then -- no transport order for vehicle @
7 Q0 `/ ?6 o0 p) e                                @.Destination :=
) n+ K! I: T: D. z4 P) C0 p- m                                rgManager.nearestFreeStation(@,track.~);6 [7 b6 O; T! [7 h4 u. w' t
                                newDirection(@);   
3 H* _/ N+ f* z7 e                                if @.Destination /= void then
0 M2 S; d" j% L) s                                        @.Destination.NumReservation :=- p" R" o- `& [
                                        @.Destination.NumReservation + 1;
! _7 u3 `0 A: m                                end;0 K5 D4 A' W% N* }" t# ?
                                @.CurrIcon := "drivingHome";
! p9 a' e0 {- y8 C# \( k                                @.DrivingHome := true;
. {$ \. X) ^9 h% t5 ?0 ~# V                        end;+ f0 |0 _- e  d" W+ o) b
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station( g2 |$ w0 Q4 c0 F" m
                        part := @.transpOrder;
4 a+ w; u- R2 V; g* I                        part.move(@);-- load part
* t4 a- c/ @4 ^5 ]/ j  i                        @.CurrIcon := "load";" F3 `: t. }. O# [) R- v
                        GlobalDistObj := part.globDestination;. X2 W8 i, g1 W0 {  p
                        assignLObj := rgmanager.rgAssignL;# s8 g0 A; A! a+ p6 y
                        row := assignLObj.getRowNo(GlobalDistObj);# ~, I1 ^, O) h9 h
                        if Row = -1 then -- since 70
- z& I5 C4 T; }3 q% H* c7 x5 [                                if lan=1 then( j2 t0 X# J- H' b6 Z5 i4 q
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),: H5 y6 b& B4 H3 l( _
                                                to_str("in der Andockstation: \"",?.~.name,"\""));+ b! x% _  A5 |/ Y
                                else
" N1 n$ Z! s& Q, a% B                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),: f- M8 k  K" Z4 C) U
                                                to_str("in docking station: \"",?.~.name,"\""));                               
; F3 Y4 T9 W7 Y: ^- Z                                end;
* [( L1 X. w' ~7 C2 w: X( @                        else
9 u7 @. D  E" h7 G5 y5 |. F2 Q                                @.Destination := assignLObj[1,row];5 R3 M6 Y/ z% D8 I) E0 ~
                        end;                       
+ `+ o: q; ]4 X) r9 G& Z1 S- x                        newDirection(@);) _# V/ I2 }2 C! E+ V
                        @.HasOrder := true;, P* d  C2 b/ X- Z
                end;+ O% m& i7 L- G: ^+ `& E! I7 w
        end;
$ J  X( W# h: G* b4 S1 Hend;        -- of the method
4 s% M/ o( z: }- [, @# I/ E
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
3 j; c- f8 {! H- w7 S  o) o! s( x5 I6 W- W
这是AGV_putin中arrive的method。* P8 J3 X9 W7 E4 R7 [. i* i  }

7 {/ H# ^; j& Q  X) ?: z5 h# O当到达物料速度越高时,这个报警更多,
$ \( ^, V2 }. u: \. R; {9 @可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
8 N+ u: J1 L% |3 r. }# \程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?7 G; {; W, f. S# w6 L, W- i

9 ?) V0 W8 |" n5 F" G另外一个小建议,就是move,所有的move都可以这样+ S; V- l5 z. n4 o2 x
if not move() then debug end
, S' m, t" S* B( |这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。! @# k+ t& y9 i7 A/ q8 R
plant simulation中的free libraries有AGV模板,
; G' V! B4 o$ J& ~4 ^里面也有案例。
# i+ A  u$ B. n- ^! D, s1 \我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。2 O1 v- j. g' l4 A. ^4 g0 _/ E

& j) r& W% ~7 h7 R4 I6 `2 `& B我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 . c9 Z/ r, p0 D4 K) H, K0 d* s

* z0 ]: |: @% Y8 I" l4 E6 C那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
- x( H  q) f1 t9 S这是AGV_putin中arrive的method。' W( r0 \6 k% r% B, Q" `7 \& e

; b1 p3 @) R& w3 w$ Q3 X当到达物料速度越高时,这个报警更多,
$ n8 O' t5 }' C/ u5 S
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-7-10 08:29 , Processed in 0.015471 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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