设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5610|回复: 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') R. [% c! o8 `  i* [, O
*/& p# U5 ~( V  z- }0 S4 c& m+ X
is- Z2 Z# j. V! j; h
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
# C2 D$ ^1 D( G5 ~8 udo+ a/ p) ]3 _- O, N& [, q
        Lan := rootfolder.Internal.Tools.AOLlanguage;
, h! Y( m; U" r, n$ o        if current = @.Destination -- else return
4 L; W7 \/ t4 j( u( V        then8 P. m% A$ d6 J% [8 ]+ k
                @.Destination := void;) [8 }4 p5 u3 b: C
                if @.occupied then
' h* _7 \- @# z1 m) C3 U0 g                        part := @.cont;- P( S2 B+ e( @6 J; e& ]" V  X  c0 ^
                        @.transpOrder := void;
3 k( W: D7 S% \! s; H                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
6 }$ d$ y1 V$ p: \6 E                                @,root.eventcontroller.simTime);
9 A3 ^$ P2 F6 u. y/ [8 Y& C                        @.HasOrder := false;
' ?* t3 w/ k* Q: @                        @.DrivingHome := true;
& w- ]1 C$ c5 G                        rgManager.tryToStartTransOrder;
( w8 f# m8 K* h- s' V& s                        if @.Destination = void
: ?" G2 H! f* L4 n4 z$ H5 g8 y                        then -- no transport order for vehicle @
" c, T4 H/ u( `1 a" M                                @.Destination :=2 w: s6 Y% k# y% N, q* o! S
                                rgManager.nearestFreeStation(@,track.~);4 O6 @4 N* u$ u* L1 p) b
                                newDirection(@);   
+ q+ ]- m& |9 ^8 ^                                if @.Destination /= void then
8 C8 m6 l8 s8 u" o7 {                                        @.Destination.NumReservation :=' ]" n8 F" v& R% b; v" \
                                        @.Destination.NumReservation + 1;% m- |  U' [7 |) A6 M/ B
                                end;
- H, a: _, c5 O$ a+ F                                @.CurrIcon := "drivingHome";5 Z) K6 p6 x6 d: i% q" i" d
                                @.DrivingHome := true;) r& L/ L% O9 `% M2 x- f9 q
                        end;
( D4 x; |  L- {* y. C                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
4 J6 \2 T3 U2 O/ M+ ~, z                        part := @.transpOrder;
2 d0 ~( X1 v1 C% Q, H+ `                        part.move(@);-- load part& b* G" O7 K! J9 z
                        @.CurrIcon := "load";
- ^  D: \* p2 }% a                        GlobalDistObj := part.globDestination;. x+ L* a: ^1 @- W4 [
                        assignLObj := rgmanager.rgAssignL;0 d/ b% Q3 _, f' }) \5 L
                        row := assignLObj.getRowNo(GlobalDistObj);
, R1 g% w! h. z- A/ u+ w                        if Row = -1 then -- since 70& G! m9 ^# I( |  q( ~6 o+ ?
                                if lan=1 then* r3 B1 R- B0 j  Z( ~
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),: E' }+ N0 M7 V
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
/ I; K  J2 T& n/ [" [+ _# K* R! _                                else
/ U' ~' c0 T- @* ~. y/ c' R' N! C  g                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),5 l7 r( V* t/ p$ Y- u: h' M0 E# t+ |
                                                to_str("in docking station: \"",?.~.name,"\""));                                / F- S; F3 d$ q* [
                                end;+ @4 B% c; g! T  s8 F' j" `5 i
                        else
$ z) b2 z* S% D9 r9 U                                @.Destination := assignLObj[1,row];
8 K, z7 I( f  W7 V  S. a/ L* c                        end;                       
/ B# V% i4 T4 h" \  g/ E- A                        newDirection(@);8 K: C* i- M& ?7 c
                        @.HasOrder := true;
: l5 w2 D- U( Y                end;
  _  d! D7 k- u7 n% {        end;
; T! S& p% L9 ^; i3 g- y( aend;        -- of the method1 s5 {: Y4 z" ~
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
* n: e2 ^- H$ I3 F$ _; |; E* f* o4 F
这是AGV_putin中arrive的method。5 w0 Z3 e/ l$ A' B" @! r
) F- K+ d/ a4 d" x! E: d! Z
当到达物料速度越高时,这个报警更多,3 g% s7 b# J" i( w/ e
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。& S( p% H4 ]7 r; V2 }
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
, N' W9 b5 N3 x# @
' E* Q# K6 t: I7 O另外一个小建议,就是move,所有的move都可以这样4 h5 d. d. s# y; a/ {
if not move() then debug end
$ k3 t; t. f: ^8 W8 z# T% S这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。) p! u1 Z! o* n" z1 @4 f% ?
plant simulation中的free libraries有AGV模板,$ J+ ?& B0 U) _! d% @  @4 j, }
里面也有案例。
1 w4 V: s5 o- s2 o" x: y我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。1 |2 O5 B% i: k, s

: D" i% |$ z8 o# X+ P& C/ Q; e我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 - g9 A1 W% S4 N

! a2 _! r# d: w, i1 N" c3 P" F那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
; f* s: q+ W- V" t8 k& v这是AGV_putin中arrive的method。( B2 P- m- y8 E2 w! v
7 A) {; @- r! |! L
当到达物料速度越高时,这个报警更多,
/ C+ n/ a1 l/ g6 T9 S
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-12-8 23:05 , Processed in 0.020935 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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