设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8661|回复: 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'+ h, I' F! k; x
*/8 r2 z& m$ l" H% @& c5 i
is
3 h, G$ \1 L) ^        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
; g8 J' i/ v! L( F4 Cdo
. h" V+ H/ ^, s6 k9 p3 f        Lan := rootfolder.Internal.Tools.AOLlanguage;
; ~+ r. V$ L9 j, o3 W  g, \8 @, k        if current = @.Destination -- else return
6 s; _9 r& h& ~& c# W        then
" [4 \4 ~6 g, q# W8 v: [/ }, O                @.Destination := void;
. m/ O) j6 p% R% Y                if @.occupied then) O( z5 I( T/ C; F  q4 p; q
                        part := @.cont;
4 Z: F, Q% u; ~4 x9 w5 Y+ e! P0 b                        @.transpOrder := void;' n. |. v) s7 ~" c: ]( \  m6 U) n
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
  e# \8 X! M, T9 z                                @,root.eventcontroller.simTime);7 g* A( W# v" T& {2 Q
                        @.HasOrder := false;
. I  @) r* {( w2 A/ }6 u4 p! }                        @.DrivingHome := true;
; u+ t1 m3 D% d3 o% g$ _$ ~                        rgManager.tryToStartTransOrder;% N+ E0 A! E  h+ ]
                        if @.Destination = void
- g6 G/ h) D" o% C4 r* P) S5 a                        then -- no transport order for vehicle @
8 \7 T& d; {% k4 {3 d# g& H0 _                                @.Destination :=) B1 \/ O* b9 i+ x) C
                                rgManager.nearestFreeStation(@,track.~);
  c: _5 a# h4 t$ c7 l/ v" p                                newDirection(@);   ( v$ a+ _3 E4 C5 X
                                if @.Destination /= void then; I4 L4 M- ~* I) _: G+ h
                                        @.Destination.NumReservation :=$ z' N' l  x6 ^" U# C
                                        @.Destination.NumReservation + 1;. T' B1 G/ c& A3 ?6 y
                                end;$ [5 O- R7 U: @5 T4 ]+ U4 ?
                                @.CurrIcon := "drivingHome";" {! I# k0 j# z7 M
                                @.DrivingHome := true;
8 K- g# f( P! B/ u. ?  z                        end;
! b0 L- Z. w3 Q) Z5 v) @" Q                else -- the vehicle @ is empty, both vehicle and part are in the same dock station- {" A5 E, l+ f8 `/ r+ f
                        part := @.transpOrder;, `( T+ t9 c: }7 r( ]$ I
                        part.move(@);-- load part8 Z9 @# U' S: }$ M& f9 z& ^
                        @.CurrIcon := "load";
9 J4 d, L* u% T& {8 M! D% M                        GlobalDistObj := part.globDestination;
( d( @. U/ ?4 p) b/ R                        assignLObj := rgmanager.rgAssignL;
! h% g4 D# v: b8 C" E5 k                        row := assignLObj.getRowNo(GlobalDistObj);
# I% \3 v* e$ j- y' E                        if Row = -1 then -- since 70
, W/ [$ V4 o- u, @: |& F2 r$ B3 ~. v) Y                                if lan=1 then
0 ~$ v- f0 @0 A  W% x                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),  S7 U1 n4 ~, a% y& q$ M
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
* w  R5 w9 e% G$ O                                else. U2 y( e4 p- ^! b
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),- E  w  \, I& T9 C& x
                                                to_str("in docking station: \"",?.~.name,"\""));                               
- g% ~* _% q4 W* I# H                                end;
' l9 F( z; d/ D% x                        else
) I' M& ]8 u) D                                @.Destination := assignLObj[1,row];
8 M2 i2 ~; k2 y( ^) q" r0 \5 Z% ~: n                        end;                        7 ^1 K+ z' N7 H  A/ ~% g% k
                        newDirection(@);5 R* L8 S2 ^0 h8 I* g( u: w
                        @.HasOrder := true;
4 w" n3 }& `# o: S                end;
5 S6 Y1 ^6 i" K9 e0 m6 t  s) `        end;
1 ~) \3 W- n5 t" S' o, z* ^6 h& ]end;        -- of the method6 J4 D; x! ~0 W, X2 y4 K7 E9 F- `
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
7 k! c! S) k$ X6 u
& o+ X, d9 Y4 R这是AGV_putin中arrive的method。& J  P: U. l, D& U

, |3 P7 @0 ~- w3 ~. t7 i$ w5 S8 G1 m2 F当到达物料速度越高时,这个报警更多,3 j2 b9 ^9 z* h- Z' i
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
( |/ K' g' ^  T- I- a程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
  f6 b, T5 V  s' Z1 s6 F
. t$ I$ n4 y& y9 W另外一个小建议,就是move,所有的move都可以这样
- }0 V( G2 M" g& B, t, Cif not move() then debug end
+ r1 E" e' Q6 y" t4 d这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
4 w$ k4 q4 ^1 s6 T" o0 |/ _plant simulation中的free libraries有AGV模板,* d- R' o* H, x7 J3 T
里面也有案例。
3 @+ Q( N8 h4 c( R: ~% G( I; p我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
) y* c: A) u$ u
9 k# q  |( }$ r6 L我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 5 K3 S8 C  ]' ]4 A8 W

" T; M8 r6 f( A/ y. S7 n6 w+ F那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 : D0 b$ q/ _* R8 T5 V9 b- J$ t0 _1 m
这是AGV_putin中arrive的method。' B3 M. E; _: U7 G8 y6 U

( z2 j9 K4 w* W+ G当到达物料速度越高时,这个报警更多,
0 M5 f5 u! [4 `3 W  a
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-18 16:20 , Processed in 0.015830 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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