设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9167|回复: 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'
5 ]0 r" K* R- d9 c, r3 G8 }*/
* x* X8 p' u& tis
1 A0 ^: H6 w  l/ ~) ?, \7 K        part, GlobalDistObj, assignLObj:object;row,Lan:integer;" U  @+ _/ o% M1 J* |
do
% D$ j+ }' L* \# N) B0 f        Lan := rootfolder.Internal.Tools.AOLlanguage;
. C( A. i8 i6 ?( H0 s, }        if current = @.Destination -- else return
9 x& T% }  V' P, b- d        then
8 K6 T7 u) g$ ]" Y. d                @.Destination := void;
+ w$ e0 k! Z  H2 T: S% L                if @.occupied then6 l6 V$ Y& J: N8 c
                        part := @.cont;4 ]' p" N2 h) C0 I' H3 I1 z4 m' c
                        @.transpOrder := void;
! t4 C: `+ P* G; _3 n. o/ a2 V5 l9 P                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
9 y7 B& x* U6 h                                @,root.eventcontroller.simTime);
& J: }& W$ W' u6 B# K# ~  w                        @.HasOrder := false;
1 A4 y; I# r. L% {3 D; A* U) D                        @.DrivingHome := true;9 L4 K% j  ^9 Y4 j4 e
                        rgManager.tryToStartTransOrder;8 h; t' e% |; p- k/ C
                        if @.Destination = void% ]7 X+ c1 l! @2 K, p5 f( S
                        then -- no transport order for vehicle @+ A- [* \5 [9 \6 l
                                @.Destination :=1 A: i; ^2 G# ?6 w( F- {8 d
                                rgManager.nearestFreeStation(@,track.~);& H3 j3 z7 D; s( x6 ^% P- H1 }
                                newDirection(@);   
8 g0 q4 L% e# P5 x& ^                                if @.Destination /= void then
3 p  i) m% e4 z                                        @.Destination.NumReservation :=
6 J. x$ o1 }# G, p( E6 }                                        @.Destination.NumReservation + 1;
, r* B) h* H, N9 ]- h                                end;
  g3 L: g2 W6 j                                @.CurrIcon := "drivingHome";% u* E0 i5 d( Z6 U/ B( t" t
                                @.DrivingHome := true;3 Y& p! Q& P* D- S3 s
                        end;) Z1 ^7 u1 j! T9 J: X: k, }/ @
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station8 J+ K' L: V5 t2 l! S7 ]
                        part := @.transpOrder;
! X& [8 X9 F( c+ ]6 b                        part.move(@);-- load part/ k3 L: l6 T  H# X
                        @.CurrIcon := "load";/ C& {, o9 t1 S( s2 U+ U! ]0 U$ u
                        GlobalDistObj := part.globDestination;7 ?8 C0 l/ @) v# H; z+ o+ u
                        assignLObj := rgmanager.rgAssignL;
/ g, ?$ o  X7 {' X; D, _                        row := assignLObj.getRowNo(GlobalDistObj);
! `* |  e5 _1 U; X% E                        if Row = -1 then -- since 707 ^: `6 B  N+ r4 q& @- T
                                if lan=1 then
8 o) f. `1 R, N. G' _                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),2 D$ n1 \* y1 Q& ?' c/ N4 c
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
$ o: y2 L5 L. _                                else5 h1 P  z# @3 t& t7 v
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),  K" T/ w2 ]! e: z2 ]- V
                                                to_str("in docking station: \"",?.~.name,"\""));                               
( C- W3 ~: [8 z( {) U! R                                end;2 h/ ]7 k' y0 A: a
                        else
% M" K: M$ _1 B! w1 J: x! |                                @.Destination := assignLObj[1,row];
) c. V9 t& d: g! B! o                        end;                        ' ~. _& f  ]. L( R
                        newDirection(@);- |/ F' W3 U$ W% M! W
                        @.HasOrder := true;
# R% n+ T7 B% b                end;' }/ K) Z  Q8 s) K/ s* q( i
        end;& [$ m; M! M# c+ q
end;        -- of the method
& ?3 G# Y3 W7 j  c- k+ \0 Z2 k9 Y
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
8 [  _. w5 c3 n6 l9 x$ R2 O8 [9 Z3 S; ?5 Z) b( ]
这是AGV_putin中arrive的method。: c2 F  J: Q$ F
* x! U% h# ~' ^& s$ R/ B) e- c
当到达物料速度越高时,这个报警更多,
( |- y' A# ]: f3 V7 |5 E可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。! s1 G% a% i3 w- D4 x  q+ g+ I: P
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?# k1 k9 l1 s& {5 J& S  ]

+ o9 U2 H- R, o$ p2 q, z另外一个小建议,就是move,所有的move都可以这样
; B) B  u1 E" e- |- Wif not move() then debug end0 F# A2 Y# j+ a" K
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。! s; `2 R# {: y
plant simulation中的free libraries有AGV模板,3 Q( X1 \8 N: U( d- |8 s+ e3 m9 E
里面也有案例。
: Z* J- v8 A+ ]4 ~# M/ I- C我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
9 C5 s2 ~6 f5 k  t( w, h8 L" h  E- R( `9 ^0 T9 C% s* m$ ?
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 : B' h! B4 @6 k! E6 h# Z$ D

1 i1 v' ~3 g' p  f* [+ M那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
( Y0 |4 f. ^6 \这是AGV_putin中arrive的method。
* K( q, I' M' S7 w
/ P7 p- ]* v! G9 ~7 s) k; h当到达物料速度越高时,这个报警更多,
/ W2 G! O) r. x( d: m
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-7-17 16:14 , Processed in 0.016259 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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