设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7991|回复: 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'% W: E9 X) _8 Q  ~2 S7 R
*/
8 a1 d2 u) A5 x0 vis4 u2 C( c8 i0 [  T+ G- Y
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;) P( r. o8 `8 l+ M  p. I% ^+ j+ |
do
4 I4 `' J$ ]5 o* ?8 }; {        Lan := rootfolder.Internal.Tools.AOLlanguage;
+ K0 ?( Z4 R. R& X        if current = @.Destination -- else return, e: j2 {- s+ J6 I$ I/ Q
        then9 h9 ~1 g- p, ~# d! B
                @.Destination := void;
' M* }) j* ]* r8 `: R7 m8 z                if @.occupied then3 @4 y3 s# c" C7 q* n- `
                        part := @.cont;3 R: N3 H) f4 D* l
                        @.transpOrder := void;- ?  M' m% S1 D! f. o* q3 h' ~
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
% x; g0 O- w' H6 n' Y                                @,root.eventcontroller.simTime);3 r* n, n" B5 X5 y+ C
                        @.HasOrder := false;
% a: a, p, t; c% g0 r                        @.DrivingHome := true;
* k5 K, W3 j4 E                        rgManager.tryToStartTransOrder;8 w; E" G( Y$ o9 H& y
                        if @.Destination = void8 T# R$ }& k! @% c& G4 c% P
                        then -- no transport order for vehicle @
6 w/ d  F# r3 u, E: ^+ H5 x4 o                                @.Destination :=& a5 A$ h& ^% a
                                rgManager.nearestFreeStation(@,track.~);
; q9 I* `7 S+ f                                newDirection(@);   : P4 Q4 T7 L, Y: K6 j0 T* M
                                if @.Destination /= void then
) l: `1 `; g; y) c                                        @.Destination.NumReservation :=/ K" L6 e9 A  c* r/ p
                                        @.Destination.NumReservation + 1;0 B1 [  D: L0 a0 Y
                                end;! r) u$ ^, R% ~3 r
                                @.CurrIcon := "drivingHome";6 Z" @; D& N, U- W6 X. R9 R) d
                                @.DrivingHome := true;/ R* s( h* J3 v! S
                        end;+ {: O0 y' ^& C% R1 u' [  |
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
- d! J7 H6 Q. X( w                        part := @.transpOrder;6 I5 j( m4 ?, d) }% a5 Q4 y) D
                        part.move(@);-- load part
, L( q$ q/ u( J* @6 ~$ @* O                        @.CurrIcon := "load";# ?% I1 M- K( \3 G
                        GlobalDistObj := part.globDestination;' x$ k0 w9 d: Y; Z; l! P3 X+ `: P9 \' |3 |
                        assignLObj := rgmanager.rgAssignL;) |) `* {* `  f7 P
                        row := assignLObj.getRowNo(GlobalDistObj);
* _6 Y0 _: r! \1 W                        if Row = -1 then -- since 707 R1 @- o3 _3 \' f' w% N
                                if lan=1 then* {( {; q! E6 g* Q
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
" B" H8 ^* R! q3 D' S7 d0 h                                                to_str("in der Andockstation: \"",?.~.name,"\""));' E1 a6 T9 a! m6 U
                                else
' ?4 I$ {& Z( x+ K                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),3 R! D2 F" ^( n8 D
                                                to_str("in docking station: \"",?.~.name,"\""));                               
+ C+ T5 f0 _/ u% E/ d. k' R                                end;
/ f4 n- d) E/ A- t2 J1 f                        else
9 x) y  j! e, E( h2 A0 Q: _                                @.Destination := assignLObj[1,row];
. g( _9 k- p  y$ y1 k. ^6 L                        end;                        ! A# K3 h2 p/ P2 ^1 O
                        newDirection(@);$ u( A" M3 G/ _1 _* |9 E( b7 ^! y
                        @.HasOrder := true;$ y9 w; s; _+ p6 w" l: E4 u
                end;
. |3 F7 H6 o' B) d( J        end;
, U1 W6 Y$ |: {5 x8 Mend;        -- of the method' I( |7 j6 W5 H$ k9 G. i
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
2 F% [: x; K' i3 o2 Q. h- T; p: s  M8 s0 k- O$ [( T5 ~3 H+ s- t
这是AGV_putin中arrive的method。
- d) I4 N+ ~0 |& F8 _6 L% Y# c1 h% ~) f2 |$ i- ^! [
当到达物料速度越高时,这个报警更多,
3 L- y: F: j* \/ r; R' q$ P8 j$ r可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
$ f1 q6 D$ T" Q) L2 y4 H程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?  j/ F1 Q0 `$ G2 q2 W0 N
. {; Z- ]# Y/ X- i7 I
另外一个小建议,就是move,所有的move都可以这样
" x, i2 g. [0 n0 M' E7 B. E. N! L: Zif not move() then debug end( F7 T0 ?2 A0 }5 D- X( x
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。2 j3 u+ i0 ^  [. L. Q3 u( O
plant simulation中的free libraries有AGV模板,# N5 C$ n$ F8 q6 {4 @
里面也有案例。
/ v* g2 N# ^2 `) V# @我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
9 J3 u8 h  b) t  Y# i3 K" v" D7 n, t& C8 v: b( n
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 ! j" b1 h: S, U$ @% O
& w9 j: s# A0 E- B# w( N/ h9 e* s' p
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 ) x7 Q. T2 s0 [+ D" K% M9 T, Z
这是AGV_putin中arrive的method。  q3 Y) k" J' s/ N
& s! p+ ?1 U! L* }/ ~9 D) L
当到达物料速度越高时,这个报警更多,

9 [3 d: \6 a% ^/ z7 F7 r- m另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-9 17:59 , Processed in 0.022337 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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