设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8780|回复: 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'- Q8 T" x! N, [- ?1 [- B2 n
*/
8 @& X* M2 a$ T& Q: Kis
, Y. l# B' L5 _$ m0 u* c9 ~        part, GlobalDistObj, assignLObj:object;row,Lan:integer;' \0 [) ]2 p7 X
do2 S3 P( e; I. a1 D: f: Z7 w. f
        Lan := rootfolder.Internal.Tools.AOLlanguage;
7 c0 ^6 S8 A/ X( P2 D        if current = @.Destination -- else return4 `; a8 k2 u2 ]2 }1 b. y
        then, m. m; t4 V- k" c# _
                @.Destination := void;
" Y) `0 v% E. ?. t                if @.occupied then+ h) m5 R$ L, e3 C& Z
                        part := @.cont;
* w+ S9 h2 i, W7 T3 Y2 V                        @.transpOrder := void;( O& _3 z0 g. q6 G3 q; U* O
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,- a0 m7 I$ `0 @. c
                                @,root.eventcontroller.simTime);5 E5 V: W- A" o+ j4 Y& G. e
                        @.HasOrder := false;
: Y; X( q1 p0 Q* e& u7 q8 ~1 M: z                        @.DrivingHome := true;& w, y7 H4 V- |! T0 }- s1 j
                        rgManager.tryToStartTransOrder;
2 I" h" `0 Q) m! p. Q: e2 g% Y                        if @.Destination = void# _+ G9 ~8 I) L
                        then -- no transport order for vehicle @
% L4 {! u4 p1 B                                @.Destination :=
! `$ ]& S2 `, W- O* }                                rgManager.nearestFreeStation(@,track.~);! `6 ^- B" b* d+ w* G& L7 [
                                newDirection(@);   8 I' o# s# }; @, ]% O5 `
                                if @.Destination /= void then: }. V9 c+ C0 v8 e% A% V
                                        @.Destination.NumReservation :=. q/ x: I' {$ J$ M9 j
                                        @.Destination.NumReservation + 1;# a. n* b4 z7 i4 H* j
                                end;9 E: h. G* C$ O5 {8 K
                                @.CurrIcon := "drivingHome";9 f+ R' o: c! R, ?$ }/ Y# q
                                @.DrivingHome := true;9 w! s: I" u6 k( {: _+ j
                        end;
! o8 y7 v; h- [2 |: |$ I% M                else -- the vehicle @ is empty, both vehicle and part are in the same dock station& i) H& h' N5 N4 v9 x
                        part := @.transpOrder;
! p; w0 e1 F" [8 {, ]                        part.move(@);-- load part
: p, x1 H  R1 y" E. C! C8 \                        @.CurrIcon := "load";
1 K$ I, a  Q; s                        GlobalDistObj := part.globDestination;4 ?* U* @( {: ?2 I! W4 p3 X. X
                        assignLObj := rgmanager.rgAssignL;/ d8 c9 B$ R4 r+ _' q
                        row := assignLObj.getRowNo(GlobalDistObj);
5 z2 L8 Z+ R5 x6 h                        if Row = -1 then -- since 703 G; W/ ~* E6 e( P" T
                                if lan=1 then
5 m0 ~; x, T7 E* o                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
5 J0 I, P" n0 h' P! `+ y0 H                                                to_str("in der Andockstation: \"",?.~.name,"\""));( ~5 C3 R7 i  `
                                else- M4 Q1 B( a9 Q: N3 e
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),+ B2 m( g4 V  q) r) ]- ?+ j
                                                to_str("in docking station: \"",?.~.name,"\""));                                + j' `/ |  n5 f1 b' v
                                end;$ X) z5 A  p9 g8 ?+ c2 a8 @
                        else1 ~) E% o# B; H# o
                                @.Destination := assignLObj[1,row];
  i3 C- D- C) R# X# H1 P% e                        end;                       
1 }) f& }# |3 p( I: S0 j                        newDirection(@);
! ]1 m( C% ^7 o& K2 D* x                        @.HasOrder := true;
2 N! D% Q5 _0 u. L# Z                end;" w, Q4 D- O$ w& b6 }( r
        end;
1 J0 ^0 ~' ]) l5 r# A' E6 Mend;        -- of the method% P$ e9 V8 Z/ S/ I
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
& q: {8 s' ~- C6 Y" ]3 R. a8 n" o6 ?' h) M4 v* y0 E: q
这是AGV_putin中arrive的method。7 q/ K9 J* j( v( I

* r5 P& w3 _# M# a3 K9 V! V当到达物料速度越高时,这个报警更多,4 s( \7 Q6 i+ h$ Z
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。4 ?' j; L3 L& v0 u4 @
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
& _9 ?/ ~) p( G% Z
7 s# V' F( v: j/ X/ a; ]) V另外一个小建议,就是move,所有的move都可以这样
) ?! o! S: v- B/ P  [6 \3 Vif not move() then debug end2 V0 ^) p. V9 l) \3 t% r2 l
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
- ^+ j  W( J- y# Z  ^plant simulation中的free libraries有AGV模板,
  v1 J5 X; A! @; w里面也有案例。- J7 B% L) B; e; I
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。" z$ H5 S+ [' Q3 y: |) ~2 Q

, R) r4 T7 A3 D, B2 Q+ q我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 ( b8 G- \$ \2 k* b8 A
1 k  t2 R) r% j9 {* P  X, I4 V- l
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
# ^6 k! I% Z8 z3 e3 @) |& ]1 H这是AGV_putin中arrive的method。4 W6 X: k3 _. [2 l# o. d& [$ L+ p/ V

3 g6 @/ ^* v9 |* `0 o* r5 Q% N& E$ m8 l当到达物料速度越高时,这个报警更多,
, m# Y! H: ^; h9 m6 E+ E" D5 B
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-25 23:51 , Processed in 0.016287 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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