设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10051|回复: 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'
$ T& G3 N$ ^7 [*/1 D- D5 s$ z1 I& B$ n) X
is0 M9 ^1 Y) s5 H
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;; R8 y# z& ~# v1 N: [9 \8 h
do/ C2 T% C8 z; _% o3 g' y
        Lan := rootfolder.Internal.Tools.AOLlanguage;! h# K' f3 a( f6 V4 y* [. @
        if current = @.Destination -- else return0 _# i+ }+ i9 S0 l) x3 R
        then  @0 P, H& e, O4 d
                @.Destination := void;
' X  W# z8 l0 A3 `1 H5 W                if @.occupied then
& r% z! P* r$ w5 _8 u% s                        part := @.cont;8 j: H2 Z' h6 C" w" i+ }' {& r9 C
                        @.transpOrder := void;
9 X8 R, v8 r$ U' J9 M# a                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,5 |' w  [- h# o# `( C
                                @,root.eventcontroller.simTime);
5 i$ [" P! w) f+ U" q                        @.HasOrder := false;
  P% M' E# ]0 H$ Z3 Z9 {                        @.DrivingHome := true;& E/ q4 R, h3 j# x6 l. A( P
                        rgManager.tryToStartTransOrder;
' Q4 c/ D( }- f" O                        if @.Destination = void
6 d9 Q  W) ~' j" f# N" M                        then -- no transport order for vehicle @5 l* F6 y) W% m, Q8 F0 I' g
                                @.Destination :=
0 }' \; h3 s9 ]$ E" S                                rgManager.nearestFreeStation(@,track.~);0 S; s5 F% F4 T- l. a  \
                                newDirection(@);   % N+ @* H2 [8 j2 I
                                if @.Destination /= void then" A: s2 c! D& Z
                                        @.Destination.NumReservation :=
2 n9 M' y- Q2 N, C% q1 ?- g                                        @.Destination.NumReservation + 1;) z$ k1 b4 E" V+ M  K& E
                                end;5 F6 n! x- @; l! g4 f
                                @.CurrIcon := "drivingHome";
  ?$ K% U; T6 t3 z                                @.DrivingHome := true;1 B( ?4 h; ]4 {7 N  O
                        end;
2 H2 L5 t. M, X, x                else -- the vehicle @ is empty, both vehicle and part are in the same dock station3 e& _) Y& g0 t/ {9 `4 V+ w
                        part := @.transpOrder;& g1 _; z1 |# |2 V7 z
                        part.move(@);-- load part+ l+ l. O, D* P! g
                        @.CurrIcon := "load";6 t# _* F  ?# p' Q$ S$ w
                        GlobalDistObj := part.globDestination;
2 D* L4 A2 K: `1 l- p/ Y5 O                        assignLObj := rgmanager.rgAssignL;$ Y# d; |5 @% v$ w  t1 o* P2 e
                        row := assignLObj.getRowNo(GlobalDistObj);& W2 k: z" D$ x* F" J% g" x& Y
                        if Row = -1 then -- since 70  o6 b( I2 c* @; a. R8 Q
                                if lan=1 then, s/ A/ U' Z& ~' g) U+ ?5 k
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),8 a4 s8 y( J. C
                                                to_str("in der Andockstation: \"",?.~.name,"\""));& B- k0 C' n3 G# O  k1 r
                                else
& j* ]0 N+ }8 }, W                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),3 U! R9 v( \$ \; c( v0 d5 s8 M
                                                to_str("in docking station: \"",?.~.name,"\""));                                / v/ M% K3 U- M* u% o/ T" X7 ^
                                end;
5 O: V: ^% l' s3 [% v- {9 c, f                        else- ~) ?& h3 k* Z6 R5 [( |/ V7 E3 m
                                @.Destination := assignLObj[1,row];1 i* y& o' k0 ]0 v
                        end;                        ' P% S- }0 T: M" f' f- P' P# S7 V
                        newDirection(@);; _# V( ?0 l+ D7 A
                        @.HasOrder := true;  k- T& C/ l( F; p8 ?2 S2 X
                end;
# P% ]  T# Q( y$ B9 P        end;
  X) w9 j- o$ c) r0 c) Qend;        -- of the method
4 U5 ?, y  J: o. q
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
/ W/ Y( ^  W2 a& I+ K/ g
8 }1 O+ `9 {7 ^& G) l9 U这是AGV_putin中arrive的method。/ `8 T0 Y  S  O2 L2 c- X

) ]) }- t+ N9 U$ O) r当到达物料速度越高时,这个报警更多,
" I+ O2 M0 E$ J1 e4 l0 X# F7 S9 t可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。) ~5 S1 F8 W/ g* }8 E/ a
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?: a1 k2 s5 u+ M3 P. `1 P
5 Y% [4 J' x4 ]6 ]; Y
另外一个小建议,就是move,所有的move都可以这样
( [$ {. ]. k$ f' X7 w, C& n) vif not move() then debug end( Q* z. C1 u2 K
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
( x/ i8 l/ W' \plant simulation中的free libraries有AGV模板,
$ ]! Q' |& @& \* {# ?4 a2 ]$ c4 i里面也有案例。
# f4 S+ ?# X, s& Z" @我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
4 Y$ r0 P+ X2 u+ N) h$ A- q3 o1 `. g; f* h# c% H7 D1 H4 ]$ V
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 - N6 v# n9 I* X9 [3 H

" D1 L9 W" S, G+ Q- r2 a那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 + b8 e  e, a: S: R) ^8 F
这是AGV_putin中arrive的method。
" `/ Z3 S; h2 B/ A: i1 s
  n' ~$ M  a( G0 E0 X当到达物料速度越高时,这个报警更多,

% Z: n  m. I, [( \3 R另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-9-10 11:54 , Processed in 0.017001 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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