设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10158|回复: 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'
4 A; |8 W0 Q/ n# O*/! Q# n7 {7 q- Y( S6 t$ S
is8 s/ S( U; X* M0 r
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
) {8 i0 \- H9 u, @, T3 P5 @do2 A2 ]) N7 i% Y4 r) B5 ]
        Lan := rootfolder.Internal.Tools.AOLlanguage;
- Z3 f" }+ \% Y) H        if current = @.Destination -- else return
* L( k; n6 b; P        then
2 E$ j, ?8 P% }# e                @.Destination := void;
: t3 Z4 q& h2 n* I                if @.occupied then) m0 t+ _0 q4 T; Z; b* U0 \
                        part := @.cont;- Y4 U9 f2 C9 k. J
                        @.transpOrder := void;% N; I/ B! f# ]
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
2 o4 u* D2 W- w! t                                @,root.eventcontroller.simTime);
8 w/ r* m% z: e9 K1 C5 ]% e; u                        @.HasOrder := false;
7 K0 j  Z. N6 l/ _                        @.DrivingHome := true;% ]' S, \: ^6 ?# w
                        rgManager.tryToStartTransOrder;" h  ]( s  m  w" V) c( e
                        if @.Destination = void+ h8 G" W) Y, a/ j3 u8 n8 P
                        then -- no transport order for vehicle @0 w. c4 T  f" n+ W' M
                                @.Destination :=& \+ A/ j& A& x/ k! L
                                rgManager.nearestFreeStation(@,track.~);, U) [0 {4 b2 A# B. ?2 l7 n
                                newDirection(@);   
9 A# p' h7 t2 ?& Y                                if @.Destination /= void then' q, f7 l3 b6 V# U8 a; s7 K
                                        @.Destination.NumReservation :=
, }: S/ q4 H0 `7 p9 ?1 ~                                        @.Destination.NumReservation + 1;
7 I% h, {$ i1 G( k0 m8 n                                end;: T! V! t) u( w4 W7 o
                                @.CurrIcon := "drivingHome";# d# p" Q3 N1 O! G/ T
                                @.DrivingHome := true;5 u, d# b% E; z  Q% Q
                        end;9 D0 m3 \$ z, N* ^, L
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
$ A" E* J( A$ E) H                        part := @.transpOrder;
. u4 O7 g0 y/ T                        part.move(@);-- load part
  L4 R0 d+ z3 ?' I/ I7 y9 p                        @.CurrIcon := "load";
! Y) F8 n0 M3 ~9 J2 E& E6 ?( Y0 t                        GlobalDistObj := part.globDestination;: M8 Z9 p% T  N8 C- |9 w4 ?, C
                        assignLObj := rgmanager.rgAssignL;
. R: Q) U" \4 A2 ^$ h- H$ f                        row := assignLObj.getRowNo(GlobalDistObj);
( v2 T# e+ _8 V" ]8 `3 J                        if Row = -1 then -- since 70
8 ^' m6 [2 P3 C: l! Q2 V- R4 v& ^: _                                if lan=1 then9 u7 I  q" l& C; y
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
& I9 M" @) y$ Z- c! k/ H                                                to_str("in der Andockstation: \"",?.~.name,"\""));
9 w9 @, D6 _& k, w& W                                else
9 B6 Q( q  B4 V; Z                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),3 L6 F) g9 n" D2 e3 {' L9 T
                                                to_str("in docking station: \"",?.~.name,"\""));                                2 X. o3 j7 B1 D% H; N& t
                                end;
) d0 k/ A: Z2 p. M& w                        else/ S6 V8 b& V- V8 ?* c
                                @.Destination := assignLObj[1,row];
  k# p# y2 c' @# I3 @1 _                        end;                        6 \5 q' e+ S; v" B" _. _
                        newDirection(@);+ k7 k) {& w1 g: p# g
                        @.HasOrder := true;2 j; B: d: u% v
                end;
9 l8 G0 }! D; e6 P        end;
4 N; ~  |1 `$ D! jend;        -- of the method1 s1 R  P& C  I% w! J
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 ' ^$ c- [: z( B) q6 J* U( U
* U4 z; M# c  N
这是AGV_putin中arrive的method。, D+ X; ^4 V( h
0 q& m9 r7 y. K! r9 {) }5 C
当到达物料速度越高时,这个报警更多,* e& c( z- J7 \5 `; }
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。8 a8 [& K" q! z. g& A6 Z: w: k3 T
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
- ?" V8 z, j2 [# C
2 P! `4 i* F6 k7 P1 n另外一个小建议,就是move,所有的move都可以这样
; @, z/ \0 H. a' u* I5 @' d9 |; eif not move() then debug end
; q/ p* t# y# v7 E这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。& ~0 T' N1 m7 t# S$ o; o
plant simulation中的free libraries有AGV模板,# Q2 `! {/ d1 t/ T  H7 j; R
里面也有案例。
  }5 Z+ v' E+ q5 P1 l% F+ n. s我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。* w& {( F+ w' E, y
. P6 P' v) @. c6 n" L( @! m; t
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑   q+ ?* k/ Q% B9 W% w
; L- |3 w  n5 m
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
% x4 b. n* K/ K/ |这是AGV_putin中arrive的method。
9 N* C! U* \4 r
& F6 `  `: V4 w1 n# X0 j当到达物料速度越高时,这个报警更多,
* J5 @) P# j. O
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-9-17 05:36 , Processed in 0.019017 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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