设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6211|回复: 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'
4 T5 q" e: w, F- {: N*/
% ^# x# }- }8 n6 W& C4 L' his) V' ?  c9 L: {
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
* k0 m# \$ A0 c- S' ddo
4 V* |. \$ z/ y( ]. L        Lan := rootfolder.Internal.Tools.AOLlanguage;
% Q! y+ M4 x. ^/ q+ H1 q; \7 `        if current = @.Destination -- else return
2 u% f% |9 [9 K/ D4 H/ O        then) M; _, F3 H) \! j
                @.Destination := void;4 Q# @& t9 v1 s2 H
                if @.occupied then
7 x8 {+ J( u9 d' i5 C                        part := @.cont;
- V% _: s6 N; T7 n3 g. I                        @.transpOrder := void;5 V6 Q6 B1 G' X: o4 X
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,! e  e& t, U$ H7 a9 x) N/ X
                                @,root.eventcontroller.simTime);: [" b/ N7 x4 j9 s8 H: I$ \9 F7 x
                        @.HasOrder := false;2 P1 n/ g8 }8 b7 ^) U) {4 Y: S
                        @.DrivingHome := true;% [6 a( {9 |! K& F& O
                        rgManager.tryToStartTransOrder;* x3 [4 \1 N5 p9 P: M
                        if @.Destination = void
% D2 N9 c# B+ ~. X: k% P. h                        then -- no transport order for vehicle @! t( Q2 P  R4 J) o5 d4 g2 p  n
                                @.Destination :=
% ^5 g/ a% R* v: _% G$ N                                rgManager.nearestFreeStation(@,track.~);
" D: z% U6 J2 a" T1 m" w                                newDirection(@);   
1 O# ^/ F, U8 h) \2 |* \: O& R4 R                                if @.Destination /= void then
$ F0 f' C5 v/ d% R- x9 B; F* o                                        @.Destination.NumReservation :=
: G3 H9 k: c: q6 e                                        @.Destination.NumReservation + 1;
5 u5 {3 x+ _9 ?, |# e8 r+ m6 D# c                                end;0 T; x9 |+ ~* {  C- g' u3 y5 |
                                @.CurrIcon := "drivingHome";% \. B2 W* @3 W
                                @.DrivingHome := true;4 w( P! {$ Q, t- |) `
                        end;7 _% p$ c/ Q! I" O5 B( d4 `# b& r
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
: l2 j  W0 n3 I                        part := @.transpOrder;
& Y% a) f3 R; u' s; C                        part.move(@);-- load part
) ~  l* W2 U; u                        @.CurrIcon := "load";
9 T) C3 P; g, k3 v9 k. z) n9 v( f                        GlobalDistObj := part.globDestination;
. V* C; g; Y% u  ]# `                        assignLObj := rgmanager.rgAssignL;. ]8 ^( ^6 }7 W
                        row := assignLObj.getRowNo(GlobalDistObj);1 \9 s5 P5 _3 \' c# ?
                        if Row = -1 then -- since 70  w! ~! h1 i$ v( R  G3 B
                                if lan=1 then
5 }' H7 x7 D" u$ x) r3 A                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),9 {7 z, g' b5 _' x$ ~
                                                to_str("in der Andockstation: \"",?.~.name,"\""));1 H3 x5 z7 r' ~$ b" [- J
                                else; a1 I. i3 f$ C
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
* }( L* y: i7 d* i- |, C                                                to_str("in docking station: \"",?.~.name,"\""));                               
* H+ a/ G+ Q& @                                end;( T# M5 s6 z  f( P5 g0 B" L
                        else! |( V6 b/ X# K( {) h' s! _
                                @.Destination := assignLObj[1,row];
7 c7 _# q2 L4 Q! L+ s                        end;                        7 T* Q# _) b; w; r
                        newDirection(@);9 v' x( n# {7 Y. X
                        @.HasOrder := true;9 f6 Y3 W4 S$ \8 z8 R; @
                end;
& w4 q2 D  ?( s" J" v8 I7 k6 c        end;! e' h$ R& B7 E. g
end;        -- of the method; c8 I( H$ D7 h% o4 C
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 6 V- c1 C$ w& t* x# B' V  N; G$ H
0 S+ m/ Y2 K+ N+ w! O
这是AGV_putin中arrive的method。
  V! T/ y# U1 \7 ]3 s
& y% ^1 @; r5 x当到达物料速度越高时,这个报警更多,: d5 m' P5 R6 z8 C% i" l; I) S) q/ m
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
4 I- I1 a( `' ?4 j# }2 F程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?) I. }) Z+ h, ?+ }# Y

: I" [+ p5 A* v. M/ o, e$ G5 U另外一个小建议,就是move,所有的move都可以这样
/ V: {; ]! |' p. T5 V6 n0 cif not move() then debug end3 f+ \' ^2 y3 y) l/ W, z" [
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
1 T% M, k* {' ]" T. {3 Bplant simulation中的free libraries有AGV模板,) h7 j) |8 G' M& y! L- |
里面也有案例。& i, O* l/ q. ^
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
7 V0 m) H' [8 \# ]7 Q. o5 \: M2 W/ p* F& O: @
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 4 k$ P; C  q( N
4 c- m5 u  L/ a. O' f8 g2 c
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 4 ?# m: ~+ u# x. w% u  _; V% i3 r
这是AGV_putin中arrive的method。' u* [, L- {9 c

) R+ @/ F/ t, h# ^% ^' O( W+ d, p/ ~当到达物料速度越高时,这个报警更多,

8 C' u' ^6 ^( t3 t7 l" Q6 h0 V7 Q另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-1-25 04:27 , Processed in 0.016801 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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