设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7439|回复: 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'
: j$ O) e, I* {8 H" z! E8 r*/
9 x6 l2 D: c5 r9 ~1 Q% @is9 L7 G2 v) e; S2 }, O
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;) @+ V3 v6 C2 Y
do
; |8 n% ?7 ?# K4 g# _  V1 C, d: p. k8 k        Lan := rootfolder.Internal.Tools.AOLlanguage;3 }. t8 I# d; x0 \* V  }% t. e
        if current = @.Destination -- else return
3 M# C  F# l) A        then, T" `- U- j7 h2 E6 S+ m/ B
                @.Destination := void;. ~$ c+ X( w8 g0 i% c8 n
                if @.occupied then/ x" N; ?8 a9 L% N
                        part := @.cont;7 H; M. T2 {$ ~3 O# P6 s
                        @.transpOrder := void;
$ B4 U" c% j: a7 B5 M+ z: d                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,7 }* c: e( v4 I# P) \
                                @,root.eventcontroller.simTime);
$ g7 x3 Y0 s7 b/ r                        @.HasOrder := false;
7 O1 P' o( C' _  j5 U3 u! n                        @.DrivingHome := true;: {  D4 i3 G: q
                        rgManager.tryToStartTransOrder;0 K5 B4 S9 a2 t" G8 @) V
                        if @.Destination = void9 E# V1 Y) O% c
                        then -- no transport order for vehicle @
7 I$ e, `) o- C- l6 z                                @.Destination :=2 L0 F, H4 [3 e" j4 T( S8 x
                                rgManager.nearestFreeStation(@,track.~);: o3 [6 N, L  M6 Q
                                newDirection(@);   
+ m. R! ?/ [1 E( y7 M1 l3 b                                if @.Destination /= void then; V4 C# o% [. Q) T; x5 H5 V
                                        @.Destination.NumReservation :=$ M5 e# P" W- a. B2 n1 S
                                        @.Destination.NumReservation + 1;
! D" a1 U) f. p. j                                end;
- _9 G" k+ l, p  O$ y                                @.CurrIcon := "drivingHome";8 G. c7 U) |' d$ o- t
                                @.DrivingHome := true;
" p4 V' C- i/ p                        end;( j" I1 o' o! }) b7 u: Z
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
6 [4 v* T# E8 W) J6 {6 d                        part := @.transpOrder;
, Z9 M! A! e$ G9 k" g, a                        part.move(@);-- load part3 h" Z3 b: G- p2 h6 Y' Z
                        @.CurrIcon := "load";
3 o0 I# Z2 B/ r+ J" @                        GlobalDistObj := part.globDestination;( V& n4 F- q' |" m( d6 p4 H
                        assignLObj := rgmanager.rgAssignL;9 T- M2 y/ U- g5 b" r
                        row := assignLObj.getRowNo(GlobalDistObj);
0 e  U; y1 @  [& k  C2 z                        if Row = -1 then -- since 70$ o0 f1 N" g- l
                                if lan=1 then' R0 w8 W& [, |
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
5 u. r2 R: i% R; ]. d- X4 Z- t" A                                                to_str("in der Andockstation: \"",?.~.name,"\""));
& q' Y4 P' @' u9 b                                else
# m* q% N: S- D                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),+ U* _+ D) a7 M$ r4 `8 }* v
                                                to_str("in docking station: \"",?.~.name,"\""));                               
3 c5 y& V  o5 O8 E& F                                end;
; I8 W" X+ R' s% ~; a2 W% ?                        else
' Q( `' h6 p3 x. o6 v- g                                @.Destination := assignLObj[1,row];
- r3 i+ o* L6 U+ e9 R                        end;                        : l& b0 A% _* U2 l2 U8 l% r
                        newDirection(@);
6 Q  W* J' m: t  O3 \( K* ]) A                        @.HasOrder := true;
% J3 W% N/ i7 Y+ x) N4 p/ m                end;4 k1 h; y. M& r% }
        end;% Y4 ?3 j' v/ I4 O* K
end;        -- of the method! {% Z4 C1 d/ _/ K- h* x
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
3 Q2 u$ h1 T- |. s4 @
5 @4 i2 O0 ?/ I% O8 `6 N这是AGV_putin中arrive的method。
/ N8 n6 w, ~/ r! m3 o/ P; v3 T" e0 C9 K6 [" D8 r
当到达物料速度越高时,这个报警更多,# z7 H8 S6 K; E0 y$ ]
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
  u  ]! E0 g' S  ]) l程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
. C% t$ R; p: u5 D3 j/ k* Q, _8 d9 i- A4 w9 V  ^$ u
另外一个小建议,就是move,所有的move都可以这样
; C6 K: p2 A* W, l8 a* ^- Y( H' Lif not move() then debug end' k) {" a. ]6 U% ^+ _6 o- T
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
% g% o+ B* p" |  T' y5 pplant simulation中的free libraries有AGV模板,; G: q* j0 F& J( w" o; p8 f
里面也有案例。
: e. X0 F' h" h+ |* D6 ~我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
* v  I4 x; _' w' E
4 S0 p) S5 b) @9 W% d我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 . H; y3 Q+ z/ J$ g. U4 C, o
& f2 H0 O& ^0 x8 k& C  |- R- F, q
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 ( y" ^! S/ ]% e) F% q0 N
这是AGV_putin中arrive的method。) o/ U6 V5 V; B5 I

/ K( d& @. j) }  p( Z3 [! d9 E+ d, V/ I当到达物料速度越高时,这个报警更多,

. B' `2 L7 D/ z9 z9 c另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-11 12:22 , Processed in 0.020082 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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