设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8889|回复: 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'
7 D" D& `6 b+ L& x*/& `$ L. N1 f2 t
is
  d* W& H5 D( s8 J. T        part, GlobalDistObj, assignLObj:object;row,Lan:integer;6 W1 P6 F- ~6 m; O) q: w
do0 g8 y: Z: i5 ]. R8 S! f
        Lan := rootfolder.Internal.Tools.AOLlanguage;+ x8 i4 b, Y) g9 F- ?$ ?- j* b
        if current = @.Destination -- else return/ G! d) L3 H' v7 C1 t) S$ x* W
        then1 R0 J. a- D' b1 Q3 |9 F7 t" T
                @.Destination := void;
. o1 }! M  v$ a5 Z7 V& x/ ^                if @.occupied then# q3 Z) ^* e6 }5 C7 ?* p
                        part := @.cont;
7 A4 ?9 m- ?2 X# Y$ r                        @.transpOrder := void;2 A. r. x6 l  m5 |2 z+ M
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,$ t3 M% U+ y7 K2 H! r% Q
                                @,root.eventcontroller.simTime);( T4 r7 {/ M' g' s( n; W" p
                        @.HasOrder := false;
& c! U* m+ x% G) ?                        @.DrivingHome := true;
2 n6 O! r4 Z/ K) E5 P" M, g                        rgManager.tryToStartTransOrder;
( C  `- H7 L' Q8 e; K. ~2 j                        if @.Destination = void' s8 j; N: w0 P8 E' ?
                        then -- no transport order for vehicle @* r; m" C4 L7 i) J
                                @.Destination :=4 A7 m9 J& o; c+ X: Z; R
                                rgManager.nearestFreeStation(@,track.~);# c0 B$ X  K0 ?# J
                                newDirection(@);   + d7 h, l9 Q( K0 b' H" u3 V
                                if @.Destination /= void then! a6 n6 p" V: j: t/ H( R
                                        @.Destination.NumReservation :=
( ?  `( F) ~  _) V                                        @.Destination.NumReservation + 1;
0 T9 r7 p8 Z' G5 H. S                                end;3 g; X0 w6 F. _& r) `7 J
                                @.CurrIcon := "drivingHome";
+ |6 Q- w& _# O3 P: q( \, p                                @.DrivingHome := true;/ e7 I5 a- N# {/ k, P9 a; i) e! v, u
                        end;4 [) o) T! O& v) s$ P
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
2 k) e7 P! A  J; E( a5 t. @! C2 p                        part := @.transpOrder;
, n2 Z8 b+ ]3 R% u% `                        part.move(@);-- load part; k9 F- r( M+ I: z, z
                        @.CurrIcon := "load";
2 u/ L: O) d* ~                        GlobalDistObj := part.globDestination;
2 v: p( z# x4 d; n                        assignLObj := rgmanager.rgAssignL;
* k( o( s. m- x4 H2 f$ ^                        row := assignLObj.getRowNo(GlobalDistObj);
5 n5 U! `' w9 u4 d                        if Row = -1 then -- since 70) |1 h! g' I6 J2 N& d" i% S
                                if lan=1 then
" z  A) d3 F& [2 H+ N1 M9 L) b                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
( L+ ~- ^0 v) t$ |/ a( r                                                to_str("in der Andockstation: \"",?.~.name,"\""));
$ w* y. k! R2 L, f* r- ~                                else
% f" h  \! |8 ^4 r3 Y& [                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),, U9 r6 o6 s4 s, n
                                                to_str("in docking station: \"",?.~.name,"\""));                                9 Q0 J* L) ~1 c" G' O% S& p: `
                                end;
2 B8 K; I  S8 P' G" o) h: R                        else. D  H0 D, g7 I1 \5 J+ U( Q0 T  C
                                @.Destination := assignLObj[1,row];
6 G; v' }5 s7 j( V! q: C                        end;                        # k/ T* O2 I2 W- W2 i% g: x
                        newDirection(@);
# e( k1 K4 Y. {, q                        @.HasOrder := true;
( a" e8 Y/ k5 T7 ]" [                end;
& h6 F4 z8 N7 {% ?+ t        end;0 A8 Q% x% O( t+ `7 l
end;        -- of the method
# y" z' L# w1 ^. `, u2 O7 g
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
: ^% X0 U9 L6 d$ k
8 |3 G( B. z* |这是AGV_putin中arrive的method。
# _* c& `  P  s6 _3 e. m# c3 k/ z0 {6 m2 C7 j; K+ a
当到达物料速度越高时,这个报警更多,5 d5 v' b+ O0 J1 O, H- A
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
/ R5 G9 x! o8 ^, r程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?. o6 p8 Z7 E+ O5 T* k; J

, h) |" c5 Q$ \2 `. g- F另外一个小建议,就是move,所有的move都可以这样
; \# L" b3 {1 {if not move() then debug end; J* {! Q1 M7 V& {5 [
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
/ O2 L# P# [) Q$ n' Y8 C! uplant simulation中的free libraries有AGV模板,
  Z5 {9 y2 n# T里面也有案例。
6 Z' {4 d0 f! e( E' D我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。' K4 A; h1 a: x& U- V
3 B* b; p& y- t9 I
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
- s  O5 b( ?) ?* [7 v/ o) y) M9 H8 c$ [5 P; }" }9 c! p
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
  I# v8 |- p% B4 K/ v; e这是AGV_putin中arrive的method。5 G0 h# p! _4 R# \" z

1 ?4 B6 P5 X* Z* W当到达物料速度越高时,这个报警更多,
- V9 P6 a0 b" x2 Z) `2 j
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-7-2 16:20 , Processed in 0.015822 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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