设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4838|回复: 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'- V, i: e. e5 h, \  p; Y* g+ C& Z
*/
" e$ L; ]& g4 C+ `( ois0 o3 I8 {& L% |9 o  ~) b' s) t
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;7 W" I- G, @! a; c
do
: t: \/ C' w" T. F* b& a3 f        Lan := rootfolder.Internal.Tools.AOLlanguage;3 Z! ]) H! t) Y8 M
        if current = @.Destination -- else return! n* k5 f3 x% |- j" \* z9 U
        then
/ S* ^+ i6 G: e                @.Destination := void;1 a7 d: Y. w) i! }2 ]9 x. V! T1 `/ s
                if @.occupied then
/ J; Y9 D1 ^+ u$ K                        part := @.cont;
6 L4 s7 {8 T9 f! `8 B                        @.transpOrder := void;
, U! C2 F3 E6 k                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,$ t% N! J8 e" M
                                @,root.eventcontroller.simTime);) V/ [& s. E0 O* ~
                        @.HasOrder := false;
/ l1 f$ R( Z: f4 b6 w                        @.DrivingHome := true;; S2 P3 T, [+ }% d6 ^3 F
                        rgManager.tryToStartTransOrder;; ?) ]5 s+ @2 V
                        if @.Destination = void
( P! b; a* ]. |6 I/ R6 E& r                        then -- no transport order for vehicle @
& z+ y) E7 A. v7 M                                @.Destination :=
0 S( i  m% S. M$ x% E                                rgManager.nearestFreeStation(@,track.~);9 x6 P" y. R3 v" r) T# r
                                newDirection(@);   
, U6 |9 G  [$ z# n! P- u                                if @.Destination /= void then) k* P6 R( E( j* [2 w! m
                                        @.Destination.NumReservation :=) P, o) i9 O2 P! e: ~  f) [) J
                                        @.Destination.NumReservation + 1;( R9 Q8 m  x7 a5 K0 z) L  p: f
                                end;
' ?- ^9 }2 G/ b7 O# h% v5 {: }                                @.CurrIcon := "drivingHome";7 i! S4 D2 I5 I# T# X  x3 w* Z
                                @.DrivingHome := true;
! d; O2 v6 k" t! [; d) k                        end;2 e$ G; J: p( r  e9 @$ z' l
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
# I" g; H: f/ O; m2 j                        part := @.transpOrder;
, Z7 G* G0 _# M                        part.move(@);-- load part6 w! P" w$ t8 y" R
                        @.CurrIcon := "load";
; F# K6 p! g0 o  ^0 C                        GlobalDistObj := part.globDestination;
: h: K3 C( C, W# H/ j0 m: B& e3 w/ }                        assignLObj := rgmanager.rgAssignL;
1 s2 L  H* Q: `$ o5 p                        row := assignLObj.getRowNo(GlobalDistObj);
' ]5 E4 O, s* t; _                        if Row = -1 then -- since 70
( G  [/ m  e' [6 O" O! `: E3 A                                if lan=1 then3 b0 d/ Z" l/ l4 G8 o2 p
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),  T: F- d# f. q! ]( P% n3 x
                                                to_str("in der Andockstation: \"",?.~.name,"\""));6 \. Y/ `) y" J! V+ F( _+ Y1 @% |* h
                                else
6 ^/ l7 [! M9 a' q6 S& Q                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),& r; V+ Y, a/ h3 U! n" i% R+ [3 w5 a
                                                to_str("in docking station: \"",?.~.name,"\""));                                $ f! L0 Q- C8 R4 I( P; h
                                end;4 ~$ t" M; ^$ p' s5 N. b0 n
                        else/ n/ G$ q, [6 m9 E
                                @.Destination := assignLObj[1,row];) d: b2 w$ j1 k6 l: o1 `
                        end;                        " n- z: F# u. ^) `7 U( F( g
                        newDirection(@);
3 N' I- ]3 {5 ]" ^2 O' b# ^                        @.HasOrder := true;* f& O/ p5 H$ m
                end;
% i- S, E3 ~6 x2 a        end;
2 X+ \7 P+ p( Iend;        -- of the method: `/ p2 C; T5 E' ~  Z8 B/ F
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 * L1 n3 x. d6 Y0 m7 z

9 W9 r/ J  |. C这是AGV_putin中arrive的method。( j+ e$ J2 v4 F9 W, u: A

; y1 e. y7 r+ }5 o当到达物料速度越高时,这个报警更多,
! c9 N# a/ k# a3 a" H: x; H可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
4 S3 J0 }% E2 t) x* I程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
6 h  B# c0 J' a& Z* C# h; s* M! P$ f
另外一个小建议,就是move,所有的move都可以这样) J. z( D# i6 T
if not move() then debug end
& @9 v0 r0 R9 L# j这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。6 m, {5 b* ^1 a4 I/ A" i  G
plant simulation中的free libraries有AGV模板,
" u2 n3 J& I8 s7 j  p! _里面也有案例。
$ N, ]4 A' b% z我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。0 p7 ^5 z- m* t' H  ~5 ^

) u! ]% {( u) u5 ]. E' J6 |我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 ; i! O- r" M' ^- c+ |6 V& J  K

) m# G3 {) j! h- D# }. @那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 ) o' ~" b6 G, M" D6 r$ w
这是AGV_putin中arrive的method。( a, V" I# B9 m
7 n4 u0 C; V! g5 h
当到达物料速度越高时,这个报警更多,
; r3 O' l) h1 Y9 M4 m6 `2 E. M
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-8-29 01:27 , Processed in 0.016288 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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