设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8516|回复: 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') u. o+ ]4 n- @& I$ S" K2 Y
*/; A/ K  z$ p. h
is
* b& G/ \" Q9 j# y$ M4 B4 B        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
9 l* D5 W6 i8 r. ddo2 \5 e. R, t6 [9 f5 L9 V
        Lan := rootfolder.Internal.Tools.AOLlanguage;
$ _4 H& n# D/ `" y9 O2 X7 `/ x        if current = @.Destination -- else return
  D3 d+ O5 `+ e' p8 A  n        then3 \$ t! }8 H' ~- Z7 m3 f/ Y
                @.Destination := void;; y9 i  h9 o7 X; _
                if @.occupied then
- ^% \! c" S' N2 R$ g                        part := @.cont;
, `% ~1 @& Z" t4 T. Y' P                        @.transpOrder := void;
) s# s# Q7 y) Y5 w                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
' P- t2 L7 W5 `3 h                                @,root.eventcontroller.simTime);
  M1 o2 }$ g  e1 Q                        @.HasOrder := false;# G/ z7 R0 @; R
                        @.DrivingHome := true;) R7 y2 O0 M/ `
                        rgManager.tryToStartTransOrder;
' c$ @2 w$ W. e1 ~5 [& ?                        if @.Destination = void
3 z  g" q2 o' y) j2 b# |8 K9 i                        then -- no transport order for vehicle @# b$ k4 T- {) r7 ~9 q  `
                                @.Destination :=
  s: d& P; o  T3 a/ y$ [1 r0 _$ Y                                rgManager.nearestFreeStation(@,track.~);
) ^- k/ {. n. [" V' Q, r( x9 f                                newDirection(@);   ( V$ X! \* C+ W$ A1 Y9 L
                                if @.Destination /= void then
! N4 e- j6 S7 [, c1 C* ^) ~4 C                                        @.Destination.NumReservation :=7 u) y( F* X% Z) M
                                        @.Destination.NumReservation + 1;0 @: Q% K* o* B' O+ [5 w
                                end;
0 [) V& d# g- a0 g7 B( r' |/ ^! s                                @.CurrIcon := "drivingHome";
7 ]9 j" z% O0 p  l, Z                                @.DrivingHome := true;
3 ]+ o* L) Q9 L6 B' W                        end;
- k4 v. H. ^% \9 V- \" [% r  ?7 l                else -- the vehicle @ is empty, both vehicle and part are in the same dock station8 }% f# [7 O3 N
                        part := @.transpOrder;1 B: r, k( [- f2 t# R- H5 n1 K
                        part.move(@);-- load part) j. H  j+ |* R0 g
                        @.CurrIcon := "load";
0 j5 B  ?5 m2 E0 q) o' U8 `                        GlobalDistObj := part.globDestination;) r# V( f* ^/ Q- H
                        assignLObj := rgmanager.rgAssignL;
( @0 Z5 x6 _2 r  `9 D                        row := assignLObj.getRowNo(GlobalDistObj);/ [6 x9 [+ p. A7 M, U3 Y
                        if Row = -1 then -- since 708 [) T0 S2 a& U) |( }
                                if lan=1 then8 b( b. I- F# m( H7 g2 r
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
8 T+ W% J. V- U, a# N                                                to_str("in der Andockstation: \"",?.~.name,"\""));6 c# A- T* b6 Z, p
                                else
( S4 u8 y( \" Y1 U7 B$ e                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
, T- X5 o4 m0 }4 }: c1 x                                                to_str("in docking station: \"",?.~.name,"\""));                                . t/ _' I- i. _  l
                                end;
/ Q, e+ q' ]- ]2 l# L* n                        else( l& q2 U3 o' u1 C2 m
                                @.Destination := assignLObj[1,row];( P1 c1 }7 |8 V/ Z9 ]2 E  Q5 y+ E
                        end;                       
, U9 z9 q) X1 _. L1 |$ M                        newDirection(@);- B+ l, h5 C6 n; H. A9 ^$ ]- I* C, S0 L
                        @.HasOrder := true;9 q- F& `0 D$ }! H
                end;/ `2 ~" b+ O, z0 v7 ?
        end;% Y! P0 t  J* @" Y7 T) U# S; K  X
end;        -- of the method& T! F" _0 o6 J" Q  A, A
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 ; k! I3 F  N; M
8 h4 n' R1 R$ w& T
这是AGV_putin中arrive的method。  ~# g' X( Z. \7 ]
. C3 R2 R% L4 I! {5 a! e- I
当到达物料速度越高时,这个报警更多,
: k: n" l0 e) P4 U可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。- F  L2 m) z8 D9 t3 u8 E* V
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
  O. X+ Z( m8 o* s0 \7 d% a
% r2 [+ _, ]" k1 F另外一个小建议,就是move,所有的move都可以这样# K) w0 ?. e) ^: R% F
if not move() then debug end
+ |# N# K6 f" w5 |- q% X6 `这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。/ ^1 W% `. R6 L$ j9 a
plant simulation中的free libraries有AGV模板,# H( |/ A* R; j1 j
里面也有案例。( j4 j' h; s$ ]8 x; `
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。2 a- V8 ?1 V. s5 [3 }0 u$ z( `  m$ |
" A; `7 J1 m6 z5 y9 B/ |
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 7 }  [4 @0 {7 V- @$ ?% N
) j' f! W+ \% o! W8 ?" X$ |3 n0 u$ J
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
2 |* h. p& U' L这是AGV_putin中arrive的method。" g9 }$ U6 T0 ~/ h. }

7 ?: |9 j& l! u; H& s: s1 z: X当到达物料速度越高时,这个报警更多,

( g, l) H  C  W* N; f另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-9 00:00 , Processed in 0.019609 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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