设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7353|回复: 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'
. s3 m5 g- L2 ~*/
1 h7 j/ w3 }9 ~is& b- c) K' z3 B
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
3 S+ K. w9 g+ a3 g9 T( K  `do
4 x# \: X5 b4 D$ b3 V8 r        Lan := rootfolder.Internal.Tools.AOLlanguage;6 s9 c+ j: j9 Y* A; y+ T! F7 B
        if current = @.Destination -- else return9 X  _& m& j! y' [" S- S: B( b
        then
5 G) I5 F1 u  m' X: a                @.Destination := void;% `' g0 }. o6 ]
                if @.occupied then
9 D' m" ]- I) Y( l                        part := @.cont;
9 Z* B, Z' B9 M+ b9 q' F                        @.transpOrder := void;
( g! b, s7 l# F                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
+ n0 u6 i' ?3 }' \* H                                @,root.eventcontroller.simTime);- _/ [4 G2 F9 Z; J% ~: Z5 Y
                        @.HasOrder := false;
( i3 A* I5 G  b" j                        @.DrivingHome := true;
; g0 H" p5 l7 H                        rgManager.tryToStartTransOrder;
6 ^! e3 m8 I% h                        if @.Destination = void) U9 k0 m1 m1 x/ N
                        then -- no transport order for vehicle @
6 l5 ?3 T- l3 W) }7 |! r                                @.Destination :=
$ @, c, Z$ J9 r                                rgManager.nearestFreeStation(@,track.~);
9 F- `* z- O1 t) S# E                                newDirection(@);   
- k& K1 D/ x9 D( ]8 o                                if @.Destination /= void then: U2 Y! \) @( j: L6 L
                                        @.Destination.NumReservation :=
! Y4 X) o- d! V6 ~+ |$ I                                        @.Destination.NumReservation + 1;0 h5 V7 t/ n+ Z8 E# C& P
                                end;
; B$ M+ O8 Q) k2 F+ X# R                                @.CurrIcon := "drivingHome";
+ G# E3 ?) F* `' t( e                                @.DrivingHome := true;
9 b, M1 p' W, J9 P; E                        end;0 b; }  Y! \4 ]2 Y3 P/ K1 J8 g
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
" E2 h6 O1 h. J: [, h8 t) d3 E                        part := @.transpOrder;5 C7 ~6 r4 C2 g6 z: y- S
                        part.move(@);-- load part/ I7 c2 D. @' g
                        @.CurrIcon := "load";
4 }0 o3 d7 u- w' H6 L                        GlobalDistObj := part.globDestination;
1 ?8 I$ W# Z% w5 x                        assignLObj := rgmanager.rgAssignL;& y/ t$ ~! ]: |9 y! B- J2 V9 R0 ?) t3 k
                        row := assignLObj.getRowNo(GlobalDistObj);
, t4 y  C: n3 S* E" t& m& m                        if Row = -1 then -- since 70
3 d: W' n" {$ |4 G                                if lan=1 then2 p4 h1 _9 d7 e" B- R; Q
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),9 u. ]0 {; n( Q% P; l
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
9 Q& h  S. C  ]5 A7 r                                else& U5 q0 F( E% D5 ?
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
) d& R" e' ~4 x+ D6 J- s' g7 r                                                to_str("in docking station: \"",?.~.name,"\""));                                # C: G) ]4 M5 h7 D- @- y
                                end;
" }* X! r! h; X3 l                        else4 f  T6 h0 k4 ^' o4 X
                                @.Destination := assignLObj[1,row];
4 \& S- P- B4 W8 @                        end;                       
& I2 y/ Z/ x# K+ n  u                        newDirection(@);, U7 S8 Z# C9 r/ u1 M1 [
                        @.HasOrder := true;) @4 m6 M  v, M5 H9 k* j. v
                end;
! ]% b, i; A) @9 s7 y) g        end;
" n" D2 d0 [' Hend;        -- of the method
) W/ l7 ?! r6 g+ z0 r) O5 ?: {
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 * p2 ^+ K3 R+ z7 C- `6 ?: ~

. \# M1 Q  H: E这是AGV_putin中arrive的method。
8 Z2 Y8 \) r! Z. i: ^6 Q/ E1 G! y! b( F! c2 e: k% X. o6 D6 X$ \; n
当到达物料速度越高时,这个报警更多,- E8 b1 i# H& U: c: E" o7 m  x
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。6 c' m, B- P: m0 z- m7 P6 P* I( [: d1 ]
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?8 w2 }) g" G) K: W5 _0 ?
" A5 c9 V& P' r% a( M+ }
另外一个小建议,就是move,所有的move都可以这样0 _, [4 h, d# [( ~# c
if not move() then debug end6 J8 L- M; a- ^# c" u
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。- H5 M5 P- M* B, e7 _* J1 ], c
plant simulation中的free libraries有AGV模板,
* x8 f% s( H7 c* u里面也有案例。# ~( n" o7 ~+ X' Y0 A# K4 Q- T! `
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
$ z  z; r& i% o( v( g* ~3 u3 h  p5 y! H* x
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
! Y- h( R2 [9 N) n1 ]; J& {/ i9 u, U; `5 C8 W1 _
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 3 L2 ]/ d. ^7 g  n% R% i
这是AGV_putin中arrive的method。/ u+ f' S* v" M& A
2 a7 Y7 q; X' I; ~1 r
当到达物料速度越高时,这个报警更多,
; ~; q1 N2 M3 r  l  b" X) a" {
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-6 08:24 , Processed in 0.019142 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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