设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8781|回复: 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 E, y) L' k3 ~" D*/
$ L& Q, z' A; z5 m# g0 {is3 X9 L& R; N6 `4 D+ G2 f. B7 Z/ k
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;; N- Q2 J; k# ?5 c
do3 w# `. x+ ~. f* j
        Lan := rootfolder.Internal.Tools.AOLlanguage;9 s5 X" Z1 f! H( a
        if current = @.Destination -- else return8 j' Y3 ~" u; c% C  w9 j
        then
, Z* s" s5 Y/ c1 a, X                @.Destination := void;
( b" |* Z/ l7 p5 m2 |8 s' N                if @.occupied then
& F  ?- G' ]9 P( K$ F2 }                        part := @.cont;
# h: z. p, R) H4 _0 s! J7 |                        @.transpOrder := void;
0 U4 V) N; \; P                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,, {2 b) I& \7 }' f5 T8 E
                                @,root.eventcontroller.simTime);3 z5 j+ z6 [' s8 q
                        @.HasOrder := false;
7 B' e7 t6 Y3 w% @( ?3 {                        @.DrivingHome := true;2 p- |0 I# W& n9 H1 B) P$ P
                        rgManager.tryToStartTransOrder;1 p6 t; @2 h8 R
                        if @.Destination = void
/ [! W2 C2 d( q2 s  {4 d                        then -- no transport order for vehicle @
% e# G  X$ l3 s7 H7 \3 `$ |/ F                                @.Destination :=
! @( c7 Q4 [1 e  a' d" z  g0 {                                rgManager.nearestFreeStation(@,track.~);2 }& T) [1 m! J
                                newDirection(@);   
' j/ B( c8 P" o# a/ N/ T                                if @.Destination /= void then0 k+ v  |" d- Y( f# E
                                        @.Destination.NumReservation :=
, F9 x. U* n: [+ j5 Z/ R                                        @.Destination.NumReservation + 1;
3 A! E$ s( _* ~$ T' E                                end;
/ f( [9 [1 {/ T$ n% w                                @.CurrIcon := "drivingHome";9 u6 A& D2 I9 y) K
                                @.DrivingHome := true;- u$ v0 K* k; S* c: [  i; Y2 q
                        end;
& T3 [" {1 I1 N. t; Q$ X- j+ ]1 _                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
" y+ W4 R+ n: X                        part := @.transpOrder;
. S# A- @5 x4 I$ S                        part.move(@);-- load part
) k5 B- k5 D& J. A& N                        @.CurrIcon := "load";2 S; a2 M8 U0 d( c7 o+ K
                        GlobalDistObj := part.globDestination;$ Y3 f  h; ~8 F3 K
                        assignLObj := rgmanager.rgAssignL;
1 h# C# ~7 C( X                        row := assignLObj.getRowNo(GlobalDistObj);
  C) w. G  y. h0 E" V& ?* i8 b                        if Row = -1 then -- since 70
0 X7 _" b) k! L( |# E                                if lan=1 then
; A2 h! Y$ I) M/ t- u' ]                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
+ m- \) e2 E( E2 Z! X' {                                                to_str("in der Andockstation: \"",?.~.name,"\""));8 p+ W' g* T, x/ c
                                else
3 ]7 m: o# J2 z# W" A- @$ ]                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
; H, k0 h* J$ [& U5 m1 k; V# c% X' q                                                to_str("in docking station: \"",?.~.name,"\""));                               
0 ~6 D( k% C8 L. \5 S                                end;
. a4 k, M5 p% J# H) T) u, T7 A$ W                        else
/ F" V6 E" Z. v0 V6 W. b4 T# R                                @.Destination := assignLObj[1,row];1 r2 L8 S% |6 K" ?$ S7 c
                        end;                       
/ C" }6 u( I, k8 m                        newDirection(@);/ j6 o0 H. x1 n5 c, s% l3 G
                        @.HasOrder := true;( r% ^/ k# h, ~
                end;" m3 q1 @, Z* ~7 o" `/ u
        end;* u2 ]9 `0 z6 D( x8 @% H1 H
end;        -- of the method  G, |, T8 v, f. x6 K; |
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
) j# ]9 H3 ~  B4 n( Z3 k+ W9 D, D: C$ y8 o* i6 S
这是AGV_putin中arrive的method。' [1 M( P( q( n- I' D/ l6 m

; }/ U; F$ G) e' l. N当到达物料速度越高时,这个报警更多,! l  m0 Y6 a9 A6 @+ y; H! `' O
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
/ [+ I( J% N3 v; t' f! M程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?7 S& V$ q1 N" o: S2 E) `: m' M8 g

! u( e6 C$ R! q3 ?另外一个小建议,就是move,所有的move都可以这样
9 p+ H* L9 \" ]8 M: e5 {6 Vif not move() then debug end+ [, u* Y1 N+ M- L
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
$ P# n, _% D" I  b1 qplant simulation中的free libraries有AGV模板,! |+ C5 X' A1 I* ^
里面也有案例。  [% K3 R! \  v+ c9 A' k5 _0 \6 K
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。' X. t5 w. _4 H) r' n2 X
+ D( f8 }+ p) M4 H% b4 Y
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
" x. L, P! V; H; F5 G
# e& n( @' J. x, u+ `/ l" k那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 ) y' \+ J6 M& `2 M- I
这是AGV_putin中arrive的method。' J7 I' y" Q: p1 \

: j5 E8 B" @0 ?0 d当到达物料速度越高时,这个报警更多,

8 K4 E4 X/ o2 T. k+ J另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-26 02:26 , Processed in 0.018527 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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