设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7489|回复: 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'1 j- V+ f3 S: S: M, M" l
*/+ O. T$ F  E1 o7 d/ D
is
$ T6 g) r/ P! b! \        part, GlobalDistObj, assignLObj:object;row,Lan:integer;2 [& y6 E) `1 r$ E7 z
do
+ o. ~% O! s. G/ W        Lan := rootfolder.Internal.Tools.AOLlanguage;
$ g& r- t* z9 X- a        if current = @.Destination -- else return, m4 ~9 M" G9 T6 `  J7 x
        then/ |+ }, g1 W; c+ ?
                @.Destination := void;
5 y  _& o) s$ c( \% _                if @.occupied then
" x+ ^3 i$ O2 {. s& q7 u' h3 ^                        part := @.cont;
- f! o7 V5 M0 y, q8 L- b                        @.transpOrder := void;
8 j, E* l* [. }" R+ }                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,: r6 F  t1 C) c, f% P; t0 W5 a; f
                                @,root.eventcontroller.simTime);. r# j! X) e# D) j" h3 @+ i
                        @.HasOrder := false;3 D7 Y3 t* x. f$ w4 e4 y4 C% h
                        @.DrivingHome := true;
4 u0 t# a- t3 X8 c9 h9 T& m' I# Y                        rgManager.tryToStartTransOrder;7 t7 h% Y3 v8 B
                        if @.Destination = void
6 }4 Q) ~6 V7 \2 O7 W( }* T                        then -- no transport order for vehicle @& T# ]' P' @: h; c" P7 y  |
                                @.Destination :=
, \1 y) Z: D; e6 T# W4 v                                rgManager.nearestFreeStation(@,track.~);
8 I5 ^* J8 [9 i4 n" u0 k, ]. z                                newDirection(@);   8 E: U. D6 L4 a( F) C
                                if @.Destination /= void then
* Y2 R7 m4 B- x; N                                        @.Destination.NumReservation :=
$ ]# m5 c, p9 H5 Y  N1 [                                        @.Destination.NumReservation + 1;
' N+ |1 @2 u* n& r                                end;
  S/ H$ F# w8 Q. A: f  o                                @.CurrIcon := "drivingHome";
! A" \/ m( D/ L8 \                                @.DrivingHome := true;9 A7 K: t9 _' ~3 r2 c3 B
                        end;1 r0 L+ n0 ~8 M! g) Z
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
& W# ~. G3 c6 q) Z7 [                        part := @.transpOrder;
- }& G# t9 n% E# H  r                        part.move(@);-- load part
0 y$ V3 ?& U5 W                        @.CurrIcon := "load";2 y, D# Z2 b8 G4 P" Z2 T
                        GlobalDistObj := part.globDestination;6 h# @0 l4 o; F  d$ i  r# b
                        assignLObj := rgmanager.rgAssignL;9 k" r: s) p- k) q/ b" v
                        row := assignLObj.getRowNo(GlobalDistObj);( B9 ?6 Y" |& t. {1 `6 n" v) C& @
                        if Row = -1 then -- since 70
& \+ _3 Q1 j4 w, R( G9 M, Q' g                                if lan=1 then% A3 N5 J" E* d$ ~# Z8 V
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),/ {) F2 N8 L- g4 S! G. N& c
                                                to_str("in der Andockstation: \"",?.~.name,"\""));- P/ R) M! Q: M8 a0 [* X
                                else! R2 t1 G/ c9 |9 a2 `
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
5 S6 u6 \4 T3 O" b+ {7 g1 K                                                to_str("in docking station: \"",?.~.name,"\""));                                . _* r' w4 S) V$ m+ h1 _
                                end;
$ z; J6 _) t9 x3 u+ U                        else
- E  D' {; X' V+ c" W3 \1 ~, U) N                                @.Destination := assignLObj[1,row];# v4 j+ r! h; o! H  P
                        end;                        . A. p; A% T" [3 T2 k9 U0 G
                        newDirection(@);- G: u/ v  k2 |0 a' T
                        @.HasOrder := true;/ n! u/ ?' ^+ [( j2 l
                end;1 m9 `4 u0 c- }' j* t
        end;4 P& u0 u' B( E8 K8 k" l
end;        -- of the method! ]# h8 d2 f+ }* U9 }* S1 b
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 ( ^( w: A6 N5 c/ G, V
- X8 j1 C: \" O$ @0 D
这是AGV_putin中arrive的method。1 Z) M4 \+ \2 ^7 S# ~% {$ K

( P  F- l: z& z当到达物料速度越高时,这个报警更多,
) B/ \0 d/ E# m& l' |可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。. J, y' _3 \; S$ t% N# S5 t
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
5 Y2 C5 g, t0 v2 _& b( V" E4 _
: d( s, M  z% }另外一个小建议,就是move,所有的move都可以这样
1 {# _6 T; l! s4 |6 h1 bif not move() then debug end% N  v8 C; c0 m7 e$ ]
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。* c8 T. {0 ?8 b, |" Y  h$ A: W
plant simulation中的free libraries有AGV模板,
; X) e/ J: o+ a2 z4 L% V$ [' u里面也有案例。
2 I9 N  Q5 s: }% ]- ]/ m$ c! U我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。  ]7 d9 b; z: ^% f, m
$ Z, j5 M- S" R
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 $ Z& w; |% k) m7 Q; b
$ R  o! Q$ I+ a) Y; j7 a3 f' ?( p
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
& o. C) B/ |, G这是AGV_putin中arrive的method。
5 T6 R7 n; J- f
! _/ n3 k! T2 c9 N当到达物料速度越高时,这个报警更多,

, u0 r1 c2 r% o4 Z& B1 S2 o另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-14 12:47 , Processed in 0.019430 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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