设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9757|回复: 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'  `7 G# `2 {4 ]
*/6 u" w. r  s4 `1 k6 y! M0 h( ]. s
is
3 {" {# a7 d+ x        part, GlobalDistObj, assignLObj:object;row,Lan:integer;; x) Q( v/ C! u! z
do' u* |" }* o+ f# e
        Lan := rootfolder.Internal.Tools.AOLlanguage;
0 Y7 I$ }  ]3 A9 h' z1 ]: o0 g7 c        if current = @.Destination -- else return% M: u1 e+ l! J: m, j
        then' H( B+ Z9 q! b$ h7 ?
                @.Destination := void;! e- {+ l; r7 o
                if @.occupied then0 r* m9 L- ~' Z
                        part := @.cont;
; p+ r5 Y3 a; ~( Z                        @.transpOrder := void;' `& F1 b2 _+ \+ j
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
7 E9 ?# O' H! k  K% f' @( h                                @,root.eventcontroller.simTime);( F1 T$ n& z& {! I) I; k
                        @.HasOrder := false;
9 u4 v# T; g5 X& s                        @.DrivingHome := true;
* }9 q" P1 ~4 U4 V$ C0 M7 g                        rgManager.tryToStartTransOrder;
& S/ k3 o8 N9 W5 b% R: z                        if @.Destination = void
5 x4 E5 Z! M% j* v  w2 w' Q                        then -- no transport order for vehicle @
! ~! G6 a. W4 N% S                                @.Destination :=4 o6 U) b# V# U7 S
                                rgManager.nearestFreeStation(@,track.~);; j4 J/ P, R7 v$ x# A; I6 ]( j) y
                                newDirection(@);   5 e# N/ n: ]: Z  d- r% A. |4 [
                                if @.Destination /= void then
, x+ D( k& \! s/ K* g8 E. o                                        @.Destination.NumReservation :=7 c( y  `* p( q( y; ]
                                        @.Destination.NumReservation + 1;; R' z% l. U) u5 v
                                end;4 t3 K0 n! |. O# l
                                @.CurrIcon := "drivingHome";
& h! F1 R- u0 I1 }                                @.DrivingHome := true;
- z3 }2 T; a2 ^& t2 A+ f( x                        end;8 T1 _$ e2 z5 O5 X2 i
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station+ ?' O! s% r( Q! u5 M
                        part := @.transpOrder;
/ e4 X- b$ A& O$ `6 _$ l, {4 i& x                        part.move(@);-- load part! N% c8 ^2 U# o! r8 t
                        @.CurrIcon := "load";$ n- N5 K- v  V! T
                        GlobalDistObj := part.globDestination;9 Y  ]  ?/ k1 b7 D
                        assignLObj := rgmanager.rgAssignL;
: J; L' }& ]0 ]  i: D( i- ?9 V, z                        row := assignLObj.getRowNo(GlobalDistObj);
. S( t$ ~3 W5 i) v: ~/ [% h# D6 ^                        if Row = -1 then -- since 70
5 `& p) ^1 z" g$ M! x! [                                if lan=1 then
# e! K- [% M  @2 o6 t6 x% K                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
: A1 \& v. }; C' {& e6 ~& |                                                to_str("in der Andockstation: \"",?.~.name,"\""));
1 v: |9 M& d; M7 s% Y' k& c                                else" v+ {2 u1 \+ M1 W9 B% G, f6 T# p3 A. p
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
: x  A; g( x8 R  L                                                to_str("in docking station: \"",?.~.name,"\""));                                8 s2 ?& E4 D! T
                                end;
- o2 o+ k% q+ b                        else
3 C! q0 ?" `1 x, M3 H- W8 p                                @.Destination := assignLObj[1,row];
" d! g1 H2 E, F' p4 t9 W                        end;                       
( k& u# X1 P2 N3 S                        newDirection(@);
0 l, y" ^  f. i% x2 J4 p& F                        @.HasOrder := true;
% P) M% P# s% J+ K5 r. Z                end;: R$ Y  z4 A4 z2 ^0 {, b( b
        end;9 Z7 @) u$ Q! Y- p! f2 m
end;        -- of the method/ z, d" |$ m: ]3 p* f
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
" I) Z4 ?+ A3 t$ F6 ~
4 {5 `  Z1 b; `$ v( l" T这是AGV_putin中arrive的method。6 t+ {" h1 E( {- G/ `5 t
, O8 I4 X- V% F, \# P; n- b" b
当到达物料速度越高时,这个报警更多,5 o. m7 t, B6 \
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。" L( Z* w# e  T; e1 c
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?2 e! S- |0 d6 ]+ ?

+ v! I: [: f9 F& ?1 I7 w. d7 h另外一个小建议,就是move,所有的move都可以这样
' x2 O: j7 N) Y( H$ c: a; \; Eif not move() then debug end" c% I/ v! f8 b9 l
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
0 j4 [3 Z4 ]6 h/ Vplant simulation中的free libraries有AGV模板,
5 F# Z- {  B) m: E6 _9 Y7 u, f里面也有案例。
5 ~+ [# a- S: @7 D我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。, x5 w/ F8 p4 y/ R

. c: H4 C9 P- {4 \, Z5 u5 q我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
. n/ N; d* ^; ~& ]4 l0 E+ \7 k3 H" i+ L2 h/ @( x8 y
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08   b- N6 H; e# _9 m$ k8 l: x
这是AGV_putin中arrive的method。$ B! [  B4 i: d

7 Q7 Z# J2 Y$ X* `% ~* l当到达物料速度越高时,这个报警更多,

  N1 |* N+ @" U( i! f- O) W另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-22 18:18 , Processed in 0.024868 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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