设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8099|回复: 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'
$ s9 q  M, w. s3 Q% M*/2 T+ {+ E! z  Z0 r2 D" z
is6 M0 @7 p- n& O4 H- r# `# t% `
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;0 d0 V1 e! ~; L+ S' Y  ?5 E8 \
do
7 u1 J- {# o, M6 @) t# v        Lan := rootfolder.Internal.Tools.AOLlanguage;
! {% n$ `6 H9 p1 e  g1 x( D        if current = @.Destination -- else return
! ?9 e/ I) u8 ~- |  ^        then
4 w2 R) J3 P( X! L6 O+ g1 Z$ m, }$ S                @.Destination := void;4 W8 B; u8 E) V: T) a' H
                if @.occupied then' L, \. N. U, g7 w
                        part := @.cont;6 _; O7 k1 G9 _" F
                        @.transpOrder := void;6 K6 |+ ^9 q; u* z
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
2 E9 s" {. Y7 ]1 ~$ K                                @,root.eventcontroller.simTime);6 k9 _5 {+ g. }0 C
                        @.HasOrder := false;& ^# B% F, ]# Y) h) P! p+ p
                        @.DrivingHome := true;
  C( Y6 x9 V/ t& H9 Z+ k                        rgManager.tryToStartTransOrder;( q/ x5 _; P. k6 S2 z* Z; \7 U
                        if @.Destination = void8 T5 d& n* ~2 P
                        then -- no transport order for vehicle @0 D( U- @; C% {6 C0 X
                                @.Destination :=1 |9 ~8 G# G; g5 P
                                rgManager.nearestFreeStation(@,track.~);8 ~6 z' q: a! O; z1 [* V( L
                                newDirection(@);   
6 s; q( Y9 ^; t                                if @.Destination /= void then
9 `8 e/ a3 E* F3 |4 O! W, H                                        @.Destination.NumReservation :=
5 @3 M, l4 w) |9 {& a0 o                                        @.Destination.NumReservation + 1;" w7 V# b1 M& E( F, Z( i
                                end;
% T. Z% _( h0 C$ G/ v                                @.CurrIcon := "drivingHome";
. X5 _+ C) M: ?3 F6 y                                @.DrivingHome := true;
" I" a. L9 U! e* B% ]7 S" Y' r4 V                        end;& i$ f# Y* [! v
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station: {  d  v; ~, z$ u  |* j
                        part := @.transpOrder;. B% u1 d1 E& f$ s7 p3 K8 y
                        part.move(@);-- load part
% K8 T9 a7 C; E- m( ]: e- v/ x8 L) E                        @.CurrIcon := "load";% U* l% x$ M2 n9 @0 U) w% t
                        GlobalDistObj := part.globDestination;& i( Z% l& R) c+ F' m8 |) W2 O
                        assignLObj := rgmanager.rgAssignL;
& B) w! u0 F5 x1 h, D& L                        row := assignLObj.getRowNo(GlobalDistObj);. l3 X" u" V) R8 M  o+ w, v
                        if Row = -1 then -- since 70
8 Y6 m  ^: n( i$ V. C- n, |+ L9 }                                if lan=1 then
0 Q5 n( Z: V' Z6 Y: ?* [5 [                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
4 [2 ~4 c: }& C4 N, V) U  a" l                                                to_str("in der Andockstation: \"",?.~.name,"\""));
$ S/ R  X1 `! I6 |$ ~                                else
  R2 Z7 v' H4 h  i7 C, ^' g                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),0 O2 U# L- R& m* w
                                                to_str("in docking station: \"",?.~.name,"\""));                                1 p) l3 ~& Z! T  U
                                end;* O4 y0 |- {3 G& P7 |
                        else
# d% K& g0 J# S9 e* R) O9 {                                @.Destination := assignLObj[1,row];
- J/ {! A2 M8 s1 Z  @' s9 Q                        end;                       
% q. I; U8 m6 W- A& ?7 d$ P                        newDirection(@);( K3 |8 p; v7 {- B7 P
                        @.HasOrder := true;
% U' e( U( g) K                end;8 y( ~+ y% i) G# x! I
        end;
1 w1 u! r7 H3 Z1 A" k& a) Y* _end;        -- of the method
3 g. G6 _: O, }) [6 i
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 # _# k0 B3 u* a) s: v
: I" `/ q2 i( C( P! r4 ~6 k# p
这是AGV_putin中arrive的method。3 X$ U' s) F. A3 y0 }0 b2 Y0 {
' O) [" P# R' q1 P. u4 W3 E
当到达物料速度越高时,这个报警更多,
5 w) b( K7 @' Z可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。8 o- O  A5 ?% V
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
5 `2 Z% G& L. o) i* j) K3 e4 n8 Y6 l9 N  j$ M2 n8 y
另外一个小建议,就是move,所有的move都可以这样
9 G* c& {1 J* A& ^# f/ M2 cif not move() then debug end! y" N5 g& C& I& _& U1 d
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。. [; Y) d$ i3 w2 @% A% G
plant simulation中的free libraries有AGV模板,
. B2 `" e- G% w$ K2 \里面也有案例。
9 T  W- ^+ M6 C我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。" `# C6 e; g4 K
% B  Y8 B8 z) z
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
0 S* ]* E9 S! `" [1 R. x* a# A4 C6 d/ ~
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
2 E* V0 K9 B7 T. f2 [这是AGV_putin中arrive的method。
4 d, }+ k% y6 k
( ]& {$ u% H' B* k2 N当到达物料速度越高时,这个报警更多,
3 e' ^- L" F/ p8 z" A
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-14 16:34 , Processed in 0.016865 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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