设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6313|回复: 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'
  a* M7 G' W) K  ?*/
8 r% ]& k" t  b) ^is
8 N$ [9 Y7 B! }2 S3 i        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
- ?  n; O+ n' [6 Z; xdo. s. N- N9 k  |
        Lan := rootfolder.Internal.Tools.AOLlanguage;
" G" k7 H: h) W9 T/ S        if current = @.Destination -- else return1 N# i6 K% J# O  L0 b
        then/ A# f  z8 V* N6 M
                @.Destination := void;
# A! k1 l: Y2 f8 n/ Y                if @.occupied then
* r& k* O6 F- ~                        part := @.cont;
" I  ^* e2 p! v, F                        @.transpOrder := void;
. h, P9 q! \0 I4 M0 N% c1 `  @5 v                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
& j, N% W/ G  S/ D                                @,root.eventcontroller.simTime);
9 l6 u* Z# E. S5 t  j                        @.HasOrder := false;# T; I" Q3 I: `9 g' n5 ~" F
                        @.DrivingHome := true;% r2 y8 M, L0 F1 {# e
                        rgManager.tryToStartTransOrder;
' D; c, I5 R5 V( U+ i2 h! D; D                        if @.Destination = void$ A8 n1 J3 |: j6 H
                        then -- no transport order for vehicle @
4 q5 R  J+ d3 S; G" E+ d) F* h0 Q                                @.Destination :=
( z0 t8 v- z* g+ }3 Z: C                                rgManager.nearestFreeStation(@,track.~);
# _" Z) e0 y2 Y: N                                newDirection(@);   
. u8 J  S# I% w4 \                                if @.Destination /= void then
; V. a, w1 i% L( d                                        @.Destination.NumReservation :=
6 B* W: S# d/ s0 B                                        @.Destination.NumReservation + 1;  r& l3 v: s( \/ f
                                end;
3 T5 F6 h8 f$ m9 D- F                                @.CurrIcon := "drivingHome";* _; A1 ?1 N: g' T  P7 w
                                @.DrivingHome := true;" K4 e- N' d; c' z- ^& Z. s
                        end;: ~" z! K9 n! J% o9 y9 \* N  I
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station1 y- e6 X) T% a6 X0 z
                        part := @.transpOrder;1 s5 u. l! y) D% e$ G$ Z
                        part.move(@);-- load part7 S5 @, [) F1 L' q8 j, Q& y
                        @.CurrIcon := "load";
" ^8 g  Q& \/ i                        GlobalDistObj := part.globDestination;' g9 }/ ]4 Z8 w  Z1 I
                        assignLObj := rgmanager.rgAssignL;
& |1 h6 ?4 z) E                        row := assignLObj.getRowNo(GlobalDistObj);
, G- R2 f/ @9 J' W) L+ q                        if Row = -1 then -- since 702 H- T4 R3 b- u. N7 D
                                if lan=1 then
7 A8 R# K+ G6 ], t9 U$ X- ^                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
+ B& x& _0 I* _1 \6 n0 g# p                                                to_str("in der Andockstation: \"",?.~.name,"\""));
5 p6 z- F" d; c. C/ k9 r                                else
0 c* S: x9 P8 L                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
6 t" G+ s) J: h( S* j& T$ F# p  F0 x                                                to_str("in docking station: \"",?.~.name,"\""));                               
! L: n; J0 k4 G" p& ]                                end;
4 ?, T+ ], C6 l+ j: M                        else" I4 y/ S: ]& k- v7 d
                                @.Destination := assignLObj[1,row];. ~6 \, P- e( _2 c0 s& @
                        end;                        : c+ C+ m; ^, w1 Q
                        newDirection(@);6 K2 {; Z2 C- ^3 N6 Z- b
                        @.HasOrder := true;
: x- v1 D  w. [5 z" v                end;% F- ]; m& L) d' V& v
        end;
" G* ]% D* Q. L7 v! ~end;        -- of the method
( ^$ k; D( N/ ^! `0 ^% Q4 n( e
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
, ?4 M% L5 ]7 I3 Y; I% ~( j3 h" P0 k6 m6 k0 g0 A% {
这是AGV_putin中arrive的method。
/ Y0 O- k- G$ l% ?! l$ ~& l, V3 K% T3 h' [$ W5 t/ T' k: d
当到达物料速度越高时,这个报警更多,, J; Y: x7 m* K! ?
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。+ q: b! ]7 [1 B8 g9 V' s7 j% t- o
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
, W5 H% V: F5 g0 ~6 i6 a; {" u+ D& P% }1 p* a5 e
另外一个小建议,就是move,所有的move都可以这样# |! d6 F" v7 J% W1 o
if not move() then debug end3 M5 t/ [' m5 M0 A
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
/ y3 \7 g4 f8 q* g: n9 zplant simulation中的free libraries有AGV模板,
* f1 E  B/ P% S$ p里面也有案例。
& j% X* w/ a$ G( x; ~我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。' x/ q+ r+ M$ p( u) _
+ u6 i8 z7 g/ P& ?  P2 u$ S+ N
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 & I4 t/ k) C9 p) S% g3 C9 d( `1 ^; @

* ]) y, s& [/ K3 d5 k那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
8 m3 ~' m7 y5 r& J! Z: R& r这是AGV_putin中arrive的method。
4 ~7 J6 A5 v% v" x0 }  L& W' K; u# L( J5 C
当到达物料速度越高时,这个报警更多,
  g7 ^, {' \3 v5 O9 K
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-1-30 07:08 , Processed in 0.018337 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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