设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7516|回复: 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'9 c) B% A6 y$ Y1 j" j% r% e5 F
*/' d2 q7 X) l1 H7 z4 h; w! O. Q
is7 v) o$ F, ~$ Q3 k7 @' i
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;  C# n# L" s8 B$ Z
do: H& q  J* L1 C2 ~. @" D
        Lan := rootfolder.Internal.Tools.AOLlanguage;5 @" w$ D/ p% i
        if current = @.Destination -- else return
% G: U& l  G+ n        then
; @: ^% v# W2 p9 q                @.Destination := void;% [/ Q. R3 ^& j) r
                if @.occupied then
' Q7 |5 M# S  K2 U) z6 P                        part := @.cont;5 B, t; A, O; w) B' r9 A/ ~
                        @.transpOrder := void;) s" |* w1 G# V& ?# P
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
- e  x1 V5 ], P( A# _                                @,root.eventcontroller.simTime);
/ |5 N6 x" O& Q8 @+ ]+ E: d                        @.HasOrder := false;" g5 H# D/ `1 I: F) q* _3 h
                        @.DrivingHome := true;
& x! |8 e4 c. R, @1 U                        rgManager.tryToStartTransOrder;
. ^1 x9 D! A/ n" c- j' N6 c9 W% U                        if @.Destination = void' o; A% h6 d% c
                        then -- no transport order for vehicle @
# V5 i  {3 W% z0 w, a7 q. {( E                                @.Destination :=
4 f; g9 c/ A# V! d6 P                                rgManager.nearestFreeStation(@,track.~);  v/ U8 E, t7 l
                                newDirection(@);   + f3 E8 k6 w$ d3 H$ l9 P8 M5 i
                                if @.Destination /= void then
+ @9 L  |! M5 [" ]% V. \6 I/ [2 [& T, B                                        @.Destination.NumReservation :=/ s7 m" y, g" |2 e7 r$ V$ n
                                        @.Destination.NumReservation + 1;! @' _/ e" y, e/ J  }3 Y
                                end;
( p; H  B9 P* P$ r& U                                @.CurrIcon := "drivingHome";7 ]$ d! S; Q% \6 T
                                @.DrivingHome := true;
4 z8 L: Z9 ?5 s; z4 ~                        end;
- B, L8 N; u8 M. L% f9 t3 ?* S                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
' ?: z; r# D" u2 s  `, R                        part := @.transpOrder;* ~! ]/ t: N) u7 ~
                        part.move(@);-- load part) J4 \9 u5 T+ a+ F) `
                        @.CurrIcon := "load";
5 U: a. p4 ?  p( M                        GlobalDistObj := part.globDestination;
# k! o" _5 P7 v5 ~8 R+ W8 x" @8 b                        assignLObj := rgmanager.rgAssignL;
4 `) z1 E- V# \; {( J% R                        row := assignLObj.getRowNo(GlobalDistObj);1 o% ]$ e" {& D: D" W
                        if Row = -1 then -- since 706 e% S8 e: _* `2 V8 a
                                if lan=1 then9 ^* J  K5 h! M$ {1 m: T
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
1 \% Q5 Y$ j0 l' @& ^                                                to_str("in der Andockstation: \"",?.~.name,"\""));* w1 o, L( k) y" \, S. T6 Q& a; }, S& j
                                else  q# r  p& ~/ [" a* l/ s  S- G1 o0 G
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),0 z" I1 P" r6 |" E/ r
                                                to_str("in docking station: \"",?.~.name,"\""));                                ( n( D4 G  W! m1 p2 {1 z$ o) K
                                end;
% m3 e8 G  T0 v. c/ B, h                        else
6 T- L* v4 Z0 N( ^3 t: @/ x, o  V                                @.Destination := assignLObj[1,row];- A9 P8 f! W5 S) n8 p4 v" y
                        end;                        % }! S% L' Y/ x( ?
                        newDirection(@);: b) `4 ^8 C3 a) ?' T( ?4 x0 ^0 j& [
                        @.HasOrder := true;+ y& |6 z+ ~% x* p/ Y
                end;' ~+ Y3 w5 E% p
        end;! ]8 Z$ _7 G# }
end;        -- of the method& M) c) n( @, }% N+ ~/ i: R
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
8 x' V  [# H$ d% P4 [0 `
# q) y6 z# e) m5 `; b$ j这是AGV_putin中arrive的method。8 Q% _4 D) s" ]6 O( q9 }+ u) e
- _0 d# M! W' P) k- V$ R  J$ a
当到达物料速度越高时,这个报警更多,1 k' M) @- ?& u0 z7 T2 c1 l
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。( A0 I& J) J$ J" T  k' ]
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?9 d8 p& s2 L, m# @/ a
/ q4 m: x* E: Z2 M1 [% x
另外一个小建议,就是move,所有的move都可以这样
$ [( Y, X" ~& t* S& h1 c) n. ~- `- h/ \if not move() then debug end
. k6 O) ?: r3 v0 b这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。1 `8 w. B6 A. l, |; n$ y' S7 L
plant simulation中的free libraries有AGV模板,$ J* X* B2 j/ z) Q
里面也有案例。1 Z. [- z6 U& w) F
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
: ^2 s' u* B4 Y; y* b% j4 `# Z0 v/ q, o3 x+ B0 p/ m
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
6 K# v% e& r6 W& g4 U  A; }6 T
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 " ?$ ]) l: T: n7 ^# F& s) z
这是AGV_putin中arrive的method。
0 j# S$ A0 o3 F( `: E
; i/ p  c) \1 f8 i4 a' E当到达物料速度越高时,这个报警更多,
" j- C% U6 C. C1 h
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-16 02:58 , Processed in 0.018010 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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