设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6281|回复: 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'+ ~8 a' Z+ n+ p
*/
$ r# }; _, L3 U4 tis
: G5 D' ]3 m) W& k  F" v% Q, `/ e        part, GlobalDistObj, assignLObj:object;row,Lan:integer;" b% ]1 Y/ V6 v! C+ ~- M
do
. W1 B7 H2 }6 n        Lan := rootfolder.Internal.Tools.AOLlanguage;
  }2 C7 e4 q' q, V- V& B        if current = @.Destination -- else return! q) q9 @8 h9 t' ^4 b& }* U* l2 G! b
        then0 P# p. D* b; r% s' T0 A
                @.Destination := void;6 M6 ?7 C$ B, j8 Q
                if @.occupied then# n+ [2 D, \- x  O8 @! H$ x- a
                        part := @.cont;  K0 B, m6 _0 w6 a: z
                        @.transpOrder := void;; r& w0 z8 j/ Y% P, v
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
" q, G8 [: I* U" u                                @,root.eventcontroller.simTime);. j* N1 |% z% I1 Q; d- E
                        @.HasOrder := false;
2 Z: g# m' B) W) b2 P* c                        @.DrivingHome := true;( M# ^9 N% V" g. A- z3 `
                        rgManager.tryToStartTransOrder;
4 s" N: U" \" @, C' G" t9 }                        if @.Destination = void! y7 ?2 q; _- D2 x. Q
                        then -- no transport order for vehicle @
2 S0 @: j7 X1 g                                @.Destination :=& W% E9 m; `4 i9 F8 \/ \, S
                                rgManager.nearestFreeStation(@,track.~);$ c- U6 s" J1 c' D
                                newDirection(@);   6 D0 t* n6 h5 w5 |- x( }
                                if @.Destination /= void then
* O7 n' V( M; E% Q' y8 A3 A9 n                                        @.Destination.NumReservation :=
$ |/ d6 j( T2 f7 c' [& ?                                        @.Destination.NumReservation + 1;, {) Q$ f9 n/ t- a" ?5 h
                                end;$ d% t) O8 F( _/ {8 F
                                @.CurrIcon := "drivingHome";8 p1 [5 g' d# P' q& A
                                @.DrivingHome := true;+ F) I, y& d4 C( U$ A8 ?1 x. k
                        end;8 l' R# e) e5 ?  q  z
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
8 U$ I6 \/ y0 Q! N                        part := @.transpOrder;& Y2 Z( P/ K; u3 ~
                        part.move(@);-- load part
3 l! W8 A3 ~7 y! k' y( m                        @.CurrIcon := "load";3 I- o7 ~4 K+ C$ U
                        GlobalDistObj := part.globDestination;5 m# a0 Q3 q5 n
                        assignLObj := rgmanager.rgAssignL;
# f* t3 h  O. f1 P& f; W' m7 k                        row := assignLObj.getRowNo(GlobalDistObj);0 D! ~  X  \! [/ s8 u: o( W
                        if Row = -1 then -- since 70$ S. v( F$ _. S! u8 U2 ~
                                if lan=1 then5 K2 \4 r& }1 H; N  Y; Z
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),/ a3 B4 j3 T8 u
                                                to_str("in der Andockstation: \"",?.~.name,"\""));1 {& G! X/ \  H
                                else
& F8 N  e* H5 W: R3 J8 O( _1 d                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),! y- p9 P2 E7 r* l4 W' G+ N6 G
                                                to_str("in docking station: \"",?.~.name,"\""));                               
: u; D/ ?8 l! @8 B                                end;5 ^& k/ ?* f: j" S
                        else/ M7 B; B, k3 l% P3 R* U! Y( i$ q. R
                                @.Destination := assignLObj[1,row];8 n4 `: c8 E# k5 z& b( N
                        end;                        3 e7 r0 d( D; }/ b6 |( s  B
                        newDirection(@);
2 ?) D) I, E1 |6 `% J) I8 p                        @.HasOrder := true;
* |  @- o" ?" n4 A: Q$ h1 L                end;# B% w% P" s8 _' X' @9 i
        end;
& z( E3 x- j2 r: p: R! Zend;        -- of the method
1 K. p% q, M+ ]- P. S/ `1 y; o
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
8 ~  P  a6 K3 ?4 P
6 L; H. \; ?/ e7 D/ A0 l这是AGV_putin中arrive的method。
. r1 S* h9 j# k; Q4 ^
: |1 K5 [2 O* c/ H* h( e) D/ h当到达物料速度越高时,这个报警更多,
$ ~$ g1 T- U  {& N可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
: {6 \. g' q. I: A/ a- w程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
4 X9 @( A" {' @. p" c7 [" M  q5 h! y5 Q0 p3 W/ Z/ t: H
另外一个小建议,就是move,所有的move都可以这样
. `% X8 t9 z% ]. Z4 P: B! Wif not move() then debug end3 c6 U- r$ S" t9 }
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
+ g7 _+ a5 b. g9 k9 }8 r$ tplant simulation中的free libraries有AGV模板,
: L& T  x" P' x$ O9 y里面也有案例。
6 _' g2 j5 ]0 R* O9 ]3 k$ X5 a. \% N我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。* R+ z7 M' O6 }; `5 B
- W" _5 w0 g/ D4 b# x
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
! e: m6 M' W2 `" I: q) |+ b! r' m2 d2 r; i/ j
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 6 M. r! M" U4 p# \9 Z/ k8 I* @
这是AGV_putin中arrive的method。
9 d2 U0 Z( G% ?7 w; l  c0 R# U5 Z  w7 b5 R# y
当到达物料速度越高时,这个报警更多,
# f, f* ^8 @& Y, j! `6 L. k; U
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-1-28 12:24 , Processed in 0.017541 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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