设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10301|回复: 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'
7 @# c8 m( O6 I" ^- A8 C# @, d1 |9 D*/* O: c4 ?& o, G2 I' O
is
3 j  I* K$ O2 s5 O2 j& L        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
& s" H  U7 a* C0 w; F% N% zdo) q) v4 v' R5 f8 |- g" R4 V
        Lan := rootfolder.Internal.Tools.AOLlanguage;( m8 I9 K5 V4 I8 K
        if current = @.Destination -- else return
  \: w% J# e$ S( |5 Q- R1 T0 C; _        then
3 O! H, x+ Q4 k$ D/ f- t                @.Destination := void;
: F# V, N4 z) E" x# |+ x+ ]                if @.occupied then, t$ C$ M6 z+ W; S
                        part := @.cont;
" y8 s9 y# Q% `% W. N  s4 T* P, Q                        @.transpOrder := void;7 o7 Q5 B( }4 `
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,* C: v+ A# }8 l- s  f; d
                                @,root.eventcontroller.simTime);+ T4 y/ h  M3 I$ \2 }. h
                        @.HasOrder := false;9 R9 I- H/ ^% o- v3 X
                        @.DrivingHome := true;" k" I+ Q/ p3 E8 N
                        rgManager.tryToStartTransOrder;
) r' z3 y% M; B; S7 T                        if @.Destination = void
( ?5 [) a7 Z. W, F                        then -- no transport order for vehicle @1 E4 x1 M* f: O0 ^/ i+ T
                                @.Destination :=
% Z: g: ]" h0 B5 z- F9 }                                rgManager.nearestFreeStation(@,track.~);5 o8 R8 Z2 Z3 l3 ]6 l( z, u
                                newDirection(@);   7 f# {, D' X5 n" V: `1 d( O
                                if @.Destination /= void then
, T4 g2 D- ~. Q. l" {                                        @.Destination.NumReservation :=
$ y) l- M6 ^7 O; `; W& r                                        @.Destination.NumReservation + 1;
7 z0 }+ d6 c* w                                end;9 n+ o1 j1 W2 R  N" x, W
                                @.CurrIcon := "drivingHome";4 n1 ?' r0 k7 z
                                @.DrivingHome := true;: W: G# f; D; {' W4 a
                        end;- @% H- o8 `2 }$ q3 d* b+ @, T
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station+ G; k- g/ M+ Q: g2 Y/ j3 e
                        part := @.transpOrder;2 x/ K4 _6 B) j4 G; f9 p
                        part.move(@);-- load part9 H9 f# L* i+ G  @. o( @
                        @.CurrIcon := "load";! ?) ]4 ]) i) A4 I
                        GlobalDistObj := part.globDestination;# F) H' [7 d5 j1 c  e4 j1 O
                        assignLObj := rgmanager.rgAssignL;8 t3 E- k# \2 ?" U4 C
                        row := assignLObj.getRowNo(GlobalDistObj);
: R8 X  {) j) f3 b$ y" B: i  u                        if Row = -1 then -- since 70
1 ?$ v# |! f: q' _                                if lan=1 then
  _( U; X8 T9 D2 p* G* p8 o                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),+ l# `' G8 ?/ }/ u2 y) b5 A
                                                to_str("in der Andockstation: \"",?.~.name,"\""));9 I. S% q. t3 }: _  U: Z
                                else
) P! y* m0 t, C9 C                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),% G! Q3 R, I; E
                                                to_str("in docking station: \"",?.~.name,"\""));                                ( x1 U0 _6 ]& D6 Q# U. p
                                end;" w* R5 X  K  Z
                        else) m1 G. e3 r/ b! W
                                @.Destination := assignLObj[1,row];; h5 w% Y9 u. A' b6 [( G) t
                        end;                       
( r4 D' c7 O! }. Y, I; k5 k+ ]                        newDirection(@);6 j$ d' r* w/ H. D( u4 k9 a* ^
                        @.HasOrder := true;& w8 M9 R1 E. A! A/ Z9 E$ ^+ _" Q0 r
                end;
# S0 c7 Y! v' z1 d: d& o, h        end;- e- c7 v& F2 V* p
end;        -- of the method
2 A5 n, b1 ?0 B7 G' r9 K
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 ' Y1 x6 i9 Y. x% X1 S) x2 ~

' j4 T7 I& z- k3 o: @8 ]这是AGV_putin中arrive的method。
4 D6 R$ B& i7 ^
# p4 c" F$ R9 m6 n5 z, O: s) Y! I当到达物料速度越高时,这个报警更多,( u0 c# G# N4 O6 P! A- A3 H
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。/ \4 m; s+ Z9 W5 |% M
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
( Y) W: z, o( Q' E+ e( B! i: c' N2 F1 ~5 ]! X0 K
另外一个小建议,就是move,所有的move都可以这样
- ?% v5 u- f, H) q- V( K% r* I8 _if not move() then debug end) f; K  D9 f* M" h  i5 p
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
( G! _8 v+ n9 dplant simulation中的free libraries有AGV模板,
  d$ f9 o" v  k9 f) n. _里面也有案例。
( z3 o3 H" n0 }我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
- Z. q+ H3 m1 p, F+ ~0 @5 C, y/ L; p- m5 q
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
% L* [/ j& F. u* `4 U6 o
: x3 o% \$ n) F7 u# v: a/ D那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 . \2 V$ r% U! ]
这是AGV_putin中arrive的method。
6 G5 U5 A8 ~/ L; m: g5 ~8 A! P8 Y  a/ A  ?1 [, E
当到达物料速度越高时,这个报警更多,

* C7 W& }; ]# e另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-9-25 18:50 , Processed in 0.016746 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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