设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6521|回复: 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'6 p, e6 H& g0 {
*/
/ X7 b! a% `6 e, ~- [, U) Zis
8 M1 v5 R) q9 F9 c/ G5 f9 q9 z        part, GlobalDistObj, assignLObj:object;row,Lan:integer;+ N! x* y' X6 |; d) e" @# |
do
! E+ N5 e; x: s8 b: f- |" u1 f        Lan := rootfolder.Internal.Tools.AOLlanguage;( j1 w0 N5 N' M
        if current = @.Destination -- else return# T5 g9 K% q1 l+ `% M
        then# P# d' {; R# k, f# t- w4 A
                @.Destination := void;$ |  \- M. Y! M# A4 o
                if @.occupied then" ~9 k! G/ A9 C5 n7 y/ q
                        part := @.cont;% o- _8 N; Y  m  P
                        @.transpOrder := void;
% ^) f9 P3 i3 g! a                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,$ ?" ?$ H0 U8 S! g- P  V  o
                                @,root.eventcontroller.simTime);
' g2 K# d( @1 Y0 I1 H                        @.HasOrder := false;5 |0 s6 o  G4 p: E( `
                        @.DrivingHome := true;
4 ^3 J5 {& E6 O3 n' h                        rgManager.tryToStartTransOrder;- S. o6 U! N# {- I( M% W6 o  P3 b
                        if @.Destination = void8 g: q) R! V3 ~  `: U
                        then -- no transport order for vehicle @- a" s" @2 P$ f" |- J% [
                                @.Destination :=
0 c0 w* m1 `/ z( u6 E3 ^                                rgManager.nearestFreeStation(@,track.~);/ |: J- F; A1 i' m" J& Y# }
                                newDirection(@);   
' {' I7 S/ v$ K                                if @.Destination /= void then' h3 Y8 U# O' J) C- A$ o
                                        @.Destination.NumReservation :=0 l8 Y' E; j% s: \
                                        @.Destination.NumReservation + 1;
+ P0 _# f1 s* q, `4 e7 E                                end;# {' I) x& S5 U0 o4 v9 C( o- g( M- }
                                @.CurrIcon := "drivingHome";
6 s# u8 |; d* j0 n& l% `* {                                @.DrivingHome := true;7 _$ \2 }# i9 B6 m% C
                        end;
/ D3 k' w; [  h/ E4 f7 R                else -- the vehicle @ is empty, both vehicle and part are in the same dock station  X! j* L0 d7 s$ X
                        part := @.transpOrder;8 h( H8 n/ B. V. ^* n
                        part.move(@);-- load part
8 `7 n: ]1 U9 k* c0 i                        @.CurrIcon := "load";% O( I# m+ v" j. c5 V
                        GlobalDistObj := part.globDestination;. u5 _' K5 n) M
                        assignLObj := rgmanager.rgAssignL;( Z' |8 c; `7 K* L  W! z
                        row := assignLObj.getRowNo(GlobalDistObj);* J2 z7 J- m& e0 Y0 L* V1 w
                        if Row = -1 then -- since 70
1 ~/ V: c$ n* M% N, G0 }                                if lan=1 then1 c' Q. Z! N$ G* S3 H, B% v
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),  a" D0 D9 j+ I6 ^
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
. P- [; ~/ O; {: ~                                else1 N' V8 s6 D- m% l( p+ A" g
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
) u9 ]1 k5 W" H& O1 L' P                                                to_str("in docking station: \"",?.~.name,"\""));                               
& E1 k% W( T0 a% I% V8 e5 h& A                                end;3 A5 f3 y8 z; o% [, z
                        else% I3 d# s' ^+ q8 q% I
                                @.Destination := assignLObj[1,row];
0 s4 J$ t2 l$ i2 B& i5 U  z7 i' N                        end;                       
+ g+ G7 c* M1 q: I; {8 Z. g                        newDirection(@);: A( c: H# P  ^! w: w
                        @.HasOrder := true;
. n( ], u5 Y! c- m) d4 s                end;
7 r9 K! u; y; t! c( M$ j4 x        end;1 f+ d+ k' E( |4 Q6 E" O4 \
end;        -- of the method0 E& q# J& Y" P8 O( ^# U% o; ?# F2 ^
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 6 n2 }( U! z3 T7 e( }
; t5 u' g3 a( f6 |/ z
这是AGV_putin中arrive的method。0 ^# h! Z1 X8 i% D, W& Z/ \
% r: a& h1 M) R3 w! o
当到达物料速度越高时,这个报警更多,: q- O+ W7 K1 M$ G& E
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。% A# e' V+ Q- D! e: ?
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
0 e3 M: n! h; v8 U4 ?" T7 |9 l1 u5 K( X! Q; E. f
另外一个小建议,就是move,所有的move都可以这样
" A  k' r9 [! r3 Aif not move() then debug end) L3 Y% y8 y' H
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。4 T" A+ F& W) e: F4 f0 r
plant simulation中的free libraries有AGV模板,; i4 S- t8 r, l
里面也有案例。- f* E. ~/ M+ ^1 u) e0 W) q2 \$ {
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。9 U8 C/ u7 b9 h; o* X3 W
0 w, o. W. }- L0 U! {
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 # f! D7 U& c+ l
* E; W( W* M4 V4 a; v- j
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 ; k3 C7 h3 H( i
这是AGV_putin中arrive的method。
  V. b) W1 e4 `( D! c5 n
0 x7 d6 t0 ]( r& I# g3 b0 b当到达物料速度越高时,这个报警更多,
0 u7 l) h4 `+ ~' }6 F
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-10 14:39 , Processed in 0.020843 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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