设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7066|回复: 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'$ [  {9 z; `  B+ C
*/
! p4 s3 z* A4 O% J+ s. S: tis
6 B4 R+ B/ f$ d3 d2 w1 ^# G9 k        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
0 [+ [+ \. A) y, U9 W: @do3 m( N1 W: t  {7 L
        Lan := rootfolder.Internal.Tools.AOLlanguage;- r- G1 m0 l# t, ?
        if current = @.Destination -- else return
7 T) g+ f/ O" w" `# ]' f        then9 k4 G; e8 h, m7 q
                @.Destination := void;
0 c3 P8 o6 C: S$ G* r                if @.occupied then% |( c% Z4 `" B% A" o) L$ C/ q9 {
                        part := @.cont;
! t" `3 E" W: p* |                        @.transpOrder := void;
. |3 n! Q3 N8 g' Y  _) G# P% \                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
, k& h- u' x3 z4 t9 ?. G                                @,root.eventcontroller.simTime);
) u7 j4 ?9 A- f! t9 N1 I. T8 g                        @.HasOrder := false;+ B) u6 o+ ^( o; Y' Z
                        @.DrivingHome := true;: K" |  t; A) ^
                        rgManager.tryToStartTransOrder;
# v( i7 A% b% `; l, v7 a6 F% t                        if @.Destination = void' r7 k( u9 m1 {4 k4 {
                        then -- no transport order for vehicle @
% R0 `# X9 H5 O9 i! \( j. N                                @.Destination :=7 Y/ O) }& S4 @: d' P- d; @' s$ K' R
                                rgManager.nearestFreeStation(@,track.~);
7 j4 f9 I/ `3 G3 g  d" z                                newDirection(@);   $ C  M6 q$ ]' q- e; K0 L
                                if @.Destination /= void then0 H% v  b/ i" _
                                        @.Destination.NumReservation :=# x/ U3 p/ F! c& Q! g* A; d
                                        @.Destination.NumReservation + 1;5 t" b% |) z' V' a
                                end;" y( s+ M/ G7 J( v
                                @.CurrIcon := "drivingHome";
) a" ^1 F# S" A- ]% K                                @.DrivingHome := true;
+ B, O# D. m) Y; c( ]  t4 X                        end;
0 X, W% K& @( W1 d2 m# J+ M; A1 v2 \                else -- the vehicle @ is empty, both vehicle and part are in the same dock station) ]/ T" A; S& g. V$ ~# F
                        part := @.transpOrder;' u: O& h, q; f+ `
                        part.move(@);-- load part
6 Q' W: l% N' O8 C2 {/ Q) s. Z* s7 U                        @.CurrIcon := "load";1 k2 I# Y$ S% `. c# D! m
                        GlobalDistObj := part.globDestination;
4 L' ]( H. ?; h9 Z1 C                        assignLObj := rgmanager.rgAssignL;
/ _# `) H0 O, J                        row := assignLObj.getRowNo(GlobalDistObj);* E9 S# D: F" Y
                        if Row = -1 then -- since 70
! u. X$ U( Z* x4 f8 c* l# H. ~. R8 X                                if lan=1 then: e- E: p& {& V& b6 J
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),- m# C2 S1 t0 i+ V
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
9 f+ k* t; ^1 ]                                else& N, W, a5 m+ R7 B5 K/ A
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),; x# E( i: q+ e  M( Z+ @% t
                                                to_str("in docking station: \"",?.~.name,"\""));                                , |6 D8 t) v8 T+ J( n
                                end;+ c, _- Q- N% Y& j
                        else; I+ g. L. q" b3 T' K/ O- v/ Z6 L
                                @.Destination := assignLObj[1,row];
: W) b2 k8 }/ W1 v; x& s                        end;                        : H& F8 }# `0 K% x( m$ ^
                        newDirection(@);
; }8 |3 _$ e* [( K* O4 A8 R                        @.HasOrder := true;
5 X& D: G- C' m8 w! x' v2 P" T7 p                end;: Q2 E6 b6 w; ~( S
        end;- m# O6 z% X5 z+ h
end;        -- of the method
0 a$ P7 t2 W1 d: ]! B& @" `
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
" A, k2 P1 N( ~( X5 ~# [7 U- A3 T
2 [. I6 \$ v0 j! b7 ]3 ?4 j0 K( d这是AGV_putin中arrive的method。6 B5 N6 Q3 y- T4 }( t$ q* J- u, U

! F/ n3 T6 T) L# n# L当到达物料速度越高时,这个报警更多,1 F0 X, c1 d, ~3 m# |
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
0 ^# m5 j5 F' X7 {2 G程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
5 p/ o" I6 W. Z2 [+ @5 Y1 }- H5 K  _# w: U
另外一个小建议,就是move,所有的move都可以这样
5 a( G% S+ e. [0 `if not move() then debug end- q1 V/ X2 s& H6 T
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
# I/ _9 R8 O1 P+ \. jplant simulation中的free libraries有AGV模板,
% m( a: x! T. e4 x8 U2 `里面也有案例。+ |' S5 n$ m* |' h. Z
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
: v% @/ _; J) @9 K  s
, e: n; P+ u# J( y我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 ; ]$ {. ?  J1 T; `  ]

; u+ m2 D" m' W4 }$ ?  r) A- G那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
, r  J7 Z1 X4 f' k这是AGV_putin中arrive的method。  m% f7 X" \5 H; i
' s+ g' s  q& g# F, e
当到达物料速度越高时,这个报警更多,

  s) a: s4 r4 E% e  J另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-14 15:53 , Processed in 0.018729 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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