设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6602|回复: 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'( p0 `7 J* P' _( k( K
*/
$ e; g: w5 y+ b% W: his
; e1 ~$ g0 L$ I2 a" j# [  ?        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
! R, _! _2 s2 ]. J5 i( Wdo; C& j5 u/ a0 w) i7 t* x
        Lan := rootfolder.Internal.Tools.AOLlanguage;: d7 J  |3 x2 q7 ]4 T/ h
        if current = @.Destination -- else return
# m* M- G; s4 z3 n: P        then9 n8 d! C4 e% Z# M# V/ K" n, E
                @.Destination := void;+ V( X0 M* l- M- C5 x4 X3 t& _; |  ?
                if @.occupied then  B) l1 q" M, t9 L
                        part := @.cont;1 N% C2 @# F/ z$ R6 N
                        @.transpOrder := void;3 w; K9 ?  M: L, w1 m$ b
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
" s0 |. j4 t+ I( f$ I% p6 B                                @,root.eventcontroller.simTime);
5 n' {8 l. d; S6 R9 l5 N: u1 R* y                        @.HasOrder := false;* Q) F! B$ d# L5 g0 u
                        @.DrivingHome := true;
( ?% i' N3 {9 v3 c+ q, g3 p                        rgManager.tryToStartTransOrder;! J" {  `! @3 {! c
                        if @.Destination = void0 a7 }  n/ Y) X. f" u
                        then -- no transport order for vehicle @
8 j+ \6 g8 K  {; D, h8 f, v; C4 L                                @.Destination :=
1 J$ E5 z9 B* e2 {                                rgManager.nearestFreeStation(@,track.~);6 q6 e: k. Z- B3 }* }
                                newDirection(@);   
( {( a( r$ Z6 H& ]) v5 d( U                                if @.Destination /= void then9 S( t5 O) [: ~% f! ~
                                        @.Destination.NumReservation :=
7 C; N/ M( U1 z* n1 u                                        @.Destination.NumReservation + 1;% u$ z8 |2 X- u, W5 U2 P) t+ m) S
                                end;! v) x& C# U6 S! g3 O
                                @.CurrIcon := "drivingHome";
  m+ a  `: g1 V( x7 b- H! p                                @.DrivingHome := true;! q  S* ^5 {" i  @
                        end;7 f# ~1 \( Z  u1 `+ O
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
9 Q) o# \9 A+ E# J: E- t                        part := @.transpOrder;
/ U6 m% i  h: V                        part.move(@);-- load part
( q5 Y0 _2 U! K; `1 w; W" X/ E                        @.CurrIcon := "load";8 {# e5 f2 u3 @, x- M* V$ b- c$ H+ ^
                        GlobalDistObj := part.globDestination;
3 `9 L4 S8 G+ r2 U* c2 t, `" D% ]4 r                        assignLObj := rgmanager.rgAssignL;7 X, s. i1 x" O4 @' r/ Y4 }
                        row := assignLObj.getRowNo(GlobalDistObj);+ k3 p+ [& }3 z+ P1 v6 F
                        if Row = -1 then -- since 70
7 k% H' M% B& k+ d                                if lan=1 then0 ]* w6 ^" W3 G  y# q* @- T8 Q
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
! u  N* ~2 ]: g1 U4 U2 C) [                                                to_str("in der Andockstation: \"",?.~.name,"\""));) q9 k* W- h9 g2 H
                                else
2 ]0 J6 @9 h( E& b5 |( o" t# S  j                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
; [' ]5 k1 y: D+ v                                                to_str("in docking station: \"",?.~.name,"\""));                                ' Z6 c# c( Q. ?; e" G2 \) V
                                end;
  E4 K  \# J) [, ^6 w! c2 ?8 J9 x4 S; H                        else
. r( K+ Q5 r5 v9 ~" R/ s                                @.Destination := assignLObj[1,row];
) j' x/ a0 r+ Z* P( T* W                        end;                       
# S! Y# k" ^: O/ c/ q. W$ |; ~                        newDirection(@);
. ~+ n' ]+ p4 s" R6 N                        @.HasOrder := true;
3 e) u- ?# i$ L                end;
8 f" Z) l( h4 f. q) U- q        end;3 W+ `2 t8 e( N; t
end;        -- of the method
" S  N1 i  O; \% E" `) C2 n  W
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 1 ^- q$ R7 E1 b) v8 Z
- \- D) R8 G5 `( K/ l# [) W7 M
这是AGV_putin中arrive的method。
: w2 Z5 U. E0 U' _
. t) P; \1 O  ]* V, C; Y. l3 |* B当到达物料速度越高时,这个报警更多,
4 P- _7 F& R* e$ E; t可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。4 d- P; m  C/ l, a
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?+ m( c4 I4 {. S$ H4 m  t
- X9 ~/ D2 W$ W9 N$ J7 T
另外一个小建议,就是move,所有的move都可以这样3 C  B- p8 ^8 x0 r
if not move() then debug end
; P# ~! Z" W" {  ^) `! q这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。# w. O' U+ w7 y8 U" L7 s
plant simulation中的free libraries有AGV模板,6 M7 ?; v) @2 {+ d& |- W
里面也有案例。
; z' l1 q- Z8 E; L% T1 K; T: e& ]我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。( N1 L3 O; c* n# X/ S6 Z

! K" p3 [# Z: _- Z9 ~' R- @: i- F我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 ! V: b) g& K8 H& `  [
* A3 W# h' L( w5 S9 {! d
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
2 k- V" f. f' k4 W% g" z这是AGV_putin中arrive的method。7 Y# H( s) }% ~& |$ s3 s
& w6 O) S( Q( [( d5 k
当到达物料速度越高时,这个报警更多,

4 T7 i2 [1 R3 Y; A+ v  S% X另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-15 16:43 , Processed in 0.023633 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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