设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6190|回复: 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'! }, e2 }8 E% L
*/
1 X0 e, V9 t5 R7 V3 D* T- `, g! fis
8 r# H( s0 L' B; d! x& V4 e        part, GlobalDistObj, assignLObj:object;row,Lan:integer;; S! P9 C) C5 H6 j1 R
do
' h6 }: [/ F3 V        Lan := rootfolder.Internal.Tools.AOLlanguage;+ K2 ~; {6 H8 X. e$ t9 `! d, g$ @
        if current = @.Destination -- else return, ]: V3 {8 ~, u! z7 Y
        then
9 W; T: g; w5 l) Y0 b/ p                @.Destination := void;6 ?8 ?" f% S5 ^# ?
                if @.occupied then
: e- r$ h$ b7 D5 \5 d' O                        part := @.cont;( j/ P* x5 K: I# \5 ]5 E; X
                        @.transpOrder := void;; }% k4 t. r0 L
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
$ u; ?  e+ Q0 Z9 q: j                                @,root.eventcontroller.simTime);
8 v& [# u# v/ Q9 m% n8 ]                        @.HasOrder := false;
3 V4 }$ J  m+ D" k( e" h                        @.DrivingHome := true;- y+ M$ d2 K- N5 t3 [; [
                        rgManager.tryToStartTransOrder;! p8 d. Y+ p& N8 z! ]: K
                        if @.Destination = void
6 n5 J( `$ V) q+ C                        then -- no transport order for vehicle @
, `% y7 n5 x; T" H2 n8 @( r                                @.Destination :=
$ d6 L" v2 t" Z7 K( s7 G                                rgManager.nearestFreeStation(@,track.~);5 T9 r4 L0 D$ I" {6 c# K
                                newDirection(@);   
8 Z1 z. A5 Z% b' I7 B. N                                if @.Destination /= void then  C* G- z* t! B5 i5 x
                                        @.Destination.NumReservation :=$ o$ [$ h1 K8 X+ K7 R% L
                                        @.Destination.NumReservation + 1;
; ?; K- k  L7 d# S: ^4 o5 h( `                                end;
$ R; {2 r7 T1 G( f$ z4 T! K9 D& V                                @.CurrIcon := "drivingHome";
# U# u/ `  b! [- h                                @.DrivingHome := true;8 t( a. J$ `1 o/ {/ R
                        end;
2 T0 h) M7 k) C; E. K5 N                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
+ w' L9 ^9 T$ M  G7 c3 \9 D! I                        part := @.transpOrder;! L5 b+ ~+ r$ v9 I5 C4 K" W
                        part.move(@);-- load part  U; C* p1 N6 g" [7 `) q1 \
                        @.CurrIcon := "load";) h& ]0 Q2 G: e$ O2 @% S0 m
                        GlobalDistObj := part.globDestination;
6 }# }* S/ T+ t2 O) ~) L                        assignLObj := rgmanager.rgAssignL;0 u/ g& K& P8 f% M( _2 H, o, _5 V
                        row := assignLObj.getRowNo(GlobalDistObj);% g; E/ e! J6 E5 w5 A; h7 B' [
                        if Row = -1 then -- since 70
' Z. A, m/ U0 Q1 X* ?& ^. w. n                                if lan=1 then
; b# V3 A7 J: T2 [! D8 }+ N                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),& |, t/ |- ^( `* ]6 T
                                                to_str("in der Andockstation: \"",?.~.name,"\""));( F% S$ e) b3 r0 Q: D/ w0 x- I
                                else
* B9 @- a4 e, q8 ^. k8 ?: o                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
( [, S4 m8 m( t% g0 x                                                to_str("in docking station: \"",?.~.name,"\""));                                ) k' I, v/ [! E( n
                                end;
! X  F2 g! A9 K* o                        else3 L1 M9 F' D( R  _5 G
                                @.Destination := assignLObj[1,row];; l6 X8 V8 J1 s. _8 Q
                        end;                        # Z" R- P" o( }% V
                        newDirection(@);
5 X3 N0 m( `+ c& y                        @.HasOrder := true;4 |1 b( e# M# [- C& T
                end;( Y' K: _+ K% f
        end;, @; u4 O8 j" H2 T
end;        -- of the method! M0 w$ w3 t! E4 \  C7 C3 o6 F
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 + z7 {3 n* x+ \
0 e! ]$ K1 C* L; X" y
这是AGV_putin中arrive的method。1 Y/ w& ?$ ~" ]0 ]
1 `0 `( _! L' F
当到达物料速度越高时,这个报警更多,
; ]# F+ ]2 {. E: B  q可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
8 L1 s& X: j: T9 D$ @程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?3 j# _' e# C, [1 t

8 R1 F9 Z6 ^) b' `; u0 w- h+ O另外一个小建议,就是move,所有的move都可以这样. l0 g7 I0 h* @$ U$ x7 Y
if not move() then debug end7 P( e5 j& _/ M& P! r) M" J8 {
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
: p9 C  r  i$ H% d0 Y: hplant simulation中的free libraries有AGV模板,9 i& [" K5 Q' l# m) p4 n0 d
里面也有案例。
1 |( w; K+ O  d1 s8 A1 p+ ~* [1 U我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
3 ^/ I+ m- w5 b$ u# z
8 t( i/ v" V1 _9 j2 c我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 0 c. A: _$ i6 c8 b$ B1 _7 j+ z
, q2 L* W0 n+ S( ]; k* m, ?
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 : q! Y9 Y7 ]( N4 S
这是AGV_putin中arrive的method。, {# t( s4 p5 A" W% V

, d  o3 G, w$ r$ C当到达物料速度越高时,这个报警更多,

4 `3 ?. j) m4 C: ?! g6 l0 s- W另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-1-24 01:42 , Processed in 0.019992 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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