设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8806|回复: 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'
' B. G* A+ L# t! p9 S: O*/
8 o9 B; Y4 t& `) y1 j3 mis7 l/ ^8 d! m/ V: u8 k
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
) Y7 w) s1 c. r. B/ Xdo  {8 M" ~( o; G' @" g7 {
        Lan := rootfolder.Internal.Tools.AOLlanguage;
7 h+ V7 }# q9 |" ?# q        if current = @.Destination -- else return/ P+ F8 t. `& t
        then
" D8 C: H2 h$ [0 U- W8 n- g                @.Destination := void;
8 Y6 V$ m3 m" H8 y6 p- W                if @.occupied then* R5 ^# {& t. n! p5 h0 f( o! q$ N: l
                        part := @.cont;
0 d! ]' a, I2 u9 U% ?: n/ |" a                        @.transpOrder := void;
; y& X4 s  M0 _1 u8 j8 Y                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,, ?+ k0 H- p8 o5 n9 c" d3 Y# W
                                @,root.eventcontroller.simTime);
; x/ D( ^/ F  M4 e                        @.HasOrder := false;3 I$ l' G3 V0 w
                        @.DrivingHome := true;7 n. J2 p: e( Q9 l" G" _
                        rgManager.tryToStartTransOrder;) g2 J$ r' F  Y* ]
                        if @.Destination = void- w& B$ ^8 g4 h. _/ n* ^, k6 q
                        then -- no transport order for vehicle @7 ~8 q% F8 i( O  T9 L+ l+ A3 ]% L
                                @.Destination :=8 s$ \1 N# W0 P' S: n! c
                                rgManager.nearestFreeStation(@,track.~);4 N( o) g" ]% I# b- E/ Q: q1 ^2 u
                                newDirection(@);     @, s  W. Y1 k" H) U
                                if @.Destination /= void then4 B+ e7 k' M/ o
                                        @.Destination.NumReservation :=# e% z) C7 a  _6 @1 C) K$ @& h" l5 S
                                        @.Destination.NumReservation + 1;( @  Z/ q7 G; C
                                end;  k( Y* ~9 [* I
                                @.CurrIcon := "drivingHome";9 v1 i" G. W: m* }# D) U2 [8 v- c
                                @.DrivingHome := true;4 T' Z# w5 q+ s7 _
                        end;- @/ a# [2 h; R$ D6 y3 b1 n, U
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station) l( M, X6 V* E
                        part := @.transpOrder;
0 A, v1 T% j; O, N' T                        part.move(@);-- load part9 e$ G1 e  Q+ b6 I
                        @.CurrIcon := "load";
0 H+ k1 A: |: e) n* h" ^                        GlobalDistObj := part.globDestination;# U) b% p$ S) A! T. s9 [/ X$ U
                        assignLObj := rgmanager.rgAssignL;9 Z' C" X/ A  r8 ?
                        row := assignLObj.getRowNo(GlobalDistObj);
  |# f# M. G4 m6 y4 w. w                        if Row = -1 then -- since 704 j5 c! e5 P5 X% g% \( u1 s" d
                                if lan=1 then
" A! b4 A- V& |1 ?8 B                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
& v% k. M5 }9 u( ?7 V                                                to_str("in der Andockstation: \"",?.~.name,"\""));9 c. ~% S; b7 Y, [
                                else
0 U1 o  _  w- i8 J1 m& D& Q                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
) J' X) t$ W$ C, n! a                                                to_str("in docking station: \"",?.~.name,"\""));                               
. Z- E8 ?5 K' L/ {0 N- j& a/ p) L                                end;
' v$ X6 w5 g% u; G& y$ o                        else/ J+ j, s& M% ^" B
                                @.Destination := assignLObj[1,row];0 J- f3 @( K* Y* d/ P
                        end;                          g/ D6 u* f0 W; A; |
                        newDirection(@);8 I& K6 s) @- s2 n3 v- l
                        @.HasOrder := true;  R$ m. m: z) P2 c" q% |0 r
                end;
" c" k, p5 d1 T        end;
% Q6 v0 v* K' S+ x- J3 l+ dend;        -- of the method* C6 ]- H+ v: }0 ~7 T
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
- q; Y/ y+ V, G; ~4 J: p
# `/ @4 E9 s; }7 S这是AGV_putin中arrive的method。& @! c$ }; I# v: G( l+ ~

) I# X- {2 P% b当到达物料速度越高时,这个报警更多,
) s4 o. X7 G, ?5 h) ?# `! j可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
+ U/ k( M/ v" N1 r# X程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?  M5 v& c. c  F, A
  |$ V+ S: J" F0 X6 p
另外一个小建议,就是move,所有的move都可以这样( e3 {7 r, w7 ~. \' K/ {" B' h$ ^0 x' d
if not move() then debug end
, C1 v% `+ ?, y/ J9 m9 Z这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
) Z' l# h( c! \7 Y6 D+ d! n9 ~/ Cplant simulation中的free libraries有AGV模板,0 f6 f& A9 ?9 S: H+ Y% H, ]8 I& D
里面也有案例。
7 ^0 X6 J; ?  J! D" X8 |我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
# [) S1 Z8 D, O6 Q. ]1 |6 K! ]) s5 D) v' M" [
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 6 _$ }5 F$ v) L) B- C& s2 L' }

% h; h/ `, b: C2 T3 a那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 - x% L. `* q8 F6 d2 R
这是AGV_putin中arrive的method。
, W- P; v: w5 M/ n1 ~6 b: Y. @
# r! X5 W* U$ `8 V' p. S' g当到达物料速度越高时,这个报警更多,

7 }5 j; O9 I8 b5 W9 A另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-27 09:00 , Processed in 0.019156 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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