设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7111|回复: 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'
. e9 Y7 F2 l& f$ g/ G*/
& v5 A: X( Y) g* ~" _9 P5 k' pis  }: k$ W1 b+ G
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
$ A- _* H" Q5 N, v1 M" L8 rdo
7 ?) N. Q5 R6 V5 Y        Lan := rootfolder.Internal.Tools.AOLlanguage;
& v( W1 |# g* a& Z1 f        if current = @.Destination -- else return: R1 u, q2 [7 ]( w5 N7 n! x
        then, v6 e6 e: n- q9 A: D7 E5 G: S
                @.Destination := void;# p' f+ k7 e  {
                if @.occupied then
) o; P5 Q0 S  k9 N) y6 y+ [                        part := @.cont;
+ u5 _( L- {% ^5 {. E1 ], M                        @.transpOrder := void;* Q, b6 b% M3 j- f. W% O
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
! U( G$ Q: d: f5 \                                @,root.eventcontroller.simTime);) l* l% M3 ^; G: E
                        @.HasOrder := false;
  w5 N7 x" \( n: w3 h9 B7 h                        @.DrivingHome := true;
0 @- T- w0 ?& r3 p* t# M                        rgManager.tryToStartTransOrder;% l" h" j1 u0 d( {
                        if @.Destination = void! j& P# g% A& J3 H0 Y: I2 v3 |4 `
                        then -- no transport order for vehicle @
2 n! T1 f5 S3 ]* T1 V                                @.Destination :=
1 x3 l. d( d7 U5 H' g+ }% [+ f                                rgManager.nearestFreeStation(@,track.~);/ E- V8 f* N, M$ ^4 `" f; N! _
                                newDirection(@);   
/ [% ]6 j' n- W, H% j  x                                if @.Destination /= void then
9 H* c, w! c1 i2 s                                        @.Destination.NumReservation :=% _* D- P# S7 U/ P  P: }
                                        @.Destination.NumReservation + 1;
8 s  S. s; z+ J9 Z) y9 X                                end;
" S3 q  F4 D4 {# ?% w$ C( Z                                @.CurrIcon := "drivingHome";
6 A5 \8 U9 B8 B5 l% c: w                                @.DrivingHome := true;
3 a- r7 r7 H$ N" ]$ a0 I! W                        end;
8 w- N5 ~; w# Z9 v8 s) b% b                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
$ |. n) q' P% L: u( B! Z                        part := @.transpOrder;
  M; h0 c8 l% f! _0 r7 h                        part.move(@);-- load part
* m5 B/ l4 Q$ U                        @.CurrIcon := "load";
5 Y7 i6 \1 Q# m7 a6 q; E1 Z                        GlobalDistObj := part.globDestination;  ]& M7 X) S8 h9 I% R
                        assignLObj := rgmanager.rgAssignL;% j& k) q7 L' l! W( P
                        row := assignLObj.getRowNo(GlobalDistObj);
8 c: I/ @" }$ b* N                        if Row = -1 then -- since 70% e# m; @# w; L
                                if lan=1 then6 Y, m- ~! G8 R8 E6 A" H
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
- g, d, B3 x6 D                                                to_str("in der Andockstation: \"",?.~.name,"\""));
! J( I7 K& Q- k4 g6 h                                else
+ ?4 N) l' T3 Z4 ?; Q                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
3 `) o' x2 d0 z4 i( s                                                to_str("in docking station: \"",?.~.name,"\""));                               
! q- E  Z: D6 i: D# g                                end;
5 r* V# \$ J5 K  X- F+ y  ?. ]                        else
; u5 e! N% [5 e! F7 _7 I                                @.Destination := assignLObj[1,row];, B5 e: S& J: v( X
                        end;                        * A# l8 h" l8 {0 d" B! H0 f
                        newDirection(@);9 [! o7 m: g* B9 `
                        @.HasOrder := true;
! _* y1 N0 G# `5 l) Z5 J  ]                end;
8 {" |  }4 u% j* U  P7 B/ q        end;
8 d1 ]; `3 t& p2 S1 c* J/ s0 pend;        -- of the method
/ b; r0 H6 l8 N% ?1 j
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 - O8 `7 |0 W: n" y1 Z
( ?3 w" X3 [5 y
这是AGV_putin中arrive的method。
3 W4 r; s4 \0 J7 k3 c3 f9 D
5 ]/ T7 N9 ^5 K* [当到达物料速度越高时,这个报警更多,
, U( G) k! y! {  O3 d可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
& n9 F5 V+ _+ K+ V( w程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
+ g5 o+ w; z0 M) D3 x1 D( \" S
+ U/ G5 x, @7 V  [( z2 a3 z8 N另外一个小建议,就是move,所有的move都可以这样
3 `4 t, e7 U5 ~7 i3 R# @if not move() then debug end
$ w5 o* Z2 N2 `/ I. Q这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
4 u( O  x. d9 Z2 x1 u$ ?8 bplant simulation中的free libraries有AGV模板,
* E" [: ^3 r5 M3 X里面也有案例。" q7 O+ y% @9 L: ^7 O* g; f# D
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
! B! o" r5 s& \8 Y' T" \9 `4 W0 y
) R: k( g9 m/ I/ y/ G+ }我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 . G9 A. W" O7 ^5 z- `* p' x' ]/ [

" A) i/ g+ M2 N6 b! g5 Z0 ~那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
9 _. E2 e7 j( J" J- a+ `这是AGV_putin中arrive的method。% @* V& S* F. e, W: }$ c* B
& o1 v9 E# \2 P: J1 v- K) V
当到达物料速度越高时,这个报警更多,
' {0 P* q1 k7 s; H% T" |
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-19 04:14 , Processed in 0.020094 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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