设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7730|回复: 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'; q! O) T2 S9 L; Q; T+ m
*/
' U* N: y! C! s6 B! w9 P* R' @5 V5 S6 Fis$ m* ~5 T* M- S, s2 h6 r
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;7 X7 ], `5 Q9 i1 f2 v" F
do
' k* C2 ^* K. K$ s/ N        Lan := rootfolder.Internal.Tools.AOLlanguage;
# R- t0 I( v, ]4 a! z/ ]1 X, W        if current = @.Destination -- else return
& S* J, F5 j; B; U) M- f        then
* [/ _2 A/ H8 ]% b8 \( [" a4 t8 N2 h                @.Destination := void;- t/ w' e/ y, q+ r: R5 j! H
                if @.occupied then+ u8 c% h9 B& g1 m' ?: Y! d
                        part := @.cont;. F5 n$ q5 E! ^% n. ], Y
                        @.transpOrder := void;
& \7 n! r9 q7 a                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
2 q3 ]% J" `) |; Q# W/ z8 ]; G% I                                @,root.eventcontroller.simTime);* C3 c/ U- C6 {' r1 L( d$ m. A
                        @.HasOrder := false;- d! d# @7 S% g7 U% n* N5 d
                        @.DrivingHome := true;7 T  Y% Z& ~" R* N8 ?6 `, b
                        rgManager.tryToStartTransOrder;9 U* v; K% T$ f+ C7 M8 f
                        if @.Destination = void
3 z+ b- U. a: y8 E' y% F                        then -- no transport order for vehicle @) `# r4 s0 B6 G  g! J8 e6 |( T
                                @.Destination :=! q1 B, v1 j8 l& @) g
                                rgManager.nearestFreeStation(@,track.~);
, m& D% N7 k, V( R                                newDirection(@);   # m/ d7 C- Z) h7 H6 p9 d
                                if @.Destination /= void then
) ~4 p, |2 F8 L4 p) Z- T3 I  w) z: z                                        @.Destination.NumReservation :=
' i, j+ x0 M2 V! Y+ R/ E                                        @.Destination.NumReservation + 1;7 D7 v' M. R. b, k# v0 o
                                end;
, d0 W; L0 s; J4 L$ j                                @.CurrIcon := "drivingHome";+ w$ O% t8 @8 p8 Y+ @% E: ]0 W
                                @.DrivingHome := true;
; a; [- a4 ~+ F$ x9 T4 E0 o                        end;
  |) ]& r; }; M; n/ y- c                else -- the vehicle @ is empty, both vehicle and part are in the same dock station+ I- w. [' y# _( \9 W9 b- D
                        part := @.transpOrder;9 P- ?( Z+ X; g
                        part.move(@);-- load part
$ D; h2 v# k. D; x( D" e$ a                        @.CurrIcon := "load";% J0 u7 K* `$ X- r) x
                        GlobalDistObj := part.globDestination;6 u8 Q& ^3 R9 i7 T
                        assignLObj := rgmanager.rgAssignL;
5 k& r: ]+ W6 B9 m( ?                        row := assignLObj.getRowNo(GlobalDistObj);' x3 F" ^( Q: \9 G5 m3 }7 m+ L& f3 n
                        if Row = -1 then -- since 70
1 j# A3 {0 k; ^, v1 a                                if lan=1 then
6 F( _; d7 u( ?0 J" n- i                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),0 }( N4 b& l" b4 x
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
( n  J) T+ a9 L) A) R2 j. V8 w  f                                else# `: i2 ~: J( F1 E& Q+ g- L+ ]
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),) P$ U& Z+ a0 _5 C- O& K' A
                                                to_str("in docking station: \"",?.~.name,"\""));                               
5 g. g) r: ?& \, Q0 O* g8 x                                end;
, \) j7 J7 i# x8 P9 N4 }% a* F                        else8 l) [# {" Z$ c
                                @.Destination := assignLObj[1,row];
( M/ [0 r5 Q- s# T- c                        end;                       
: S2 q' z! Y( R/ B6 F% f1 \# }                        newDirection(@);: d+ v6 e5 G. r* b
                        @.HasOrder := true;) u# z  e7 {3 s8 w5 W2 O" _  i. N7 j% T
                end;; t# M/ y4 Z  Z8 T
        end;
2 j' L. H8 d) Y' U+ X3 Yend;        -- of the method+ t' E( p8 R3 m% ]% P
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
8 t" e! ?4 e3 D4 ~4 d' e% C. K  d: t" e" w
这是AGV_putin中arrive的method。, R6 l; p; @% h; j

' _$ d- D3 e4 K1 _: I; H. B当到达物料速度越高时,这个报警更多,1 H& w* ?8 z+ O; Q! d9 c  v, E
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。& g0 z2 ]. P% \3 M2 E
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
9 @" J& P; E1 s5 p/ {( |8 n' F2 [2 ]$ f" j# y& T
另外一个小建议,就是move,所有的move都可以这样% r6 O. j' Z0 \, ~- ?
if not move() then debug end
& W5 Q( |) r+ z- m8 Z9 l# V" n这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
- G3 N* ?$ G# R2 Z) e, W# ^plant simulation中的free libraries有AGV模板,2 t6 b  W2 I# [. V0 z  {
里面也有案例。
! K0 x# ^. y3 V7 i+ @8 y  a" a我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。; n  ?3 |" x, Y- |
) g0 e( B6 k" R
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 " b/ B+ A/ m6 C
/ I( ^1 B, f$ J
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
: N  g1 w8 [) m: s' z这是AGV_putin中arrive的method。
5 L) r6 p; e% P0 L5 I% ]
$ v3 J% \8 Y9 v7 M0 u当到达物料速度越高时,这个报警更多,
3 M+ B. y" g2 \; s" s
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-26 13:02 , Processed in 0.019731 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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