设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8865|回复: 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'9 G  @1 s/ Y1 R- X6 i
*/
+ F; t7 _8 J' P8 I/ F1 O. F4 ~. `is
: H4 R! Y0 {8 M) ~/ J1 c  o3 L% p        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
4 a; }6 x5 d  b6 c+ v" K3 l# @do
$ L: L$ L' y, y8 W        Lan := rootfolder.Internal.Tools.AOLlanguage;, C9 V: U8 Y+ B
        if current = @.Destination -- else return
9 x: B) d  \( \" W        then
$ _7 B! k0 e- j3 L# }. l2 Z; @                @.Destination := void;6 _1 C" i- t, _" C5 H
                if @.occupied then$ \! v9 g% d5 w! |* f7 f  j- q, u
                        part := @.cont;
- h- ~2 y1 b% `0 W' j# l                        @.transpOrder := void;
: N/ h+ m+ T( L  o7 F. }$ e1 f& p! I, C                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
  g5 Q9 f% ~$ b$ Q5 n                                @,root.eventcontroller.simTime);2 ~  l; }" @2 }& |9 y# {2 G
                        @.HasOrder := false;
" v) h* ]9 \6 m& j4 ^                        @.DrivingHome := true;
1 A9 X2 Q# n, d0 B2 _( a2 c                        rgManager.tryToStartTransOrder;
0 z) E. K" f' r1 ]3 u# I, G                        if @.Destination = void! C9 G# X" H3 g* l; k
                        then -- no transport order for vehicle @
& n2 Z) F2 p' T  L% t                                @.Destination :=( M3 t7 F5 ?; j& k
                                rgManager.nearestFreeStation(@,track.~);
4 {5 S9 {' p: l$ Y9 S5 j7 o2 H                                newDirection(@);   0 s0 D4 c% y" _7 b2 S, C
                                if @.Destination /= void then2 W7 c& y; w/ D; y
                                        @.Destination.NumReservation :=# O: J* y5 k( r
                                        @.Destination.NumReservation + 1;& m, m' t2 z4 t* G$ B2 H3 u
                                end;; R8 P. t" C$ y9 I' l1 |) w# d; @
                                @.CurrIcon := "drivingHome";
3 ]* s% h. C5 c                                @.DrivingHome := true;
7 w+ {' V5 [# ~. t                        end;
7 z1 q8 v# T5 D) ?$ W1 H! R3 g( T                else -- the vehicle @ is empty, both vehicle and part are in the same dock station7 R  V7 E! m0 U" U' a# i
                        part := @.transpOrder;3 G2 G+ v( t5 h- j+ U/ u
                        part.move(@);-- load part6 S8 _* V: B# u. d) D
                        @.CurrIcon := "load";
7 O& G6 Q' T2 P) X                        GlobalDistObj := part.globDestination;3 ~) p7 s4 q; y! A) h5 b
                        assignLObj := rgmanager.rgAssignL;+ V+ I# @6 X, p" o7 L% g- @
                        row := assignLObj.getRowNo(GlobalDistObj);
. ~$ i! |( e& l: K9 }/ o                        if Row = -1 then -- since 70
, ~5 n9 ?* Z- _( R                                if lan=1 then
( l) \. I& a9 B                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),, Y/ k5 @) {* Q) r1 a! k9 H. y' x
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
6 Y5 f$ U) [, S: d9 t: D, Z0 I                                else3 E1 P* d9 g0 p8 \" ~  i: K
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
6 _# Y, w1 H' x" n5 L5 g                                                to_str("in docking station: \"",?.~.name,"\""));                                4 N* ?8 i9 Y2 ^  B* j; {
                                end;
3 s  e' b6 ~0 O( _4 U3 |% K                        else$ Y. x$ U' a7 e8 P. i4 v, l& J
                                @.Destination := assignLObj[1,row];( t( N$ @! v6 x, c
                        end;                        3 B6 A# w9 i( g' Z3 X2 S1 p. k
                        newDirection(@);, r% H( F6 X6 B( Z& m& L: v' {
                        @.HasOrder := true;5 c+ e3 y, Q# S( X& D6 _
                end;
; A' C6 E. Q: i8 M" ]" H        end;: F6 b/ L" `! m3 w/ F" n
end;        -- of the method
( u7 {$ y3 g) f/ A# {
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
9 k$ c$ T& o. J4 M
0 z4 ^  z  w4 z9 ^这是AGV_putin中arrive的method。
5 q9 }7 a* G! X$ Q  e  M4 w7 m; F+ Z( {6 h' a! m4 Z" H( t# P$ R1 D
当到达物料速度越高时,这个报警更多,# ^5 [+ C8 P# _* n
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。/ H" n9 O; W5 O* c5 h, K7 [* j
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
) _) x: {0 m7 E/ o
* x' I' {( W* b另外一个小建议,就是move,所有的move都可以这样# T9 }( v* V/ Y) Z' n; q
if not move() then debug end: i( l5 Y8 D7 d3 F
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
: h& D! p3 v4 [plant simulation中的free libraries有AGV模板," s) d# y5 x& D6 t8 c
里面也有案例。
: y) D% r* E1 _8 d0 e/ g我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。, {4 G  b0 m6 {% r: `
7 v5 z  [% M# n9 d" ~: d
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 ; D1 Z2 V9 W+ `5 W$ M0 T
! w8 u2 A' F. o. G( e
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
( `& o8 r5 k' y% U! U这是AGV_putin中arrive的method。* ^! w3 i8 v7 ~9 s  x/ a

' z4 c' r$ I# K* a) h5 ^5 N当到达物料速度越高时,这个报警更多,
4 p) w. I! z! n1 c
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-7-1 04:16 , Processed in 0.018290 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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