设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9091|回复: 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'+ E4 S. S  @4 @. i; `" d1 J
*/) b8 m( W6 M; ]5 j1 p6 }- m
is4 b" T9 n, q; L/ C) a3 o* E
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;4 F' @8 n) _# A' N/ ^
do% n; m$ r- n8 I" o& L
        Lan := rootfolder.Internal.Tools.AOLlanguage;0 u- U2 ^$ Y5 }! ~9 O2 u/ H9 @
        if current = @.Destination -- else return
' l1 X5 |$ M2 k5 x  p! J  x        then( S# c# n/ B' f* _
                @.Destination := void;- Z* A$ d" T( c! w2 a5 c+ M
                if @.occupied then) U. U" p4 J# U7 u
                        part := @.cont;
/ v9 G, Q# |8 Z4 r" R' h9 a                        @.transpOrder := void;
; ]% ~1 a9 _5 i, s0 R                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,% e+ I$ j3 a6 R$ S2 d& R4 V) j
                                @,root.eventcontroller.simTime);
, K! k) _$ T( k                        @.HasOrder := false;
. N, O2 ^% t; w1 y                        @.DrivingHome := true;% K1 |6 H  d, O7 N
                        rgManager.tryToStartTransOrder;1 i2 u7 [6 S4 M1 t! `9 {. L. n7 @
                        if @.Destination = void) d1 E4 j- |5 O% ^2 D
                        then -- no transport order for vehicle @
* q$ k5 u5 Q8 t. @# Q                                @.Destination :=, D% B; r& w. n
                                rgManager.nearestFreeStation(@,track.~);
6 r7 j8 e8 d: @/ ], s# P6 r                                newDirection(@);   / H) A7 I6 }5 ], n9 S  S5 r
                                if @.Destination /= void then9 x  ~9 F5 F6 Z# d3 k; z6 @; K7 \
                                        @.Destination.NumReservation :=
: ]4 ~; Z% A6 T. \                                        @.Destination.NumReservation + 1;
, N  Q# t/ w/ ~  ]# O' _! N# I                                end;
2 S/ \) ?7 _) _/ J" r                                @.CurrIcon := "drivingHome";' G  [! j( m3 |1 N! B. V3 q
                                @.DrivingHome := true;
5 T, I, x$ h. E8 L& Y                        end;
; Z5 M& Q9 D5 N2 P5 e* _                else -- the vehicle @ is empty, both vehicle and part are in the same dock station. r9 h) B# w. T& y9 J3 I
                        part := @.transpOrder;
7 [1 T7 a, H' E; g                        part.move(@);-- load part& @4 S" E/ i, B# r
                        @.CurrIcon := "load";1 p, [) N; u6 u
                        GlobalDistObj := part.globDestination;6 m& R: w: e2 s. F6 D1 t7 M
                        assignLObj := rgmanager.rgAssignL;
+ {' _6 p0 @7 Z/ f( P  I* X                        row := assignLObj.getRowNo(GlobalDistObj);$ g& a! ]4 W+ n, z
                        if Row = -1 then -- since 70
  ?2 g8 S2 I# M2 r8 u# m                                if lan=1 then* d7 C. z9 O5 I7 Q* G$ o
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),* k  R8 o7 b* k3 ~7 m$ N, {0 K
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
- T) @$ G+ U" f; x                                else! m1 D' e! s/ [9 @1 Q
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),% d" k1 O6 B5 {- {
                                                to_str("in docking station: \"",?.~.name,"\""));                               
/ B" D& [% G: W7 U                                end;
5 q' u' ]  m( b( R5 \6 }0 o                        else" A/ Z, w; f, a- T8 s$ u1 D) l
                                @.Destination := assignLObj[1,row];
8 Z7 Q: r! f9 x  |8 c                        end;                       
' h* I: E: H. x2 {" t" y  K                        newDirection(@);- a9 T7 m- s) M& V; x& T
                        @.HasOrder := true;" e, U2 H7 U. D$ `
                end;! |5 F- F/ q8 R) I6 D# F
        end;
1 e( u% O$ ^3 C% oend;        -- of the method
) f! Z) J& b* w8 H+ ]
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
$ w  n/ u% z* m
; H/ w% n/ q6 F3 I$ Q+ v这是AGV_putin中arrive的method。* _+ b% l. n9 k* q5 o5 ]4 O

) R+ u7 W; n, w- ^: l0 f& |6 P% e当到达物料速度越高时,这个报警更多,
! M# t/ @. O2 D+ k可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
, ~" W7 A% p4 \0 G7 P+ S- ^程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?+ o/ W5 [/ P. F0 K

7 V+ _5 C  e9 @. [另外一个小建议,就是move,所有的move都可以这样9 a. j4 O% o! D4 _( m# w
if not move() then debug end  O; i! {: U4 d8 `6 E3 F
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。0 H  q& _+ z8 ?" [! u# s
plant simulation中的free libraries有AGV模板,! Y' G& @/ o& |% `* R8 p
里面也有案例。
, R+ V$ M) T0 _0 P5 A' t: b, O我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
0 O0 T  h9 T7 U- q1 ]' f! T. B& S+ T& p4 \+ [0 t
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
" X4 I" w" r2 g9 o9 t1 e) m! I3 v! D: t. Z
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 6 n$ ~! |/ z1 F9 x* T- j8 d
这是AGV_putin中arrive的method。$ g& P  [6 Y) H+ q; o$ f6 A
+ l% P: j  [; t* g! I& Z8 p6 T( Y
当到达物料速度越高时,这个报警更多,
# V9 {' a# M7 p3 ?; S# Z
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-7-13 06:44 , Processed in 0.016306 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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