设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7130|回复: 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'
! [2 }9 G, t$ h' c. |*/
, W3 K2 e3 W& [is0 _# l; @/ @; ^! l6 D8 I3 G
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;, d3 c6 z7 b% E" D& K
do
9 w. e% X1 [- G8 e! n        Lan := rootfolder.Internal.Tools.AOLlanguage;
8 |. H) N! N3 @) \4 M        if current = @.Destination -- else return8 C% q- j0 p- w' `. U
        then9 I, N, Z; I% x# ?  v) a( h
                @.Destination := void;
" r- R3 F$ a" n$ S0 ]# U4 H                if @.occupied then
& X2 A' `0 n' J5 i                        part := @.cont;/ O7 t. h+ o+ k% f2 V/ P
                        @.transpOrder := void;
4 V" j- b) N2 b                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
$ W% \3 c" C) E                                @,root.eventcontroller.simTime);1 Y/ @( [8 |/ _' u9 \0 }' Y
                        @.HasOrder := false;
( C+ Q4 ]0 l. K' x& I1 P6 {! R                        @.DrivingHome := true;
  K4 G$ g; P4 n                        rgManager.tryToStartTransOrder;
0 I1 W. l2 h3 P5 Y! r' {! |                        if @.Destination = void
  K, [( j& I; b/ V+ {0 E                        then -- no transport order for vehicle @) H$ n: Y3 Q/ Q* \$ ?+ \2 M
                                @.Destination :=
5 B) Y+ ?& i* c8 ^5 O3 e0 P                                rgManager.nearestFreeStation(@,track.~);
* a0 C* v: ~% O8 b                                newDirection(@);   
. R6 @& B% n9 \& D7 m( Y                                if @.Destination /= void then  h8 [: y* m9 \& |0 T
                                        @.Destination.NumReservation :=* h( g. G7 n+ k0 P
                                        @.Destination.NumReservation + 1;( a" c- `' H* a! i* _" J
                                end;8 Z1 T2 J* k1 p3 M+ @6 e3 c
                                @.CurrIcon := "drivingHome";
3 i: ?8 ]* [' o6 q                                @.DrivingHome := true;
" n4 |+ A( K2 I0 O! G6 r                        end;
, U9 \$ i# N: m! J                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
. |& I4 M  `, J: u& |1 W9 x                        part := @.transpOrder;
3 @$ T; X7 [& s' y4 Y, e2 C1 Q- p                        part.move(@);-- load part/ U/ l: e& o% u0 d# H
                        @.CurrIcon := "load";
$ s( a2 j/ H9 K! p; \3 v- _( [                        GlobalDistObj := part.globDestination;% }9 [4 n7 r) ]
                        assignLObj := rgmanager.rgAssignL;
- B% o$ L2 Y8 D8 V3 ?& r% ~                        row := assignLObj.getRowNo(GlobalDistObj);. Q0 u  e, j; U& U
                        if Row = -1 then -- since 70
9 i/ S0 f1 E2 d. n( m* O6 c5 |                                if lan=1 then
: X! \, ^- n* V                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),$ V5 b. L7 V8 J( f! z0 u( U5 d
                                                to_str("in der Andockstation: \"",?.~.name,"\""));7 {. n4 ]+ L' S5 u, A
                                else* f  I0 u$ j0 ~( c! Z4 w6 @
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
, Y. b+ J3 g% I* `                                                to_str("in docking station: \"",?.~.name,"\""));                                / ?( O7 s& z" k2 X; z
                                end;- J1 c- d* d9 [
                        else
8 L3 U! Q5 ?* t                                @.Destination := assignLObj[1,row];6 w) ^8 t) f5 \& Q" ^. K
                        end;                       
0 a0 O6 ]: W, d9 @  u, C* b                        newDirection(@);+ f* m& d' J3 ?& M
                        @.HasOrder := true;! \) \# M- [" z5 [# [
                end;# b- c  ?) W9 @5 i* l9 C. [
        end;9 q) D* B2 F0 e0 F  M: m9 A* K
end;        -- of the method
+ w  M/ f( o* S2 Y  n2 Y6 N
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 + S8 h) |; P3 W/ G

" F( \3 t7 t3 h; e: k9 T这是AGV_putin中arrive的method。
# L! y5 g* ~  m2 m' `/ d/ x6 k" u/ |; i, p0 x* E& A; m
当到达物料速度越高时,这个报警更多,
7 h; x) k! u2 {! I3 ^- T4 ~可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。* F1 z( C9 s3 n; g$ m8 p4 V
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
+ [" n% \! ^% p  y9 f, A3 P
( `6 U; C$ v+ c# z" V8 }另外一个小建议,就是move,所有的move都可以这样
8 q, V7 C2 ]4 }0 |if not move() then debug end
1 I1 h) Q' {! G这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
0 B! R7 }4 l  r: i! R$ u9 tplant simulation中的free libraries有AGV模板,
; K. Z6 q7 K$ q" g8 w4 y8 s里面也有案例。9 Q2 u4 g: \" k+ X+ n0 h* F8 C- G
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
/ z* P# k/ `6 P6 p+ m7 C  Z' a7 g9 ~3 A; m3 X+ Y; e
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 - h: \( l, T8 N- ]6 }
5 i' r/ ?) o- B; g" D  Y! \6 N
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 ! ^# Q7 P" }1 r( i8 Z- L  y8 W* |
这是AGV_putin中arrive的method。
8 V& ]3 P4 \+ N5 z$ T1 Z# U) x  J9 u7 L8 p$ o$ b$ a- G, I( j
当到达物料速度越高时,这个报警更多,

& K- w% x. e/ `( x& C5 m另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 11:41 , Processed in 0.016768 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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