设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9946|回复: 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'; x! W& b+ j1 |8 d% d
*/# s) i$ g5 `8 D- _; U7 @+ ?
is* s8 u( h7 f& g, ], W6 g
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;$ F5 r$ H: x0 s& c( `0 K
do; [. ~2 k' y$ t& _3 x( q
        Lan := rootfolder.Internal.Tools.AOLlanguage;
2 r$ X, \6 V8 J2 r1 y        if current = @.Destination -- else return: s5 q! P& O8 I
        then
! R2 n; w5 Z: a! C* Y9 U( k) p( i                @.Destination := void;  i- G  m, z' W! _- x
                if @.occupied then7 v5 }4 P6 U2 o5 f
                        part := @.cont;
; D, r0 n# a+ x2 a6 b. y                        @.transpOrder := void;
" m7 v' l) ?( e! p                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
  j: G. I  H3 P) F4 ~  U" k% u                                @,root.eventcontroller.simTime);
. T( X$ ]# [, V% o4 N                        @.HasOrder := false;- f" c1 z& D  a+ V" R
                        @.DrivingHome := true;( X! n  h6 X/ v! v* D0 B
                        rgManager.tryToStartTransOrder;0 y' u3 Q$ J. e% F' n4 a: r
                        if @.Destination = void
4 s; s* ~$ p9 E1 y% h8 I                        then -- no transport order for vehicle @
  l+ `2 t" N; M  h# @2 \                                @.Destination :=6 `" v: g/ {. _& R; K
                                rgManager.nearestFreeStation(@,track.~);
+ w- q4 B$ }% }- R2 l5 q0 e                                newDirection(@);   
* t( ~- X, N/ [+ N$ c; V                                if @.Destination /= void then3 F; ~9 u+ x& a: O, m- `
                                        @.Destination.NumReservation :=& i4 N/ _# D* n+ T( Y
                                        @.Destination.NumReservation + 1;' c% \2 M& o# Y0 a
                                end;
# s- B, ?1 ?+ q% c                                @.CurrIcon := "drivingHome";
  o( o1 ]4 E, t                                @.DrivingHome := true;
6 n0 r7 w4 p' h3 B+ {: G                        end;1 H0 Q$ x& m" G+ j% b6 F
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station6 I# T! u* a- {  E
                        part := @.transpOrder;& T5 Q7 _" F  }+ V2 A; e2 m
                        part.move(@);-- load part
; E- M( [, `# w0 G                        @.CurrIcon := "load";
. p9 `: X% a2 v                        GlobalDistObj := part.globDestination;: F& D. x: d1 b, J+ }$ x. W
                        assignLObj := rgmanager.rgAssignL;* l% z+ ]7 v- X
                        row := assignLObj.getRowNo(GlobalDistObj);% w0 n1 Y( g2 s2 `
                        if Row = -1 then -- since 70
6 D2 e3 M2 @8 k7 t                                if lan=1 then
5 _7 l) ~2 c8 G9 v) |/ t0 t                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),- Y7 O5 C' ^3 e( i
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
' w) i) t' t4 U                                else$ ?8 d+ m' ~" S+ t+ ]) Z1 i' I9 S
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),/ y$ H! y# m& T- J7 N$ G6 Q3 N
                                                to_str("in docking station: \"",?.~.name,"\""));                               
9 ^7 d* k4 D+ C: h* V8 s                                end;9 U* J1 v: R: w, x3 t% H' q6 F& |
                        else
  R( F$ F6 k5 S$ z. v" f                                @.Destination := assignLObj[1,row];8 C& D& L; Z2 K6 u/ B, c" r8 b8 y& Y
                        end;                        , Q/ z" i) O6 D$ `8 g9 ?+ }8 S
                        newDirection(@);
0 \8 W1 x3 c% g7 |$ o' ?+ F                        @.HasOrder := true;
  i2 U+ K% C9 x1 t                end;
3 M8 F6 e7 g) ?6 d        end;
1 K4 L  F, ?1 v; T. E- wend;        -- of the method
9 g' f8 f; h3 S8 |; M
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 1 E. |( B6 z& I3 {$ O% b& E- s
5 v) y- v7 N' i# ^/ U
这是AGV_putin中arrive的method。/ z' Y4 f# G$ w/ c

& C2 Z) j( {3 p& J' g; d6 T( c当到达物料速度越高时,这个报警更多,) y  \/ G: _! ^3 t7 L  D
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。  t  u' F) A$ u6 j$ ~
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?4 `* ~: ]- m, d6 @
1 m% @9 \( L  _4 o+ u$ T
另外一个小建议,就是move,所有的move都可以这样
8 B' p5 K2 V' P8 J  b4 M# Uif not move() then debug end% w! r5 y6 e2 G
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。5 S# j3 Q  E" J  y4 F8 ]
plant simulation中的free libraries有AGV模板,
4 X  V" J1 K9 n  h: c里面也有案例。
) N5 u; z5 N# `) r( Y- B我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。. t+ u. t7 q8 ?! Z, b! ?: \

+ [) x, R: [6 H' S我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 / v! N1 C2 T( J

. S0 X, I0 F; h  N+ U那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
; A7 [# k9 Y4 {2 O这是AGV_putin中arrive的method。  G8 m! z+ `- ^9 S, a$ A

) g" Z+ b: q' I+ w  }/ s7 v当到达物料速度越高时,这个报警更多,
' n' _4 Z' M/ y
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-9-3 22:44 , Processed in 0.015891 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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