设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8096|回复: 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'
+ ~% H) D; S; a) A; v' }*/( G, Q; M) M8 T4 L
is" Y4 ~' |0 C: U" c5 Z6 T5 V- S1 Y
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;! [7 D5 S/ U( j& o2 |7 E4 y7 V3 g
do- V1 e# k! g& h% P5 L
        Lan := rootfolder.Internal.Tools.AOLlanguage;
! V+ P  d% O) l/ c; A+ H! \- ?        if current = @.Destination -- else return9 h: E. Y* o* ?0 S; p( s
        then
7 k- x6 I1 l" c. i7 d. i                @.Destination := void;
4 h' e! O3 L2 j! n                if @.occupied then
4 h* L1 T3 j) W9 }& [                        part := @.cont;
+ E: ~) b5 g5 l! R0 ^                        @.transpOrder := void;% F' v" R( J* L4 y+ [/ Y/ t$ F0 @+ d8 v
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
% L/ \* I" n0 B$ i% {# I% n                                @,root.eventcontroller.simTime);$ Q% `* v* G* w6 e0 X& X( b3 E5 R
                        @.HasOrder := false;  o) D; Z4 R- i. {  ]: k6 ^1 f- A
                        @.DrivingHome := true;
& p& D; {7 ^$ E; w6 T2 ~                        rgManager.tryToStartTransOrder;
2 ^6 X& g9 [- _( d3 Y+ O                        if @.Destination = void9 V7 G  R3 f: [8 t; O5 N* D% d
                        then -- no transport order for vehicle @
( D$ U! a3 \9 M. I! ^9 g                                @.Destination :=
+ ^5 y7 R5 L. |9 D( U                                rgManager.nearestFreeStation(@,track.~);5 X7 c9 R( e$ s
                                newDirection(@);   
: Y: T7 m& d8 q- O' ~                                if @.Destination /= void then
7 L, S* w6 w3 s7 K                                        @.Destination.NumReservation :=  s( B9 h) Z0 E' v8 f3 A2 \
                                        @.Destination.NumReservation + 1;% Q! h  A) k" {8 z4 r& P
                                end;
  y  V, k; ?3 n3 w4 v                                @.CurrIcon := "drivingHome";
- O3 z* q4 c1 ~                                @.DrivingHome := true;, P. `: s2 }% n5 t3 v- w+ ?6 V
                        end;
- I* q6 L/ B8 l! f9 s                else -- the vehicle @ is empty, both vehicle and part are in the same dock station4 L0 m* C. e3 w0 ?
                        part := @.transpOrder;
8 ~" R2 \$ N  q                        part.move(@);-- load part( M4 F  I' N6 A. b$ B5 F* b( a1 Q
                        @.CurrIcon := "load";
& E. z5 ?2 d6 L# J7 d2 w                        GlobalDistObj := part.globDestination;
! c' a1 E7 T7 q$ |! ]; I# L                        assignLObj := rgmanager.rgAssignL;
, Y; z2 m2 Y6 c/ x  r                        row := assignLObj.getRowNo(GlobalDistObj);
) I& Z4 W2 `) c/ s6 U7 [, j. |1 b  g                        if Row = -1 then -- since 70
% m/ }( j; C! W# g% M                                if lan=1 then3 A7 f5 X% f& @. e" [" h
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),% H# \0 r4 Q# N, T- ?
                                                to_str("in der Andockstation: \"",?.~.name,"\""));$ @. t4 V% l' ~6 O3 s% ~% t
                                else  ]% c0 R+ g, J  v0 D: H+ n  \
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
  K: Y- j& Z) Y! [8 S' u: Z                                                to_str("in docking station: \"",?.~.name,"\""));                                " o5 a/ }( j8 p! C. |; K9 }
                                end;! ~1 T/ A! B3 C
                        else
9 L  o* o0 k! M7 L0 {- m9 E" z: R" j1 {2 F                                @.Destination := assignLObj[1,row];
; i. y/ |* y) Z! w+ u                        end;                       
8 X0 V" ~+ ~) ]/ V- ]. z  n                        newDirection(@);
0 A. i. b8 M2 ]" b$ d0 D                        @.HasOrder := true;
! y1 t! k# m7 f; I4 E( [                end;
" q" `4 h6 Y0 l  c" _" U7 T+ `        end;' d" Y1 j1 r5 h. F- B9 u
end;        -- of the method
1 y7 c/ c% ?2 s0 v( ~4 ~
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
; [0 \; _/ ^% ]
, ]/ W  F* M9 o8 w这是AGV_putin中arrive的method。
/ U$ z3 Z" F  v0 U+ l# O) `, f0 v: q+ B) \( o* W- }+ _+ Z
当到达物料速度越高时,这个报警更多,: w8 C- w& d0 t, P/ o; j
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
; q3 p9 X5 X! I- j程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
# h9 o. l( c6 d6 j6 S# B
- @+ }4 w" \! K6 _( r另外一个小建议,就是move,所有的move都可以这样8 Y4 ]/ o; H) s$ N
if not move() then debug end9 a* i4 Z9 e' S0 E
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
7 x4 U" |+ d3 m: m3 h5 jplant simulation中的free libraries有AGV模板,% H6 d! x: D- [! V$ v  w8 s
里面也有案例。# w( M7 E' u) N8 g
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
' F$ A- z% ~2 u- i2 a" f. \* Q
4 E+ @8 p/ ?8 V我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 0 Y( P( k6 x1 o& h3 T+ F
5 U/ U- ~! v1 d
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
. e, [2 f6 T2 e4 p* K0 `3 g这是AGV_putin中arrive的method。! A0 B5 u; f( S& Q

: h$ i, ~% d, E7 v8 |" u  D2 V5 B当到达物料速度越高时,这个报警更多,
5 x; S3 ?3 a' t' }- B
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-14 16:09 , Processed in 0.019299 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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