设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8844|回复: 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'
4 |% S' n- W; u; u: f& Z- ~* J*/
; \7 i2 r6 N# N3 G- ^- m% u# q( tis
# Q4 }: Y: h7 J9 t        part, GlobalDistObj, assignLObj:object;row,Lan:integer;! X3 x8 T7 ^; c/ F; Y# T, [
do
% A* M: A* }$ I" i# p% N7 M, z! z8 ~        Lan := rootfolder.Internal.Tools.AOLlanguage;
( T# D3 m, x' @1 n" V        if current = @.Destination -- else return6 J" u: I. x& `( S! _0 ]: t7 Q
        then
8 z4 C( I2 V8 |% R, f+ Y' g                @.Destination := void;  V% r% Q* c/ P/ s( X! m
                if @.occupied then) F  W# z2 D# A2 Y* p
                        part := @.cont;
' B6 q' \$ v8 C1 |                        @.transpOrder := void;
* y& G  f8 m# s                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,( P) u+ N1 p/ q( h2 o, ?9 z# z; l
                                @,root.eventcontroller.simTime);
- w4 w% f; |( c2 i) {                        @.HasOrder := false;
( w% y( H8 r8 D! t- o1 _                        @.DrivingHome := true;- B/ G2 B3 T5 i& j: ^0 s
                        rgManager.tryToStartTransOrder;
4 |5 C9 C" m9 T! C; v* m# Q                        if @.Destination = void
& ~$ e' |. a( E6 P8 x" Y                        then -- no transport order for vehicle @: M; M6 y, d' X( o5 ?( S
                                @.Destination :=
3 e4 A2 i- y# S" Q7 ~/ \  B, d# H                                rgManager.nearestFreeStation(@,track.~);8 S% b) u) O! w; n' `! l: g
                                newDirection(@);   
& ~! a* c0 V3 e; ?8 o                                if @.Destination /= void then
1 C% y1 m& w( {/ o- v8 ?! ?                                        @.Destination.NumReservation :=- ]/ U: ]3 g, A' L$ F7 L
                                        @.Destination.NumReservation + 1;6 G2 s5 A/ j+ P& n/ K
                                end;" _$ d8 x5 g$ p1 f, f5 ~
                                @.CurrIcon := "drivingHome";. P; B- }: U# G/ f. D
                                @.DrivingHome := true;
& F& l6 R2 }# ]9 K" J4 l; d                        end;$ w, y( e) C& x: }4 |: M
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station6 r5 U4 x) m( g& e* F
                        part := @.transpOrder;; K% A2 f. d3 m0 w- C
                        part.move(@);-- load part8 T  L, N$ l7 H
                        @.CurrIcon := "load";0 Q$ r( Z- a2 F0 Z7 E6 p( f5 ^
                        GlobalDistObj := part.globDestination;3 ~5 f1 y& F( _2 r" S
                        assignLObj := rgmanager.rgAssignL;( R, ?( a" ^$ g' R6 `- {' J9 K
                        row := assignLObj.getRowNo(GlobalDistObj);
% f0 l, Q" W. D- P* P! C' n                        if Row = -1 then -- since 708 n% Y2 J0 F' w0 c! @; C
                                if lan=1 then
% x7 v2 o5 V" _2 e  L                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),# I" m. U$ F: u: r( f% z  d
                                                to_str("in der Andockstation: \"",?.~.name,"\""));5 F) [% N0 T) m- i( t: J$ x) r7 |
                                else) r0 Y6 b0 W% a- D$ i
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
/ M0 K1 z2 R' q" {  [! P                                                to_str("in docking station: \"",?.~.name,"\""));                               
$ h! ?* Q2 w2 P; z- Z5 y) s                                end;
0 ^+ z5 K% v0 K- m                        else
: }" l& I8 f6 g, K! n8 g0 D) F% I                                @.Destination := assignLObj[1,row];
/ g3 T" e6 C9 N. q. j$ V                        end;                        / S3 {8 m* V; y6 u
                        newDirection(@);3 H7 ?" r  c7 s( }3 A, V
                        @.HasOrder := true;
5 J& Z3 D* E5 c7 d                end;
# J3 h7 {! E! K* i: V        end;0 [) X, }+ }+ I  r  u, K" `, F
end;        -- of the method; f) ?! R, z- m# t' H$ Q8 M
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
% n' @2 N5 x! L) b  m5 v
1 \+ r+ K8 ]# E# H8 _1 v这是AGV_putin中arrive的method。" q; D9 V. k! p! ]
* P$ I2 l! ~# y( F
当到达物料速度越高时,这个报警更多,
) z  G" G$ ^* N可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。# X: _1 q' x9 S+ k
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
4 @: ~6 O+ v2 h8 j/ i
: j1 \/ H, |  B# O! Y' m另外一个小建议,就是move,所有的move都可以这样
6 h* q( q/ E* h$ Y3 n, Aif not move() then debug end
1 W& P! }7 {; ?6 S* w4 n这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。3 R& ^0 A; i$ k) ?: S# |: O
plant simulation中的free libraries有AGV模板,
* q: k; k; d+ a- [# U4 i$ m$ }里面也有案例。
" X/ v1 k& [5 L6 I1 e我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
, p: X4 T. X% f  F8 B' d. ^0 m# ~! R9 z5 s6 p- }0 B& u
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
" B3 h& x- g3 b) R, H! c" l; S2 D5 Z5 B' G7 K
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
! T: d8 Z9 t. \' l5 z7 ~1 g. K3 R这是AGV_putin中arrive的method。
$ y4 [& k9 T  g' A$ |# {5 `1 ~4 J' t
当到达物料速度越高时,这个报警更多,
2 O* \  @* W+ i* \2 F8 m$ c  i; ^
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-29 18:53 , Processed in 0.016190 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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