设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10083|回复: 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'
- F: B9 U% y8 A, y*/
+ t, T4 j! E8 L2 C* i  b) E0 gis" x* C! k& c$ t: d# M  R
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;: I/ m+ j4 K( s. G
do
1 j: C* U4 `6 [  _2 A' Z        Lan := rootfolder.Internal.Tools.AOLlanguage;
1 i8 v7 Y* R7 G: N' l# v8 A% H        if current = @.Destination -- else return! i4 z( I1 `4 w
        then( {+ a+ Y9 a* t
                @.Destination := void;
( U6 z0 j& e. t2 {' I; Z                if @.occupied then+ Z" f) b/ ]% S! o0 O& p
                        part := @.cont;
5 R" K: O0 R3 m$ Y) V4 M                        @.transpOrder := void;
' R* t/ P; f- s; z0 J5 V                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
" n! k5 @) |' K8 @                                @,root.eventcontroller.simTime);
! p! e  |9 E0 L9 e/ h                        @.HasOrder := false;/ ]# E4 l6 ~) F9 W- X+ s
                        @.DrivingHome := true;
' O) n+ ^- x; g& U9 B. _                        rgManager.tryToStartTransOrder;
' G; ~* O. _  U( n                        if @.Destination = void
8 x( ]& r2 a4 e" h                        then -- no transport order for vehicle @1 N* i$ e& I+ J( b7 x
                                @.Destination :=. g. e7 H; @0 Q' X1 P0 k
                                rgManager.nearestFreeStation(@,track.~);
2 I7 z6 z- \4 Z& f! H( q2 a- h  N                                newDirection(@);   ( k8 n8 R, Q+ T7 Y$ u& o' V
                                if @.Destination /= void then* _6 i& u1 x8 b; u! z9 i
                                        @.Destination.NumReservation :=" v- N! q) Z9 s0 G3 Y9 [% k0 u
                                        @.Destination.NumReservation + 1;
% S: R$ t; z  q# ^. y                                end;
- y% O* X; B; P- C0 O5 K- y                                @.CurrIcon := "drivingHome";
% s; I: O' M+ P                                @.DrivingHome := true;
' n; r# e/ u6 i                        end;2 m/ f  G4 R2 x/ W# B9 z1 Z
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station  C4 @9 G. W" x3 W1 {) L: H
                        part := @.transpOrder;
7 N9 }' n8 g" R4 O3 g                        part.move(@);-- load part
) i4 H" w4 P, J                        @.CurrIcon := "load";8 A/ c' a5 t1 G, B: \0 I7 d
                        GlobalDistObj := part.globDestination;
( G) {" i! \* h' B0 b- \+ j, o% R3 y                        assignLObj := rgmanager.rgAssignL;6 a0 N/ p5 c+ o$ Y/ f7 g
                        row := assignLObj.getRowNo(GlobalDistObj);
: m$ J; a' ~% A# Q                        if Row = -1 then -- since 70
3 _7 Y! r. u# x! t- w                                if lan=1 then0 a. A) R, {& }* e
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),+ p. S0 }3 r, ^3 p
                                                to_str("in der Andockstation: \"",?.~.name,"\""));! E2 Q& f# h! A0 x( b
                                else
  ~. W0 o" U: b7 @                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),2 X) z8 d5 w- Q9 s
                                                to_str("in docking station: \"",?.~.name,"\""));                               
, G; O$ |. E. a2 @1 c                                end;
& J+ W7 u. W: b7 P: j                        else
& F; T  r% D% Z- @                                @.Destination := assignLObj[1,row];( s6 w5 m9 ?- h' Z! A
                        end;                       
# ~, b3 T6 {  p3 u5 _                        newDirection(@);
9 F% K6 O: U) r" z                        @.HasOrder := true;% ^% E- @8 O/ L: j; z0 R
                end;
6 b! P5 J" [5 Z  b        end;
! @. E9 e* E3 ]# ?: m. E6 ^7 |end;        -- of the method- [  p  [* z) W( p4 r
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 0 G2 u9 t0 E1 O) q
, P# a$ T6 [  e( J9 h
这是AGV_putin中arrive的method。
" }/ [% F3 f2 ^$ F1 H9 i# f& _/ t6 f$ w1 e5 F
当到达物料速度越高时,这个报警更多,
; N0 T" _  w( z7 P可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
- W& z, L# B7 e1 Q3 D$ v程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?9 o5 A0 ~4 u. V& K5 }% W
  \: x3 E( |% X: U- l
另外一个小建议,就是move,所有的move都可以这样
  s2 S; P5 {7 @if not move() then debug end
! C1 ?/ m& |3 y) ]这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
0 I- p+ R3 ^, v5 A# j) Iplant simulation中的free libraries有AGV模板,( X; d; X  L7 b: D9 y+ w
里面也有案例。
4 K0 ]1 |4 z9 S" p我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
9 G- v* d/ R: Z7 P( @7 V& v- v+ S2 J$ ]  J% D+ X! w
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
: t) ^2 x8 _) l% O3 \, ]! y: z+ H1 I8 z3 j4 I0 [
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
9 @4 @; X: L* k+ O5 u这是AGV_putin中arrive的method。' ]; X, B; S# V, Y4 k" t
3 S! |. B6 J- ~' _* H; T' ]
当到达物料速度越高时,这个报警更多,
% d$ ^1 o; j, H5 P. _2 d
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-9-12 05:30 , Processed in 0.014626 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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