设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9314|回复: 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'# F$ p. K" |. E: K( [% z
*/
  Q; |+ f+ c' I* Ais& Q3 A* y1 G8 i0 ~
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
8 U# o2 r+ g0 G2 Y. h$ `% Ido
  L! |9 Y  b! \        Lan := rootfolder.Internal.Tools.AOLlanguage;3 E% I: W2 G$ n0 y3 Y  _7 x( f" F- z
        if current = @.Destination -- else return9 z; k6 g  J$ k
        then. [& C: S. J% [
                @.Destination := void;
3 ?, n5 d  p: }( `                if @.occupied then4 n8 v/ D" ?1 {9 G# \9 t
                        part := @.cont;
/ O0 G" r: \1 E' u: P                        @.transpOrder := void;* s  W1 q. L% \( p' g
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
; E+ U& B* a0 ^                                @,root.eventcontroller.simTime);
' v) J/ |: q/ P5 d& Q3 i; v                        @.HasOrder := false;% q) G7 ]# q( r
                        @.DrivingHome := true;
$ L7 _" A; M% p                        rgManager.tryToStartTransOrder;
- g6 \# i& H# ^6 \  c                        if @.Destination = void+ J: w# n& r: b) y) p
                        then -- no transport order for vehicle @0 K+ C1 k! Y5 X1 _
                                @.Destination :=
! ?$ |" x9 A6 }! ~                                rgManager.nearestFreeStation(@,track.~);
$ e5 E3 V; Z. m, r. i8 \                                newDirection(@);   $ p/ }- k2 F) x7 w! E
                                if @.Destination /= void then) a& s' o4 D6 h) u5 O' U
                                        @.Destination.NumReservation :=
  n9 N9 b9 n2 D                                        @.Destination.NumReservation + 1;" _1 E5 K% T* h4 l, J
                                end;7 T" ?5 P: O! E
                                @.CurrIcon := "drivingHome";
+ v" x. w/ {& g1 c) M4 R. e                                @.DrivingHome := true;
9 r8 z* x1 _1 V; N! k3 n                        end;
7 J7 y/ r7 L% k# M3 [                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
. @# z6 k/ [+ A                        part := @.transpOrder;
+ v& j7 d# ?( Q4 }                        part.move(@);-- load part: e$ i' j6 a5 V! X; O& s
                        @.CurrIcon := "load";8 z- \4 u( D) N8 C1 b3 H: p
                        GlobalDistObj := part.globDestination;8 p* K: c9 R! k8 S9 N
                        assignLObj := rgmanager.rgAssignL;& o% S- p$ U$ @. i/ S8 P* w
                        row := assignLObj.getRowNo(GlobalDistObj);
) I, U) ^+ |3 B& A) e! p  Y/ }                        if Row = -1 then -- since 70+ W1 U# l+ w3 u8 k
                                if lan=1 then
8 ], T6 U& |) u                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
1 v' }  P8 a' F/ B# g5 I. z6 R* j                                                to_str("in der Andockstation: \"",?.~.name,"\""));
+ C; h0 I2 e- q: {* B2 O. Y4 c" Q( ?                                else- |" f' _9 L3 \2 Z# N) Q
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),5 F/ N* t4 k# e9 e( j1 l
                                                to_str("in docking station: \"",?.~.name,"\""));                                # s0 r( Z  G% E  \
                                end;
; z$ j. f: K& }' X' n; x                        else
2 t# A( j2 a% Y1 e6 F* R                                @.Destination := assignLObj[1,row];
3 T! T3 ^) Z4 P7 j% r                        end;                       
! I$ a! p& o4 Q1 x) R3 D                        newDirection(@);
8 @! K1 H0 Q- o7 f8 T" S! S                        @.HasOrder := true;5 `! Z% ~8 l% w7 Y! Z) `
                end;$ I2 U/ `6 p  g
        end;
) i- c) Q: f" ], T! Iend;        -- of the method
( y5 c- c& d" p3 K0 A
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 4 H& |, E8 C" ]- x# J

, ?4 `$ e6 q7 Y+ ?这是AGV_putin中arrive的method。" q9 a$ [. w5 o5 q

5 y( D  m9 n- U2 B- ^当到达物料速度越高时,这个报警更多,
/ X/ c2 H5 V7 l+ P0 h! q可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
, K7 S8 \- J1 q0 T) `程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
* W# Y1 I8 R9 ~. v+ K7 e: M3 s9 \1 ^! J
另外一个小建议,就是move,所有的move都可以这样
; W, u( \0 D3 ?$ T- m  s7 K! Vif not move() then debug end9 \+ [  H2 P* S! H7 {7 C: C
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。4 {' W$ Y7 y: r  f: G) i
plant simulation中的free libraries有AGV模板,# M6 e1 D0 K1 \- |
里面也有案例。
9 b$ N( ^  D% T/ f我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
  N0 _3 e# v+ o: n4 X! I2 d. j  m) [6 m) m/ H# P+ [  z* W
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
! ?# H0 H, ]) Q' M1 O( S) @! W. F
, x% \( J) z! m; b/ {( V那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 1 i/ A8 e5 K& ^7 A$ G
这是AGV_putin中arrive的method。
9 p" k8 u& w* n) U- P
  S4 i# O( r+ C2 ?& a. P4 w; s6 R当到达物料速度越高时,这个报警更多,
9 m2 P! Y& r& n2 y# O! d
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-7-24 23:58 , Processed in 0.015387 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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