设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9972|回复: 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'% T) C1 E5 W# q/ Y- w
*/
4 {+ Q5 T8 `( r+ Pis1 O4 L- A8 v. ~2 f# q
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;4 A' E  X. u6 D
do1 j9 U  z: w+ U. ?' M" D6 i
        Lan := rootfolder.Internal.Tools.AOLlanguage;
/ a3 j" r, f8 R* h        if current = @.Destination -- else return
0 Z! Q) ]; M) w! o; H: a& n5 n        then2 f& T+ M3 `  S3 d$ G! ?  F5 C+ y
                @.Destination := void;2 |. k* C' b9 P. t$ Y# a
                if @.occupied then
! e4 ^2 B1 t% K5 I% k6 U                        part := @.cont;
3 \! g6 s& h2 I                        @.transpOrder := void;
8 {% u' X% ~1 T7 M9 L                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,2 \1 i9 ]. Z. O% @  [  ?# z
                                @,root.eventcontroller.simTime);$ [/ g8 P% D! ]6 l% n' h2 \
                        @.HasOrder := false;6 D7 Q5 _* n- d5 }
                        @.DrivingHome := true;3 A: d0 z0 i+ P
                        rgManager.tryToStartTransOrder;
; K/ L' m) ^" i  z# k3 d9 z: O                        if @.Destination = void
. y! H4 m% T" [/ x4 i% x& M  s& F                        then -- no transport order for vehicle @6 ~" ~7 D4 a: O+ L
                                @.Destination :=' D  s, |" ?9 V+ l( c
                                rgManager.nearestFreeStation(@,track.~);
9 z, G3 o' s4 k# ]# Y                                newDirection(@);   6 X; D9 @  W, {# @. Y
                                if @.Destination /= void then+ l. I9 n5 }1 V7 E6 C
                                        @.Destination.NumReservation :=( I" Z; v) z: f% F' t" }  H
                                        @.Destination.NumReservation + 1;8 j( D% t% U/ i3 x
                                end;
/ w- [! A3 l6 {+ u# Q                                @.CurrIcon := "drivingHome";% R1 ]0 |9 `6 R0 k) v% Q
                                @.DrivingHome := true;9 G3 F1 `/ Z% `/ ^' f' Q
                        end;; x+ n- ?1 N# f, y9 Z( b8 k9 p6 r8 y
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
( T/ m! x( Y- U                        part := @.transpOrder;
# m6 b! f2 E3 W! m' {" H* r. F                        part.move(@);-- load part" L2 v' }" A" V
                        @.CurrIcon := "load";
+ H! \9 n! S. L/ z1 y                        GlobalDistObj := part.globDestination;; T( ~0 c% E4 H6 p
                        assignLObj := rgmanager.rgAssignL;. ^$ i8 |5 s6 F0 D2 [& q) j
                        row := assignLObj.getRowNo(GlobalDistObj);+ |: n% B5 l$ O4 G9 A
                        if Row = -1 then -- since 707 G+ ~% @% {5 P: P# o, H
                                if lan=1 then. T% A  V! _2 m2 X2 j
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
& I5 _1 o, x9 X" @) M& y                                                to_str("in der Andockstation: \"",?.~.name,"\""));: b+ i# Q7 }5 q+ X
                                else- r* y3 D8 k4 [
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),( d; Y5 {- T2 z0 e4 h$ a! H
                                                to_str("in docking station: \"",?.~.name,"\""));                                ; [2 V5 z" d! N5 h
                                end;! G' R: K. v, ~6 N
                        else
& X& B$ b6 H' R6 _                                @.Destination := assignLObj[1,row];
8 J( @: V) m2 h; R                        end;                        $ j: i8 T1 {+ i2 f" w
                        newDirection(@);' Y0 m- V) Z) r' y4 {6 x9 P. G
                        @.HasOrder := true;  H7 t9 K/ N5 q. D: ~% n
                end;; {" ]' u0 X8 B8 o
        end;
& o$ V$ d: R, E6 M( q4 `! d! A4 a# `end;        -- of the method
6 l, `6 p) ?1 `
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 / ~3 x7 ?' H3 F' W  y. ^

3 h' R! U! H8 a. K# t0 ^这是AGV_putin中arrive的method。5 p% E% h$ V$ t0 y2 I$ p% U- X" }7 u

0 r- M# p) A' U  M0 h: K当到达物料速度越高时,这个报警更多,
! g. N$ @) W5 I可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
* l# x9 W) V: m; s* c程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?: N$ v( d& h4 v
$ g5 ^  ^* j: ^3 Q# ?
另外一个小建议,就是move,所有的move都可以这样
1 P! v  p7 m" d0 q! O) F7 ^if not move() then debug end! X+ O8 m' R8 ?& _7 O. P/ q
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
) g; \& N% s! U: N! |plant simulation中的free libraries有AGV模板,
( q1 e; [. l" x; a5 e里面也有案例。7 v6 A5 ^/ v  ]' O
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
  D+ w6 }* ^2 y' e
% H( Y  J' Z  H$ N' l4 Q% u; K  B我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
8 P8 O8 e; C! z7 P0 U( A
# a; v/ K' R" [! Q那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
+ j0 L4 ~; R: x; w( ~5 U, w9 X这是AGV_putin中arrive的method。+ n& d+ x. k" S% u

% U8 ~2 [3 r- P, Q% n当到达物料速度越高时,这个报警更多,

9 U8 i: U+ H! A; e* N另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-9-5 07:33 , Processed in 0.014495 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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