设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10092|回复: 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'0 t- I, [3 j$ K# `' B
*/
4 Y$ M0 y4 Q0 Bis
5 A6 ]# o; p7 ^7 M* P# ^% H4 E( P        part, GlobalDistObj, assignLObj:object;row,Lan:integer;4 ^9 v( X& s9 ]2 x* z  w
do
8 C" Z7 ^( N2 F: k$ G* M# M. n        Lan := rootfolder.Internal.Tools.AOLlanguage;0 a4 ]- G  K8 z
        if current = @.Destination -- else return/ W/ q) r: W+ l* |& u1 s0 |
        then' g; J% \( A3 z. r2 g
                @.Destination := void;. k- n2 o; o* D
                if @.occupied then/ t2 V5 y4 H. L
                        part := @.cont;
3 l- j( w8 o6 J. Y                        @.transpOrder := void;' P6 E2 Q1 N* M1 s9 P
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
" }3 U1 ^4 p" l% Z3 T                                @,root.eventcontroller.simTime);% O1 \8 N9 @: Z7 L2 B! U9 b
                        @.HasOrder := false;+ U# E+ S' E- L8 r
                        @.DrivingHome := true;
3 O/ Z, |: k* A                        rgManager.tryToStartTransOrder;* ^, _1 g) M8 ^: a+ Z
                        if @.Destination = void0 `) r/ V  m2 U; [' K+ H" m
                        then -- no transport order for vehicle @+ x5 \$ N% h  C; u
                                @.Destination :=4 f$ B3 c; q8 F5 E; x# M4 R9 Z0 @
                                rgManager.nearestFreeStation(@,track.~);
1 a* N2 ^0 c8 D. k, T$ Z8 m                                newDirection(@);   * ^7 `% z0 P( @- n" H
                                if @.Destination /= void then
( T! B/ E: b% w4 L0 E                                        @.Destination.NumReservation :=# p; ?* X# t% t4 c) I6 r0 @
                                        @.Destination.NumReservation + 1;
' u3 k& \9 a. a- N( E7 m; T+ _                                end;
( _; i' V5 u; }0 W- m                                @.CurrIcon := "drivingHome";% T2 a1 S$ ?+ _2 X5 M8 Y% i
                                @.DrivingHome := true;6 Q, G. h8 Y* a
                        end;# l, n5 _- n6 s
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
' @. f4 I! |+ ]3 n                        part := @.transpOrder;2 J- j; F0 o* b* z
                        part.move(@);-- load part; `- u1 K' {% O5 j. h# e  R" e
                        @.CurrIcon := "load";4 Y/ L6 H/ X  l) n6 v
                        GlobalDistObj := part.globDestination;
2 ]' q6 V7 _" e7 D9 e# j2 b- N                        assignLObj := rgmanager.rgAssignL;
. Y& D7 R' P5 Z4 r* _                        row := assignLObj.getRowNo(GlobalDistObj);1 d9 \0 j7 Q% Y% q# @* c3 N- S4 A
                        if Row = -1 then -- since 70- s5 E  j7 G0 ]
                                if lan=1 then$ K" Y) x( @1 @
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),- V# h- B0 P- |7 h: k7 W/ o
                                                to_str("in der Andockstation: \"",?.~.name,"\""));8 e- q. G: Q; U9 T. h+ W
                                else" |& D. Z; r$ D) f, y
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
9 ?0 D- S1 T( I8 S( S! _; K                                                to_str("in docking station: \"",?.~.name,"\""));                                ; _% C9 ?' x7 A/ p& H1 @+ p6 Z
                                end;
5 j) f! z) p6 Z# F* U7 ]6 s0 k                        else  H& ^1 A/ G. f- f/ o* Z
                                @.Destination := assignLObj[1,row];
- K/ q1 v3 p2 |4 G9 I9 j7 N                        end;                        ( U  ~2 L5 _, K6 M+ B
                        newDirection(@);5 b2 N; @% y* e5 U- @) {) y1 I
                        @.HasOrder := true;
$ g- u7 M: ~1 F                end;
" q, D7 T. x% H% m% o9 D7 B7 h        end;
$ i9 a; d% ?: r+ x+ B1 b4 g! Oend;        -- of the method
( c' Q- ]; L$ M5 f
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
2 @- r( V* W/ @) X! ~9 C0 F. X5 ]& }3 t4 @3 S+ e  x
这是AGV_putin中arrive的method。
1 M6 q& B" s; U7 ]2 r
* p; j& d8 H5 a7 _当到达物料速度越高时,这个报警更多,
  G$ L. n; k3 k' }2 e可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。1 X: Y3 ]* L3 e) E# g
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
2 L7 m! ~9 S& V  K% m% l% e* E2 N% k1 X# X3 k
另外一个小建议,就是move,所有的move都可以这样: ^& _! r/ A, v% I' @, R
if not move() then debug end
. F$ B" k! U0 @6 c1 R$ V# X. v这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
* N, e+ E7 d! U9 _5 bplant simulation中的free libraries有AGV模板,6 L$ s) ?  X1 P% O+ m; j/ @
里面也有案例。
- o, u) q2 {6 q6 Y( P0 s6 N0 n我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
; J1 G! d& Y# k( l. t) c3 J
3 d' ]+ B* Q8 y我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
" i; h  h3 Y9 m9 c  J; Q& j
$ Y1 N9 d# M3 X1 D7 P6 \那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
3 L+ n" e8 R+ R) U' O2 ^这是AGV_putin中arrive的method。
* [* q; \+ y3 @' H1 |# y
! U$ I5 g- M7 B( @; \当到达物料速度越高时,这个报警更多,
) ?+ H, W7 H; r; u5 e# J
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-9-12 20:42 , Processed in 0.022986 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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