设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6778|回复: 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'
% |& l' c; s  A8 L8 h# ^/ D*/
4 l% b# W! a" V- E2 V* nis
0 y) h! F, k2 [$ u" G) n        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
1 t$ c, W: u& T8 Edo+ b+ B# S: h, X5 F
        Lan := rootfolder.Internal.Tools.AOLlanguage;
: X0 F' f8 i; t. v. u        if current = @.Destination -- else return
+ n  A1 c8 z) s; c" S0 r1 \' q2 V' c        then
4 |; D$ {* @1 k/ w/ X                @.Destination := void;
6 T+ n. x  o9 H                if @.occupied then1 z* F/ V8 e. e9 z) J
                        part := @.cont;/ S' C8 k7 S! K  n( t# A0 Q* V' ]
                        @.transpOrder := void;  t8 q8 ^0 C" Q0 ]1 e
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
. t) j  L4 N4 Q! N                                @,root.eventcontroller.simTime);( ]; a) W6 b: O8 H4 v4 Z! q
                        @.HasOrder := false;
' {6 n" V; Z& L) N                        @.DrivingHome := true;
& x  x6 Y  U& U$ l                        rgManager.tryToStartTransOrder;
+ b9 R3 q8 o( W* U' p                        if @.Destination = void2 f0 c  Z& s1 Y4 d! Z* d
                        then -- no transport order for vehicle @
( q6 s1 v% v3 ^. X                                @.Destination :=$ ]( J1 R) w/ t* d$ S
                                rgManager.nearestFreeStation(@,track.~);
: R4 P& @7 R3 r6 \+ z9 x                                newDirection(@);   ) r  V5 K  U2 I$ l9 r7 N
                                if @.Destination /= void then; `9 L& Z  n$ z( m" N
                                        @.Destination.NumReservation :=
. {' Q0 Z9 V9 @/ U4 p. ^9 K; P                                        @.Destination.NumReservation + 1;
  R9 u2 h/ ^# Y  E/ E                                end;) W" @( b2 y  w
                                @.CurrIcon := "drivingHome";# h- D9 N, d$ X7 S/ b( B: J1 I& f
                                @.DrivingHome := true;
. C1 B! Z( |7 h9 k4 x+ g; H' I& }                        end;+ {- q$ @3 n' u9 y( {8 Z5 Y
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station5 ]$ {5 D7 D* L8 i
                        part := @.transpOrder;3 v) U+ B! }; y9 a7 C
                        part.move(@);-- load part
; O5 x7 @( E9 A- O& m6 K2 m9 _5 _8 s                        @.CurrIcon := "load";5 m/ e* U# j- r( a4 k" H$ d
                        GlobalDistObj := part.globDestination;
7 ^6 k- K* D  X5 M- M' }) G" p                        assignLObj := rgmanager.rgAssignL;4 E3 I0 z. K- \
                        row := assignLObj.getRowNo(GlobalDistObj);8 w( e1 Y$ W' F, i9 x
                        if Row = -1 then -- since 70
0 H+ [# z) f9 x$ {3 F) G( b                                if lan=1 then
0 U6 B7 r& l. L# {) O. @                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
9 V( E2 h; R1 a! a! p                                                to_str("in der Andockstation: \"",?.~.name,"\""));
" W9 T6 N& C+ p) ^9 B8 b9 f                                else1 n6 {$ P6 S4 O
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
# D0 N& n5 O8 i                                                to_str("in docking station: \"",?.~.name,"\""));                               
# L* d  g- u8 S1 e: O  G. n                                end;( |; L7 l& Q8 m  Z0 v: N! V7 U
                        else2 z: N- M) j. u" T0 @' O5 S
                                @.Destination := assignLObj[1,row];6 E! I/ u, D" g& M8 X6 d
                        end;                       
- H3 j" V& y9 h                        newDirection(@);$ f: \, F8 ?" ~# Y) ^/ y
                        @.HasOrder := true;
0 \$ z# W5 w5 o                end;
' N! R, \4 a1 H8 w        end;
/ l% y4 f4 e! }9 gend;        -- of the method
1 u! j+ z, A& W4 x5 O+ _& P
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
* ~! e" |2 L6 ?& R  E& X: I& A; N! y5 I# o8 Z2 y
这是AGV_putin中arrive的method。. ?% s! y, I' k0 Q  P
/ }& ]" j& |/ b. b3 T
当到达物料速度越高时,这个报警更多,- \, v* y8 v5 s9 z
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
# g3 r& f+ ?4 g; v# c程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
% S. M& f( X0 `$ p8 }& b4 d+ U; \3 n' B& B! O2 |
另外一个小建议,就是move,所有的move都可以这样
6 S3 k* {. F" I3 O1 B. Z0 Yif not move() then debug end8 y7 j9 s5 ~2 A  i7 |* P9 Z* i
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。. q1 h" L8 l+ _7 s
plant simulation中的free libraries有AGV模板,! L7 G/ j7 G7 Z: W  R
里面也有案例。
( I) i0 U! a& a" j我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
6 Y4 Y' @1 w5 {+ t/ {4 V/ P  q  Z2 k* [4 U' _/ `* r% P/ T
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
: w. Y9 \; o' d! x/ }  i/ D% P7 q1 G
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 + P, M$ K0 v* U! g( P% o' H
这是AGV_putin中arrive的method。
6 }" u3 p+ J" z. W$ ^# W, g9 H5 y3 u2 i
当到达物料速度越高时,这个报警更多,

5 x8 M1 s3 v# C9 G另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-26 06:03 , Processed in 0.018651 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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