设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8610|回复: 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'+ ]) d8 r5 k' N/ C( z, X- I8 k$ u) q
*// Z9 D" A0 G# q
is
9 ?6 }& c- [' C8 V. y# b        part, GlobalDistObj, assignLObj:object;row,Lan:integer;9 F: f7 ^- |5 T
do
0 c& _) U3 `, c9 m  u" a        Lan := rootfolder.Internal.Tools.AOLlanguage;
( |4 C1 w1 v$ P/ l/ g% ^        if current = @.Destination -- else return6 h, T2 Y% ~2 n1 p
        then
, V7 E9 t6 o9 o; M; K/ @) q                @.Destination := void;9 M# b: k& R8 V1 H& [- N1 q" Z- i
                if @.occupied then
/ U, D7 a5 ~0 ~6 Y                        part := @.cont;) _& a$ ]) o( m$ a4 u
                        @.transpOrder := void;
* s8 h" \2 M7 P8 \                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,: M6 L3 Z' s3 [4 V. i4 m
                                @,root.eventcontroller.simTime);
6 s8 R: z; C1 v                        @.HasOrder := false;+ _0 s2 j: t+ x0 B, S
                        @.DrivingHome := true;/ W7 y" o" D9 _2 p/ p7 h4 Z
                        rgManager.tryToStartTransOrder;1 K1 d7 K3 T& n  N1 r. w0 t
                        if @.Destination = void
& b" Z5 v; V* Z" u, y& {                        then -- no transport order for vehicle @! `& u6 M) F" p
                                @.Destination :=* L, v( \: l; A1 }, v
                                rgManager.nearestFreeStation(@,track.~);
% [! o# I/ U. ~1 [# P; e                                newDirection(@);   $ K& V; h) Z0 Z: a# z& [3 a# J2 D
                                if @.Destination /= void then7 a- s  W( ]' B6 P: d4 q! g4 W6 v2 _
                                        @.Destination.NumReservation :=
( N4 E5 R. R* H$ m1 w                                        @.Destination.NumReservation + 1;( H2 K6 V& l) a3 _
                                end;
8 p! V9 L# T$ `! B                                @.CurrIcon := "drivingHome";
  {1 g7 E9 y( d. u( l' D                                @.DrivingHome := true;
9 e( j! c' F$ n! x6 Z4 O* o                        end;( a, P# L2 F' J& e& P. Z4 Y
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station/ u4 ~& c6 ]! Y( t% d# L' ?
                        part := @.transpOrder;
6 [- M5 Y" Z0 s; p1 W                        part.move(@);-- load part
# q; c& b* q5 D5 g                        @.CurrIcon := "load";8 f" P" i7 A, \; u' ]0 W" D
                        GlobalDistObj := part.globDestination;4 ^2 ^" ?0 k7 g* O5 u: u' e; c
                        assignLObj := rgmanager.rgAssignL;$ ~( A9 C3 H2 L7 r5 v  S, |/ K2 d
                        row := assignLObj.getRowNo(GlobalDistObj);( Q$ x, L" ^2 O& M5 f$ Q4 D9 O
                        if Row = -1 then -- since 704 C: N0 p7 v2 x1 k1 T
                                if lan=1 then
2 i, l5 r9 m5 _$ L                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),4 i* O$ d! {3 }. F6 q$ V8 L) s0 J0 G( F
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
. M% p) {/ V, b0 G2 C                                else
7 c$ d3 {4 f/ I/ {                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
2 Q! D/ D2 [; l  e                                                to_str("in docking station: \"",?.~.name,"\""));                                $ f5 {: g# L' E
                                end;
: U  N, V8 |* P+ A                        else8 F9 m$ n$ w+ V5 Y% |+ ~
                                @.Destination := assignLObj[1,row];+ J+ t5 u3 G3 h9 \/ f( N$ O8 v
                        end;                       
5 W, D) y: Q+ u  A3 n( D0 \; X- ^2 I                        newDirection(@);( M! ?3 j: B% U# P0 s* a
                        @.HasOrder := true;- I1 `& h( ]  _, f+ A1 r$ k' v0 g
                end;1 o& x  M4 W9 Y  F# u& s( _( X
        end;. z  c0 b4 d  m* V+ I2 e
end;        -- of the method
1 E. O& k# i+ W' c
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
! \  Y( A# n) n: j0 T. K9 O) `; {) ]8 r2 T  }7 R: Z$ b  t
这是AGV_putin中arrive的method。
0 |. X: c5 N' [  J% E5 v' H
  N1 {4 [; Y2 h- U# Q4 v# L当到达物料速度越高时,这个报警更多,- E. C5 e2 G. f% t
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
5 ]0 b# N! q6 K4 k  `1 C9 R2 @4 f程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
, ?8 O& Y$ @  F7 O9 _0 E! J: A
8 l, z3 z' o; k另外一个小建议,就是move,所有的move都可以这样
1 k- k% u+ _  Yif not move() then debug end
( p+ M. r* d. J这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
- s, R, F2 K1 [) c2 z  m2 ?plant simulation中的free libraries有AGV模板,; w, g# J! F& J2 @0 {4 }
里面也有案例。  p1 c4 Q4 K# `% N! v
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。  m7 u) M5 L& Z* [0 z: G
: Z% V& B& N: }7 ~/ e- N. ]
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 9 ]9 K; C7 `' L1 g: J+ F, _

0 r4 z3 e! f1 h0 n5 A4 k那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
- J" z+ x- P4 `这是AGV_putin中arrive的method。2 K3 r7 e- V7 i. n

" c* d2 U+ I" a% H4 Z1 E+ f当到达物料速度越高时,这个报警更多,
# k7 ^' c- X  P# Y& {# v! R# n: m3 H
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-15 14:10 , Processed in 0.016728 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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