设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7450|回复: 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'
* A8 F8 I# X# ]8 g*/5 m5 ~5 f; U( B7 _  {
is
. j. f3 ?9 O* V, w! w$ _- U        part, GlobalDistObj, assignLObj:object;row,Lan:integer;4 U# ?" l7 ]& x  Y8 T( o
do+ ?% l1 c. I2 d4 M# i, z
        Lan := rootfolder.Internal.Tools.AOLlanguage;
& }  g, m! c% I$ H! `% B& @) D' f        if current = @.Destination -- else return
8 a& C+ E, l! L) _2 N. O! L1 G        then' Q9 W! {( X& s
                @.Destination := void;
& y; x7 f! m% D2 ^$ p  v                if @.occupied then5 a+ m1 _! K. ~3 U# U- V5 _- O8 q/ A9 o
                        part := @.cont;
. D& Z8 e$ w9 Y& c( k1 Q4 C                        @.transpOrder := void;
; m3 n& B6 g! N6 o; [: x                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
6 B, V$ V8 q, ~4 v  ^) F, d8 C; J                                @,root.eventcontroller.simTime);; k* q3 y5 f! }' E: U
                        @.HasOrder := false;
8 Z5 `; ^* @0 U( C                        @.DrivingHome := true;, f% [$ C' a8 J7 b
                        rgManager.tryToStartTransOrder;
& t! E0 \. J) H( q                        if @.Destination = void! ?" F3 C' h3 O. ?9 V
                        then -- no transport order for vehicle @, d) g& t. _2 ~9 \) w! D
                                @.Destination :=
$ @( f0 C( e+ I' j                                rgManager.nearestFreeStation(@,track.~);
0 Z; S; ?5 w3 Z( m/ a) P                                newDirection(@);   , z! W# O+ W% f2 g' G
                                if @.Destination /= void then& O5 q  v  b) U1 F  E, l
                                        @.Destination.NumReservation :=
1 U2 J' S! N6 d  g                                        @.Destination.NumReservation + 1;
. p1 v) P8 x& _- K) ~7 l) h                                end;2 g5 }& R: z: \! q+ x: N! j
                                @.CurrIcon := "drivingHome";
8 ]( W8 ]7 }8 D% `: F4 Q                                @.DrivingHome := true;  W3 c4 ]- i0 u" z+ U2 L5 h. P" \
                        end;
3 t; n+ k+ x# [                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
7 `7 J5 H! }! s                        part := @.transpOrder;
! M9 ?/ d7 H* M% G! Y4 b                        part.move(@);-- load part
7 t  d# U& I3 S/ s) w                        @.CurrIcon := "load";, |3 }/ J! ]+ O& z- ]' \) U2 H
                        GlobalDistObj := part.globDestination;
& R1 [+ q, H, o! e9 y                        assignLObj := rgmanager.rgAssignL;* Q9 N6 j9 V6 q! L' B
                        row := assignLObj.getRowNo(GlobalDistObj);
$ v, q2 O' Q8 r: F) b                        if Row = -1 then -- since 70
: j$ ]1 |! A! w+ F; l% W                                if lan=1 then
2 t  e- Z+ \% r. f                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),! g1 m* n3 v# y/ {4 }+ A' K+ Q# a
                                                to_str("in der Andockstation: \"",?.~.name,"\""));7 q5 a3 I7 K* s/ N
                                else
2 ]& e2 h$ B. [+ O8 I) s" G                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
: I9 W% |& K, n$ X& k6 H: u; N2 r, R1 J                                                to_str("in docking station: \"",?.~.name,"\""));                                + G, O: i) ^( o' U9 V  w- S( [* d2 d) K
                                end;# s' L. _1 M: U0 H
                        else' \1 _1 [$ `/ h
                                @.Destination := assignLObj[1,row];! \) X7 a2 d- k( x: D4 y0 A
                        end;                        ( d1 |/ r) _/ c  o2 W1 n& j
                        newDirection(@);& o  |5 r! m/ Q. n: f+ _
                        @.HasOrder := true;4 ?8 h! Z" B. g1 s: e; a
                end;
  G2 B: z9 n+ t- n& c8 A; ~3 _        end;
  {# u3 i! o4 U7 Kend;        -- of the method9 T% p' W! Y, \. B* _
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 & q9 d, H& U; @& k: q0 H1 d4 C

7 U3 |) S# |2 y1 Z  `; r2 E这是AGV_putin中arrive的method。, U1 K  I$ U6 k# K3 w  u1 E

6 j" R7 |, t. T1 l5 g当到达物料速度越高时,这个报警更多,  A; n! S% b# d" `
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
& j4 j- e9 g7 a1 m程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?% O+ }4 R5 ?1 U. y  r, f1 F

3 Z: B  y% Y9 w. G$ R$ J0 y另外一个小建议,就是move,所有的move都可以这样8 o) h; R5 T$ e  B* U4 b
if not move() then debug end# L/ o" K6 b0 f  ]
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。2 ~0 m  S: z* O: G
plant simulation中的free libraries有AGV模板,* Q4 q3 y* a- s0 B0 a1 n1 [
里面也有案例。
8 ^2 Q  M' f5 a; m4 ]9 c- `我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。  C4 }' s! Y! ]& b7 e; ?

+ Y9 b6 K9 T" q9 ]8 U) h我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
" |5 [0 g5 b. ~; ]& g9 ?
# s' W* f# O: _5 _6 T" h那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08   D& ^: N' a" A6 b+ }
这是AGV_putin中arrive的method。
# `' d$ u5 W0 ^. C- j7 F/ k
) ?& ?9 R" o, P2 t1 F2 Y  R当到达物料速度越高时,这个报警更多,
' R' m0 Z; H  X' _; u$ v
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-12 05:06 , Processed in 0.022367 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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