设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8490|回复: 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'; M+ U4 P6 x  `9 G( P- u% h
*/5 s4 Q% ?  F" n$ g9 Y# U. t
is
0 P- J$ Z5 @" E9 i* i* V6 O- f        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
# t0 b2 f' T: N# J7 C# Cdo9 M2 O" y$ A# O$ b3 q- Y5 V4 p
        Lan := rootfolder.Internal.Tools.AOLlanguage;' E: w5 Y7 p* v( E
        if current = @.Destination -- else return
( N- }4 O) ~- S1 `        then* ^8 K$ p  v$ A" A
                @.Destination := void;
5 Z* ^7 J4 A, d! B$ W                if @.occupied then
9 t0 i% p7 Q* g  c2 U/ Y                        part := @.cont;
* W7 F7 h9 U; I; |6 X/ @; N! _                        @.transpOrder := void;0 m6 a) q5 m+ u; L+ u/ {* \  A, @
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,8 V; j7 W3 Z/ y1 w5 R$ R" e$ j
                                @,root.eventcontroller.simTime);
8 v# |& F- M9 r7 y                        @.HasOrder := false;
: m: g  \* _% {1 G4 o$ ]# F9 E                        @.DrivingHome := true;
& D( D) A+ c. r: y0 A5 E/ T                        rgManager.tryToStartTransOrder;6 ^8 `- z/ N/ m3 I
                        if @.Destination = void
: a  W: |) @  W5 }  z' b0 c4 V) o6 i6 g                        then -- no transport order for vehicle @4 }, Q$ p4 J; g+ ^' ?
                                @.Destination :=
. i3 P4 {  F! R' Q: M                                rgManager.nearestFreeStation(@,track.~);( v. t; G9 a0 `' `& g
                                newDirection(@);   
9 J" S: r& r: S  ~- W0 Q# F- _                                if @.Destination /= void then
9 g4 Y) x% z3 j. p& q6 A+ y: c# \                                        @.Destination.NumReservation :=
6 x  |. C2 Y$ v, b. ~1 N                                        @.Destination.NumReservation + 1;
; B5 G+ o: @% Y  l, h% W" F1 o% s                                end;3 Y$ w5 a6 [4 U3 |$ f4 @8 e8 r
                                @.CurrIcon := "drivingHome";+ `. @: M6 l1 c% o1 H/ h# d$ f
                                @.DrivingHome := true;0 v3 y, e8 D8 s9 I0 I
                        end;
- J3 d' R: R# }4 V: z4 e                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
  \0 {: M7 y7 h                        part := @.transpOrder;, `, t/ l6 }8 x" x/ ^) B
                        part.move(@);-- load part
8 W* u( g! X! e, k% B" [                        @.CurrIcon := "load";
6 w- Q- f* b) A                        GlobalDistObj := part.globDestination;
$ k7 ]( X2 f3 t" ]' H                        assignLObj := rgmanager.rgAssignL;
" M+ k% ]0 B+ e' g. e                        row := assignLObj.getRowNo(GlobalDistObj);- ?, m  Z2 y+ t7 l6 Y
                        if Row = -1 then -- since 70
; s6 G1 T# N, s( s                                if lan=1 then
4 E) ~) a- O6 U+ |9 q5 {# }% K                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),  p$ r) `' F" ^. c+ W, B9 v
                                                to_str("in der Andockstation: \"",?.~.name,"\""));( M6 w: Y# H) A: o
                                else# E" @& P0 M3 ]8 E# x5 f! p6 E
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
9 w$ b. _  g( A9 K6 V# ?                                                to_str("in docking station: \"",?.~.name,"\""));                                ; M. z( m5 @# K* F
                                end;( \' Z7 v0 r4 P, h2 d
                        else
* |: n- @0 m& Z% k                                @.Destination := assignLObj[1,row];+ F5 j2 b; Q) n5 }' I: }
                        end;                       
: \! o+ O3 O6 y; n! ]8 K9 U; a7 H# a                        newDirection(@);
2 ]( I' T* p# c! R8 z% d                        @.HasOrder := true;  D' z3 r+ R7 y. f; |/ K* g3 }
                end;3 c. C: D) x5 B( y
        end;: ]  B- U7 H" U% b, ]! G& b7 ~+ ~- p
end;        -- of the method
  _, }. {3 j3 A$ K' o: R
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
+ E( N* ^1 S' b6 R0 {6 P) \
' o1 C# S6 d1 i5 T这是AGV_putin中arrive的method。2 k2 U* X9 w/ N( \
  n$ a4 W# |: y$ d
当到达物料速度越高时,这个报警更多,
8 \7 _3 {& H2 Q6 I/ K可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。( A' i1 p* N/ M
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?8 D# P2 \9 v1 T  p0 G  \# W

0 Z0 Q% Y; Y8 N' d另外一个小建议,就是move,所有的move都可以这样
1 q( d/ G6 X5 f( z( [if not move() then debug end
$ Q3 l* l. s% e: g0 |* y! }  X这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。1 z& j* c5 |: Y0 K9 i. v1 h7 E
plant simulation中的free libraries有AGV模板,
! O8 e9 H  P1 @* [6 D$ R3 e里面也有案例。
: F6 k5 N! ]: f1 o7 ]我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。9 A0 M1 H% O; ~/ w
# K6 N9 d, h- G5 D
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 0 w; `: l6 g( [& @

/ J8 [/ @2 o* ?# E& j5 c那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
+ v# p: \5 Z) G: k: ^* u8 y这是AGV_putin中arrive的method。
4 h% k) R6 [6 o1 q- Z$ P9 U- U- {4 ^/ V2 Q( w
当到达物料速度越高时,这个报警更多,

/ P9 T/ {% `( H' K4 K另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-7 04:30 , Processed in 0.021035 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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