设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7200|回复: 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'
" e+ @" [1 a% i% T1 C) O9 |*/
% e( E% l! L3 B. a, mis2 h+ T1 k8 p  g
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;; [2 |0 }5 k0 e! M5 n7 V6 o
do
: Y+ w( e. H+ }- m+ V# R        Lan := rootfolder.Internal.Tools.AOLlanguage;  h/ {4 K1 _; @( G
        if current = @.Destination -- else return/ M) I, J7 F$ l+ h! z0 h
        then# b4 T  D) Y' }9 i! D# V% s9 G
                @.Destination := void;
$ v7 X9 n4 V+ X                if @.occupied then
2 Y* |+ o$ y9 E$ f! Q                        part := @.cont;1 q- E8 E7 G# f; c
                        @.transpOrder := void;
$ p. W2 z+ C5 `  S5 s+ N                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,$ h) R" X) C: |( `" N
                                @,root.eventcontroller.simTime);
+ E; a5 D- E$ @3 n( s                        @.HasOrder := false;
6 L  H4 R4 V; s$ V                        @.DrivingHome := true;% u3 a1 e, T+ E, |; q! b2 K. C9 W
                        rgManager.tryToStartTransOrder;6 a% Q, ^! h" I  |& K4 d
                        if @.Destination = void
! G3 X5 P5 S# E1 s& _8 z                        then -- no transport order for vehicle @% K6 S: O  c/ x- `$ r; P) O  E% O
                                @.Destination :=
* g! H" h* L* P3 L9 x. J; l$ Z                                rgManager.nearestFreeStation(@,track.~);$ q, B/ w9 F0 b* g: U
                                newDirection(@);   
& F, M$ ~- @/ q                                if @.Destination /= void then
$ o+ `* k% X/ l                                        @.Destination.NumReservation :=
3 {6 U; G0 P1 h1 W                                        @.Destination.NumReservation + 1;
- H; n: R' b! P8 M0 I. v                                end;0 F+ J8 u! l9 D9 V9 T" l7 ]
                                @.CurrIcon := "drivingHome";
2 V" C8 Q6 V5 v9 `. Q                                @.DrivingHome := true;( Z' {! M& E* L+ `$ O
                        end;* m$ g% k) t) ?2 O
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
' w: X) K; y9 m$ p8 m! j# R                        part := @.transpOrder;
- y% W  ?) ]* m6 w9 B                        part.move(@);-- load part
4 I( t& _6 {% B; [/ b2 S7 t                        @.CurrIcon := "load";) I: {3 v( A4 A! x
                        GlobalDistObj := part.globDestination;8 R9 G; j' j! i4 z. q0 O
                        assignLObj := rgmanager.rgAssignL;$ ]" k5 R3 ~7 F8 ]% m
                        row := assignLObj.getRowNo(GlobalDistObj);3 a5 u8 w2 O5 [1 b
                        if Row = -1 then -- since 70" z5 Q0 L% _% E1 L; X5 r
                                if lan=1 then
$ Y+ i7 W! \% N* v  M                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
( t* A/ s* S2 Y/ }2 q! z' `                                                to_str("in der Andockstation: \"",?.~.name,"\""));! Z) V6 M% C6 W; b1 J  t1 O
                                else- t: w& e9 P# p" {, i, A
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),8 X. g# F* I1 |( w& G! e
                                                to_str("in docking station: \"",?.~.name,"\""));                                * R% X, S& n5 g8 N: T( e- }
                                end;
  B% T0 ^  `; n9 v                        else
$ G7 |! {  l# I0 [! g, d  H8 y                                @.Destination := assignLObj[1,row];
, }, w$ H( [, W1 T" x                        end;                       
- T! K8 t) x: }; V- H7 P                        newDirection(@);
# S2 J8 h+ [' P                        @.HasOrder := true;
8 l! R/ q5 o) v( R1 C. ~                end;
& [1 I, ?/ J8 r- G        end;2 B! D7 I% t3 t2 S7 D& Q
end;        -- of the method3 X/ L" p) Z1 @2 g* l+ c
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 , N/ x8 X* V; C) _( B3 n
* R) S: e/ p( @9 f; b( h
这是AGV_putin中arrive的method。$ j2 S) N; P; [# b+ D& p

; R) ?. D4 G/ A/ Z; o当到达物料速度越高时,这个报警更多,
2 `, `: c" m0 m; ]% ?4 w" e可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
  i0 Y; q: x2 |程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?4 G* b' F) d( P) L

! h6 V2 M) H4 ~! j6 y3 M另外一个小建议,就是move,所有的move都可以这样
3 S7 V# o5 Z, X8 }: t: {. Yif not move() then debug end" |2 n5 t! E% Y- e" C" o9 e
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。0 J  g& A# S$ q& P- `
plant simulation中的free libraries有AGV模板,
" a- _( W( g8 a. s8 A- b里面也有案例。
2 C* N) B/ a0 ^2 U/ x我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
" x/ e" e0 y, H* m3 @! R( E6 E" X  F8 k7 ~+ C9 V- o
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 1 V3 N& g/ e8 `) Q: C  L4 Z
6 d5 C( b: l5 t
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
, w4 ]% c% D: j1 {( u  {* {5 V这是AGV_putin中arrive的method。8 W, {- I# s5 k2 w1 b
9 Z$ X9 i1 b$ ^) L3 K- e: n( h
当到达物料速度越高时,这个报警更多,
& H* G; P0 `6 [  C1 s! H
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-26 12:42 , Processed in 0.018740 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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