设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8886|回复: 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'+ X7 Q9 S' ?, ^7 x' K9 v( y
*/( _; C  V5 Z9 Z6 ~4 k, u- W
is
: H" P& g6 N1 C" Z1 p, L. }        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
1 J& }* b2 V8 o- x: |7 u# Y' kdo
: [/ ]6 e8 u0 t        Lan := rootfolder.Internal.Tools.AOLlanguage;
! P: f1 T6 w* U5 C% G        if current = @.Destination -- else return
7 h# j  I. I' [4 z2 s; V8 k        then3 U: w& |9 O5 n5 q  C! Y( ^( N
                @.Destination := void;+ ^/ Y: }& O- V& E3 f7 n; Y
                if @.occupied then
3 ?, P, {. S1 p9 G1 f                        part := @.cont;# f% j  s3 \% F) g& [
                        @.transpOrder := void;9 M' k1 e2 ~# {1 Z2 q3 C* g6 V+ ^
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,% ]$ G0 ~8 E$ D" x) S
                                @,root.eventcontroller.simTime);1 _" ]" E' [) ]) |( k- _
                        @.HasOrder := false;1 e. {: C: t4 H2 S6 {4 y4 @& A
                        @.DrivingHome := true;6 p9 X! i) p% Q" w
                        rgManager.tryToStartTransOrder;
$ }+ J0 C  F) K# }' C4 t/ @1 R                        if @.Destination = void
- j, @" N. A+ O- U, Z: q4 h8 D                        then -- no transport order for vehicle @1 D" }! u* x* }7 @, e
                                @.Destination :=
% `5 Z3 h1 f" V  V& h' J                                rgManager.nearestFreeStation(@,track.~);; o0 P0 \) k# @. j* e
                                newDirection(@);   6 Z1 d8 d7 x8 P5 w$ ?8 w6 v& ^& H2 V
                                if @.Destination /= void then. d4 I; o* X( }8 _; q2 E7 H7 k
                                        @.Destination.NumReservation :=
6 }# \1 A* T4 |* X$ i                                        @.Destination.NumReservation + 1;& ^: V' [9 f% _8 m& V5 K5 H
                                end;' k2 U  n0 E3 s6 K# D6 _4 h' F
                                @.CurrIcon := "drivingHome";
9 n) y# y7 F1 w                                @.DrivingHome := true;
& |" Q& \/ H4 v2 J) s; a, q                        end;
8 O4 x/ c" ~5 t, n1 Q) J# C+ D- m2 y5 Q                else -- the vehicle @ is empty, both vehicle and part are in the same dock station6 c- d* ~/ Q9 D: T6 `7 W
                        part := @.transpOrder;7 Z+ q8 m6 {- n  y( N8 R
                        part.move(@);-- load part
  O4 T5 k- C5 c, O6 y/ l1 D                        @.CurrIcon := "load";/ ~3 Y- ^  [5 M1 y. {
                        GlobalDistObj := part.globDestination;! |7 {1 A6 L$ f1 l
                        assignLObj := rgmanager.rgAssignL;  r' f8 d7 _; ~# w) W
                        row := assignLObj.getRowNo(GlobalDistObj);9 i, Z) i4 Z% Q& ?: y1 b
                        if Row = -1 then -- since 70
9 d+ J9 a  n6 A8 Z' m- d                                if lan=1 then  z, I+ P. M9 w2 x( l
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
# z1 X6 V  R1 v( ]; z                                                to_str("in der Andockstation: \"",?.~.name,"\""));
& p& K+ K; L+ W% e* W$ _) l                                else
8 R' Z% `( v1 T% L9 k                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
& X; v/ [! R8 Z8 j4 d2 k                                                to_str("in docking station: \"",?.~.name,"\""));                               
! t% L% n- I8 E1 Z- C                                end;* @+ T& @& j9 X7 }4 l
                        else
1 P' n* w- S+ w" T/ P. @                                @.Destination := assignLObj[1,row];; K) e4 h" O6 e$ w' d, k
                        end;                       
5 w/ O6 t, z* {8 E5 Z" t* O! i6 B% b                        newDirection(@);( D- K4 Q9 p! c1 X
                        @.HasOrder := true;
  o! x1 z$ A' m$ A  h  N& ~' e                end;' V4 H- L7 i8 Y7 K7 c  {
        end;. c) J9 ]8 Y7 U+ C
end;        -- of the method
1 b1 B! z- L5 ]) m2 N
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
9 h& {' ?2 k: c% m0 E3 g' A; X: a& f/ M1 H9 G& X0 O9 N. c2 d
这是AGV_putin中arrive的method。
) G6 `* v* u( ?
4 u, Z% I& O) R$ b当到达物料速度越高时,这个报警更多,2 i* m" }% J2 @. s: o( p) c
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。3 w, V* g# |. Q+ g
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
- V2 K2 W! U$ s! Q$ K( L- U( p7 j
另外一个小建议,就是move,所有的move都可以这样3 F0 ^$ `) r6 Y$ g( @2 @3 q
if not move() then debug end
* w! t/ S2 o5 N! P这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
1 B- w( a' e6 P7 s# W6 u) bplant simulation中的free libraries有AGV模板,
  ^8 ]% ~* x6 G- V* ^5 p: C里面也有案例。/ i" g5 f- d: b1 k
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。% c) [3 V& A5 p& ~. Y

* Z( D1 h1 X- e. U  u  [我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
) u6 r% ?; `  y  d6 V$ c# f0 }. J$ g3 D/ |. B/ ?# e
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
& ^3 ?$ L4 G+ ?+ _! i6 J; V" [这是AGV_putin中arrive的method。
' J: y1 P; n/ e/ k, C0 w0 R/ \' l# K; p5 G$ G  q* h1 K
当到达物料速度越高时,这个报警更多,
, I" @% f) `0 I. G4 e; Z
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-7-2 14:12 , Processed in 0.016207 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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