设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7775|回复: 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'- O; g$ @& ~' J* r% u( G
*// _- L; e0 w* ^/ o% h% {
is
  T' C/ p+ k0 h9 Z3 [/ i7 X        part, GlobalDistObj, assignLObj:object;row,Lan:integer;7 F" b* q; S: G
do& r) {! C8 d% a9 \& K6 U
        Lan := rootfolder.Internal.Tools.AOLlanguage;
5 F4 s5 g# T9 \/ l; X        if current = @.Destination -- else return# r8 j2 m. a8 Y) N% T
        then
) B) W2 x9 M: w# ]2 J) H$ ^3 n                @.Destination := void;$ a, P! u& J4 G7 |3 G* c' m
                if @.occupied then
& K1 {% _! E/ m                        part := @.cont;
$ R% I8 A6 N( w4 k                        @.transpOrder := void;8 n) g- |0 i$ m& ~4 I
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
( q) p3 Q0 I( s( S: H6 C* L                                @,root.eventcontroller.simTime);! c: W9 m% M$ m
                        @.HasOrder := false;
% X  _& e: `: C  N6 y# S                        @.DrivingHome := true;
" X- I4 h# @9 Q2 v  V) B                        rgManager.tryToStartTransOrder;
( u# h7 W; e5 E# o6 i. Q                        if @.Destination = void
7 ~4 R& R; g8 {8 W+ N                        then -- no transport order for vehicle @" p& [) k- W1 B: ]) [0 [7 y9 J
                                @.Destination :=
4 I! t9 Q+ I7 j, G. ~                                rgManager.nearestFreeStation(@,track.~);
# k" s8 K! |/ p1 N( m2 K                                newDirection(@);   
, y! p& o  h) g' F+ F% I5 R                                if @.Destination /= void then6 P4 P# f' F' w, ^$ F$ ]4 q) [
                                        @.Destination.NumReservation :=
" j( b7 h# u# |! I6 t: K( k                                        @.Destination.NumReservation + 1;3 [8 O+ [$ F) Q# x, X
                                end;
) D4 ^0 S3 _) f% M                                @.CurrIcon := "drivingHome";* c3 o& r8 i. D" H' k! ]4 ?7 L3 X
                                @.DrivingHome := true;
" c% }( f% p# i5 Z1 e3 L                        end;
$ @& p9 [2 K5 C. i; }4 e                else -- the vehicle @ is empty, both vehicle and part are in the same dock station% n2 h$ S$ ?  |: t2 ~3 Z
                        part := @.transpOrder;0 S- k1 \8 ~- W  o7 q
                        part.move(@);-- load part( K: n2 n) X) D% J4 e- J7 |/ M
                        @.CurrIcon := "load";
& @# C+ O9 z  `: h8 ]9 p& [+ k" L) D                        GlobalDistObj := part.globDestination;# Z' p+ Q% L$ t' F2 R5 B/ ~: c
                        assignLObj := rgmanager.rgAssignL;0 }  @3 q0 w! w  n, N
                        row := assignLObj.getRowNo(GlobalDistObj);
7 t  {% x% ]- l/ w                        if Row = -1 then -- since 70
/ o1 _# x* _9 }1 l; k                                if lan=1 then
* f  J5 E% M4 C8 i                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),# c2 H; x5 y$ m5 P* Y5 n
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
1 |  _6 \. ~% f0 c/ i& B                                else: M- C! B  v9 X3 u8 h% T" c7 s
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),' |* U  n( H% C& g$ z2 L
                                                to_str("in docking station: \"",?.~.name,"\""));                                , X: F9 C4 a% A, d$ ?
                                end;9 |: C! N" m+ L& X" f
                        else( u/ g: W* h* ?, D( O( T
                                @.Destination := assignLObj[1,row];+ i: Q8 G( T: A6 l
                        end;                        " s2 D& s+ q0 t" {, [6 h1 L
                        newDirection(@);
6 K( e* q6 l' n! H) ^0 i                        @.HasOrder := true;
( {; v/ u& i8 j; D, y                end;
, p( b+ d, J: B, c& k9 g        end;: `( j" n! R/ ?; p! E7 |" n) n
end;        -- of the method
$ l: v) z3 @" k# `1 g# j& e
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 ' S) e4 Z, s* H' ^6 G' a3 N" H
$ |% e# p9 S9 |+ ?& k/ i$ E
这是AGV_putin中arrive的method。5 c, u4 T. I4 K
& x6 R- D' `9 k
当到达物料速度越高时,这个报警更多,
# v: y7 E3 j6 O可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
9 Z# f- X5 J- {程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
& x: c; D. F/ o. K; g+ k' f7 P$ `3 o  Q
另外一个小建议,就是move,所有的move都可以这样
: p2 V* J! t4 n8 Z: xif not move() then debug end" _0 @! Y" W% u7 `# G! ^$ M
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。9 _# \" O5 p$ a1 J
plant simulation中的free libraries有AGV模板,
  @3 Z6 M8 d/ ^  h6 e' o% ^里面也有案例。! X! {. @3 M8 Q" G) v9 J8 g
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。$ E1 ]" E& |' ?! V4 L+ {& z

+ N/ _5 m: N! b9 r% X我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 % H/ P# u* j# W; A# B! ^$ f

4 n. A' O( U! j" L  e6 E! W那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
. V/ @# h  Z! _5 k这是AGV_putin中arrive的method。( K- D0 u/ D$ c# e3 l

' A2 }6 h. _  q7 s8 {当到达物料速度越高时,这个报警更多,

: d2 O3 o8 [( x: v) i另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-28 23:26 , Processed in 0.015787 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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