设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9307|回复: 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'% ]0 M/ [8 I. l9 i
*/, v3 b0 G, l3 J. S; `9 B1 z7 }
is
6 X- {( d6 f- S. |: S        part, GlobalDistObj, assignLObj:object;row,Lan:integer;3 g6 ?) i- i' L9 z2 _' Z0 q
do
" l: p  C/ F% c' N        Lan := rootfolder.Internal.Tools.AOLlanguage;/ C& H# ]/ t* K5 G; b4 {4 |
        if current = @.Destination -- else return% f3 @7 i. |% V6 S9 D. t0 x, f- _9 w
        then) Z1 ~2 J" l$ K3 v( x& @6 C% Q+ K
                @.Destination := void;
' K: f- v2 b; Z% p                if @.occupied then; ~* g/ X+ t" a0 M, X1 d
                        part := @.cont;) y. P1 R3 p+ [! ^: _
                        @.transpOrder := void;
5 V6 c3 S3 O( T& B" e                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,6 O0 J) d6 `/ s5 ^, O; S% G% {
                                @,root.eventcontroller.simTime);- f+ n# e" Y4 U  e' Z; Z# r# s5 T
                        @.HasOrder := false;
4 V# o4 S# P) G9 D% ]                        @.DrivingHome := true;
4 d% d. j2 ]8 J& k+ B. M0 o' b) n                        rgManager.tryToStartTransOrder;. b; ~7 t: j3 D
                        if @.Destination = void4 r( a# c$ \6 t- K1 l  }
                        then -- no transport order for vehicle @
# ?; Y+ r2 j! x- i" a0 M4 W                                @.Destination :=
' I4 z; s: K  l9 ~' H8 `                                rgManager.nearestFreeStation(@,track.~);$ k! T) N7 m, R6 z
                                newDirection(@);   3 [- R# X2 ?* T; ~; a7 H, x8 [
                                if @.Destination /= void then& j, u$ |* ~1 d
                                        @.Destination.NumReservation :=
, l( i; x9 I5 i9 Z                                        @.Destination.NumReservation + 1;7 d5 k2 k; u! P6 B6 d7 l/ b
                                end;
' q1 G& Z8 L2 `0 _: s                                @.CurrIcon := "drivingHome";
0 x' h6 L+ @/ W6 t                                @.DrivingHome := true;- m$ H0 N3 Y1 R( u7 f
                        end;: B  O" d7 `  |- n: ^
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
3 m- k! t( T- d( t: ~                        part := @.transpOrder;8 M7 K8 l" c. ^7 M( }6 ]; A* h
                        part.move(@);-- load part3 L) K& V/ _# L
                        @.CurrIcon := "load";
% W, k! e( G8 I' b                        GlobalDistObj := part.globDestination;9 K6 H4 J' x; y5 _% |  [7 ?
                        assignLObj := rgmanager.rgAssignL;
# A0 Q! c+ u# p                        row := assignLObj.getRowNo(GlobalDistObj);! m. U4 F- Z' d9 o: F% S& \: |, o
                        if Row = -1 then -- since 70
: N. }% M! T- l                                if lan=1 then
: s6 T+ C) c% c1 r                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
  Z6 S6 p* P+ Z, |% a4 y                                                to_str("in der Andockstation: \"",?.~.name,"\""));/ s* P) B! P2 f$ v( }9 k) a
                                else% |, H7 R7 ?6 ~0 \7 f7 J
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
1 T) o7 [) K, h* v7 P; T4 x                                                to_str("in docking station: \"",?.~.name,"\""));                               
* |4 n7 Z' M& [- M                                end;
3 d1 y% @9 i+ ^8 z: r+ Y3 W                        else
: K" l' c( s5 }1 p* E% t1 U                                @.Destination := assignLObj[1,row];9 h4 L5 b* \* Y6 n8 D, c
                        end;                        / J6 A; B. c6 s: o! {9 z
                        newDirection(@);
# A: p2 _' t: q1 H                        @.HasOrder := true;9 w; L1 Y" S" G% U
                end;$ V! y8 p+ s" Z1 T
        end;
1 S, Y! L, D; @9 W* r/ v+ zend;        -- of the method7 p  e- ~! \# ~1 N9 ^
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
6 ~( k/ a% t8 [" w
$ w9 \; S9 E2 q) i这是AGV_putin中arrive的method。6 E9 S3 N5 ~4 g" T

3 S$ u* j6 h* W' D当到达物料速度越高时,这个报警更多,
! A4 j# z- r( `可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
( m* D7 V3 r0 s$ T1 e+ `1 `4 a* |程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?" e: P. Y+ o' J' l! |

" w4 P) t: Q) s% T7 Q7 h另外一个小建议,就是move,所有的move都可以这样
+ X. z8 m! s, p0 |  ?4 R# f& yif not move() then debug end
4 i) }  X8 C1 |9 \2 _" w& H这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
( z- I2 S0 f5 r- Dplant simulation中的free libraries有AGV模板,8 D  p8 b; i; V: H$ j
里面也有案例。, D) h9 A' v- [# f8 |& j/ u
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。9 H& R1 \7 z; T
: S' r% l  E' V
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
8 \9 N$ F# q5 Q' l
! x. e* V- I  y  T; c, x那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 . k1 |- s2 O# w% k
这是AGV_putin中arrive的method。2 h4 U6 `# P0 B- W, i6 y

& \) o( |# b! t2 }) ~# Z当到达物料速度越高时,这个报警更多,
+ ]2 j2 N9 Y& _4 f  O) k7 R
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-7-24 11:08 , Processed in 0.018903 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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