设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10109|回复: 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'
9 E, q+ H. N; D& D2 F: u*/
4 C: ?  Z8 E: C" j* ^: M8 c) mis
' i; w) a/ i- D$ O' [        part, GlobalDistObj, assignLObj:object;row,Lan:integer;1 q. A% v8 v8 u1 ~7 d
do+ Q1 ], W( D4 j1 w. \' J* G
        Lan := rootfolder.Internal.Tools.AOLlanguage;
$ {2 L* o1 l; |* B        if current = @.Destination -- else return
. _0 z- i! r3 X7 |6 U" }" E; X        then
$ `" o7 X% d) l9 {- c, N7 x( V* {6 q                @.Destination := void;+ G7 z2 Q. R+ v5 j7 {' A
                if @.occupied then+ F/ C! a0 l3 S2 o2 F
                        part := @.cont;
  X3 S; \4 Q1 q& C) S  g! L: I& r                        @.transpOrder := void;1 j& ^2 W3 F7 B1 f. E* x
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
) y- @: i; m+ k; V: b4 F8 f                                @,root.eventcontroller.simTime);
) l7 }+ M. I1 i                        @.HasOrder := false;% Q1 k1 |) E" P8 i: k- L
                        @.DrivingHome := true;
, a7 ~1 Q: L$ O! S                        rgManager.tryToStartTransOrder;* m* a8 m& D$ C2 M& x/ t
                        if @.Destination = void
& f; I3 R* `9 L, I                        then -- no transport order for vehicle @" {  L8 y+ |% S
                                @.Destination :=. o7 T7 o0 D2 Q' \- B1 \
                                rgManager.nearestFreeStation(@,track.~);
/ F3 f" \8 n( h' [                                newDirection(@);   
: w8 I6 O5 Z! I: G( [9 X3 C                                if @.Destination /= void then
- ?$ P0 J. j5 B7 K2 z* `. k                                        @.Destination.NumReservation :=% }2 F0 R0 ]; m
                                        @.Destination.NumReservation + 1;2 B2 ^+ D- c* C: d" ]' B
                                end;$ Q2 P) W  A6 s  m
                                @.CurrIcon := "drivingHome";
: J  @5 N+ Y0 |, ~+ @& I! C5 F                                @.DrivingHome := true;0 c0 W& t/ f0 x; t; A
                        end;
9 l4 D8 h* V$ D6 t3 }9 ?$ }+ m9 ?                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
. u9 d0 k8 r/ L/ D! q4 R                        part := @.transpOrder;
  D, [+ N" i5 e8 P% O                        part.move(@);-- load part4 F4 ]! f; m8 m
                        @.CurrIcon := "load";
! V$ u2 c7 {3 z3 r' ^9 O                        GlobalDistObj := part.globDestination;6 e0 Z- v' T; g
                        assignLObj := rgmanager.rgAssignL;
* P3 m$ @. n7 w! I, F                        row := assignLObj.getRowNo(GlobalDistObj);( A1 G8 ^8 K0 B7 _
                        if Row = -1 then -- since 70
2 `0 r% f, K+ I# @, v                                if lan=1 then" U- ~6 h6 u' h& u+ J
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),. m5 |1 [' m" M7 _4 b
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
, q+ l- R* W) p; R9 F* q" k                                else( \% y% B% h0 q9 Z. ^4 H
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),3 |6 M! y+ ~+ y8 z3 [
                                                to_str("in docking station: \"",?.~.name,"\""));                                ) d- @  U" |1 N
                                end;
4 S2 p! O: u$ W( g5 R$ h, L                        else
, t. s, W8 Z0 Z* ], [& N' [$ m                                @.Destination := assignLObj[1,row];- ~2 p; ~; B: n( I  ?
                        end;                        ; ?' Y* B1 s- H. a* a
                        newDirection(@);& Z4 Y3 t3 Q3 M0 v7 A3 k
                        @.HasOrder := true;
3 }/ c, Q! S" O5 y& j/ r4 X9 F: F                end;$ o& V1 l! P! ^7 @" B
        end;
- A' p' r& S, j: t8 x) J& tend;        -- of the method: B- D* d  V4 A0 o
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 ! B" Y. p' P3 z. s

  o/ [; n0 T- Y4 z* ~4 @" y# {这是AGV_putin中arrive的method。; d: L" C+ Y' D& K
, `* u$ P- m3 Q( _3 ?6 I) g! y
当到达物料速度越高时,这个报警更多,7 E/ P8 d0 {0 Y5 c4 K' }
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
/ r# P& b% e6 g8 H2 U( {( a程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
" V% Q1 X) U( W2 m
: i7 H: X2 g$ }, K另外一个小建议,就是move,所有的move都可以这样
& G6 X  o% b$ w2 \8 F0 d0 bif not move() then debug end
. p* p5 e5 G, _9 `* L% U这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
  W6 |% z8 X. ?" P; z6 zplant simulation中的free libraries有AGV模板,* ]* y+ j5 S7 A
里面也有案例。
, G, ~# Z2 k& N) ]$ h我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
. G/ ^( y. D/ G8 f/ E% L, |! V* A) b# r0 G& h2 g4 o' n
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 2 f; u+ j5 K1 o6 t1 C7 }" Y" u) N
5 j, u" i  N# E! d0 u2 _1 u! K" [
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
3 E8 z6 c. Y, I  k. h3 f这是AGV_putin中arrive的method。
( P" K/ g8 x' p( o) u* o- H* u0 [5 ?' p" r4 a# Q) s* R
当到达物料速度越高时,这个报警更多,
8 g# ?& @/ ]; D
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-9-13 22:54 , Processed in 0.021385 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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