设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9835|回复: 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 [! N4 p& Q. b6 V9 A
*/
# G( b& Z" A7 ?/ T6 Q+ w- Kis
4 u8 x  J; o- ^5 R! Z* Q; g  a        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
' N' W: \1 |* @% M+ j5 Fdo. r' M& `: @) m" v/ T; F
        Lan := rootfolder.Internal.Tools.AOLlanguage;- D8 E+ s  u  z' v8 K
        if current = @.Destination -- else return
  h$ V) o- F  R5 m6 Q        then
- [# E' O- H2 Q. W# o9 x6 y                @.Destination := void;
! d& `' T& t2 B                if @.occupied then
! w' S+ e& E$ ?% N1 h  }3 V; |                        part := @.cont;+ v/ b+ F" P# t5 I7 V
                        @.transpOrder := void;' f. X3 D! c* |3 v# @
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
; d1 o, r7 P" ~# R0 P* T                                @,root.eventcontroller.simTime);' M, l/ ^! r8 Q  @4 _
                        @.HasOrder := false;
$ J$ h1 d5 l) F; {* ]; W" L                        @.DrivingHome := true;' t1 ]' _, n7 ?+ J" [
                        rgManager.tryToStartTransOrder;5 X, }& d; U" v$ T
                        if @.Destination = void
' E/ L' l. t" C. Z, h                        then -- no transport order for vehicle @
# a  H% G9 `- n/ b- Z                                @.Destination :=
& C3 ^, s2 c2 m6 P6 L$ E! m                                rgManager.nearestFreeStation(@,track.~);
# E1 e9 j2 l) Y: [6 f7 m3 [8 T                                newDirection(@);   1 R- N4 R& Y+ l
                                if @.Destination /= void then. S0 F% b6 H% z
                                        @.Destination.NumReservation :=
+ J* R! o" G, k                                        @.Destination.NumReservation + 1;
$ y! u  f. a# J9 t5 J5 k                                end;
0 u% Y9 N  b# X                                @.CurrIcon := "drivingHome";
' j% s, |1 V# _                                @.DrivingHome := true;. i' I- Y6 L& N7 C
                        end;  |$ w6 \8 k; S
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
% X4 c" t* ~: \2 z& O. @" @0 m                        part := @.transpOrder;
; r; z- {, \. B/ j0 a1 W. E                        part.move(@);-- load part
5 w  e! E- i, r& X9 R' `7 ~                        @.CurrIcon := "load";
- L, b; Y: u# }0 R  X3 `% A( t* u                        GlobalDistObj := part.globDestination;' Z: r# G9 Q4 Z( m/ |
                        assignLObj := rgmanager.rgAssignL;
* p( E' O4 J2 U* g3 P% r1 ~+ H5 h                        row := assignLObj.getRowNo(GlobalDistObj);  m! r6 Q8 @" [, ~7 ^% y) s* C* I$ D
                        if Row = -1 then -- since 70
8 i. ?- W# d1 M# A/ x0 K                                if lan=1 then/ K& Z: }( b  V2 E, d
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
( Y& ]+ i' K  I' H2 E* n. L                                                to_str("in der Andockstation: \"",?.~.name,"\""));
/ Y1 I9 ?. R. u* V+ Y/ `                                else
5 S9 z! D4 O3 w                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
5 l5 U/ g5 W. q4 t3 u0 Z                                                to_str("in docking station: \"",?.~.name,"\""));                                + s9 j# r2 |7 L: C
                                end;
( G( w7 b2 O+ z                        else
0 o, Q! l! R2 K                                @.Destination := assignLObj[1,row];* q; M! G  A! w, {) G  C8 K
                        end;                        $ F) ]- N- T$ j$ t6 m
                        newDirection(@);
5 S) }! j! M1 h# s                        @.HasOrder := true;
7 e* k. H/ n% Y: F/ F% A                end;
. g0 t% u% g, X# J        end;
4 g0 G6 N8 A$ y6 \' oend;        -- of the method9 |( p" J! x7 A5 E, ]) K! z
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 % I; h9 U- z! U8 ^  a2 I+ A8 S

. Q; M; p9 e- E/ G这是AGV_putin中arrive的method。
1 m: O  [$ u- {- S0 {, `# ]
0 |7 E' b+ w. I  l+ J* l. O当到达物料速度越高时,这个报警更多,
, X, I9 H# J* I  ]% \3 i可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
1 S& V0 p/ x5 G" g+ V& a程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
: y; j' g. R' T5 H2 ~# R4 \; V6 R& g0 c# G+ M9 E+ U7 ^( y
另外一个小建议,就是move,所有的move都可以这样# c; A( u+ O; k. D3 x! C
if not move() then debug end
; a9 b! r$ a$ V) {5 r+ ?# E/ A7 X$ X这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。  E, u3 F' j7 x  }: x
plant simulation中的free libraries有AGV模板,
4 w7 [4 G% Y. e7 L3 \0 R里面也有案例。3 ^  K. u! b" \# [
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。6 e4 E5 O- N7 f# M) B: I8 ~
0 I) ^( x$ w; a0 S
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 " S+ w4 \6 w$ U
; t( v+ q* u4 Y4 i# B8 ]4 V
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
; [: g1 ?" _% Q+ `9 u' Y7 Q, u这是AGV_putin中arrive的method。
" l- X0 U- e, [- K9 \: K0 [7 b4 v, c
& J+ ^7 g/ z( R8 ~$ ^; P: W4 R% H当到达物料速度越高时,这个报警更多,

, K/ W/ s( t: v2 ~+ G另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-28 04:15 , Processed in 0.017726 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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