设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7381|回复: 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'$ u5 ^8 C2 x/ B" d" V2 z9 R% N
*/
9 \, j3 T! }9 @+ ~4 {! E# Jis
0 f. D5 w  w# E  k$ q9 z        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
# K& q# N! h: ?  z' cdo2 I% g1 I3 b3 _( ^
        Lan := rootfolder.Internal.Tools.AOLlanguage;8 D8 m0 M, `/ s# X* \
        if current = @.Destination -- else return. U# R9 h& Y% R! y6 n
        then8 G8 j0 ?- T7 m* A' b: [1 l
                @.Destination := void;7 Z. t1 _% T  B+ q
                if @.occupied then4 I4 ^- b: v; k2 V# \& {% R
                        part := @.cont;
% K4 R, q3 U5 b+ Q! A! _7 W                        @.transpOrder := void;
! J- l/ N' e1 K' Q6 Z7 z                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,% u- n4 M9 u$ G7 X7 ~( Q1 |) I
                                @,root.eventcontroller.simTime);
/ v  i6 y7 y  N$ w8 d# \3 q; l                        @.HasOrder := false;
1 K0 a: z7 t' ^' d$ `$ b( x5 [                        @.DrivingHome := true;2 n8 q; O- _- a4 X
                        rgManager.tryToStartTransOrder;
! p7 i. _6 u+ U                        if @.Destination = void/ i% ?. p- |( y0 p6 J6 c+ \0 J
                        then -- no transport order for vehicle @4 V" p6 }; P$ [5 q: L! z4 N  [) o; _
                                @.Destination :=
; Q; v" m8 U+ p$ S                                rgManager.nearestFreeStation(@,track.~);
# o# q4 [$ A& g                                newDirection(@);   8 s2 k! [  c# I& Y9 P( y& j
                                if @.Destination /= void then/ _( h& ]9 T" |9 ?* G
                                        @.Destination.NumReservation :=5 o. J/ e/ ~2 ^* F% l% M
                                        @.Destination.NumReservation + 1;/ q0 ?% B- ]) J; Y( A
                                end;
5 \# W) w: M# h) T3 l3 e( f  Y5 g2 ^                                @.CurrIcon := "drivingHome";
) c9 B5 J; Z. }                                @.DrivingHome := true;1 z9 X5 W+ e  N  t7 G, C9 w7 ?4 O
                        end;
5 ^, ~4 ?1 T5 n2 H: |                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
( d& i9 g  v: R4 E- s" Q                        part := @.transpOrder;
' L% b' ~; O6 A8 g7 B1 Y% u                        part.move(@);-- load part/ S* i7 t/ r4 V; R  A: A- Z
                        @.CurrIcon := "load";2 L. d7 C& b( q$ z4 ~$ P
                        GlobalDistObj := part.globDestination;# k# g7 `* h+ Q6 n: T
                        assignLObj := rgmanager.rgAssignL;
" ~: g4 Z" @* M6 k2 F                        row := assignLObj.getRowNo(GlobalDistObj);
7 K6 B1 n  D4 u3 H# P/ n  |3 K                        if Row = -1 then -- since 70. a; r% a9 h# i- b9 f
                                if lan=1 then( u; ^4 _* k. X# x
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),) c9 Z8 R7 e8 q/ ^0 O. @
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
8 r6 x0 o$ Z, I- {9 j                                else) ^7 b$ ]1 n- S5 W
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
1 d/ O& [% A- I) d+ l                                                to_str("in docking station: \"",?.~.name,"\""));                               
, w8 @- U' w' V9 r+ N                                end;
% E3 Z7 K3 B. N! ?$ B" Z8 E  [                        else6 |" i: \( u) `: d  S
                                @.Destination := assignLObj[1,row];
% a% Q, P' X- O, h% N                        end;                       
5 X. b) f! N3 r: T                        newDirection(@);
: o8 ^$ e: l! U& P; _! L) Q. \                        @.HasOrder := true;
- x& ]. D, ], H0 G                end;& a2 q5 D9 U( s6 X- r) F: U
        end;" r& ?4 d: ~; [$ S$ h: o
end;        -- of the method  Q+ a* K5 d' v. L0 s$ L6 u
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
$ c0 h1 b, X7 K5 ~# Y' U% {- L# i( B! P$ C
这是AGV_putin中arrive的method。5 x+ v/ j5 n7 }) ~' ]( ~+ V
% J) k0 X/ P; ^
当到达物料速度越高时,这个报警更多,, D' T3 H* n' g! j
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
- i- r3 q1 l! ]' |程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
8 ]( |4 I* N* ]% K0 {
4 Z& a9 ~4 t% x4 M2 t" R+ x另外一个小建议,就是move,所有的move都可以这样
, J0 D/ x) @5 T) L+ uif not move() then debug end
! E3 ~/ e) ^1 c这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
* X$ V8 Z' P- i4 d& Aplant simulation中的free libraries有AGV模板,
6 r* F+ T. @: ^) e; _- V. G里面也有案例。
; t1 [" ?) Q# {. X3 D我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。  f& {, F: ^) V6 t. n. `

3 b1 T- _4 ]# r* W我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
3 \8 d5 ?% Y. h$ P9 ~4 U2 I
( A: ]. u1 R( l3 \/ j4 M那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 $ Q# W, M' p( d% n9 U2 N
这是AGV_putin中arrive的method。- b, ?0 T$ t/ ?1 u' f
; i( [+ r6 I" g/ S3 E
当到达物料速度越高时,这个报警更多,

2 q4 b7 v  T: W0 h另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-8 14:44 , Processed in 5.060404 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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