设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8758|回复: 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'1 c+ }. L8 w6 k( l- ~' L
*/
% C2 y; a1 m9 F& e1 x& h* G& U6 z& `is
. O& F- w3 ]' |! u  e        part, GlobalDistObj, assignLObj:object;row,Lan:integer;# c" Y; W/ ?( c5 n* c0 ?' e
do! U0 Z3 j- N* u: r0 g) L' M
        Lan := rootfolder.Internal.Tools.AOLlanguage;
: A1 R3 Z$ m0 P, `6 U" M* D        if current = @.Destination -- else return
4 \* X! P3 U/ P4 g5 L+ r/ x. C        then
4 Q. j4 ?: A5 d% p& g' r                @.Destination := void;
# Z. X4 w" }& M0 u! A                if @.occupied then
4 B2 H0 K2 S, w% X  x                        part := @.cont;: @* ~8 d" W! D/ F5 R/ ~
                        @.transpOrder := void;
+ U. ]9 H2 n" \) `                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,5 c2 B0 g& x- V* g" J! X& |
                                @,root.eventcontroller.simTime);; N4 ]3 w, L( y: `( ~
                        @.HasOrder := false;$ {* r2 Q5 t' U% e( A! g. w* g
                        @.DrivingHome := true;
' W- ?* h  G) q9 p3 E                        rgManager.tryToStartTransOrder;( w; W( h+ c8 F; {: u8 {
                        if @.Destination = void
' x  c$ X8 e" Y5 m) N: u$ m                        then -- no transport order for vehicle @
/ [& u( ^( i' T8 |: A' B2 }                                @.Destination :=
) G' ^- j% J/ |$ }% J+ }                                rgManager.nearestFreeStation(@,track.~);
9 l4 B! Y- _, g6 {                                newDirection(@);   5 G6 ?% O  z  I" I( W$ o' N, z2 r8 Q
                                if @.Destination /= void then
3 ^- T, n. U+ d- G                                        @.Destination.NumReservation :=
- W; W) U4 m2 c$ I# n+ B) p4 M                                        @.Destination.NumReservation + 1;1 \8 z1 v1 Z! R  w  R, P
                                end;* M/ I& z/ l) ~6 c
                                @.CurrIcon := "drivingHome";
5 F+ U" l8 y+ {) ?/ k& S2 B                                @.DrivingHome := true;
4 z1 b; u7 e6 A2 k) @* b; ?2 \                        end;
8 F+ _$ t$ C' l# v, G7 v0 M                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
, b: A+ V- u0 m* X  i6 b; V                        part := @.transpOrder;
3 {) v+ q* w) W6 `- N9 t8 n1 e                        part.move(@);-- load part
$ p4 f- A" v. u; z' c/ o4 a                        @.CurrIcon := "load";$ |' _' g. m, s
                        GlobalDistObj := part.globDestination;
4 T, v" e7 ~9 i# }7 e, l                        assignLObj := rgmanager.rgAssignL;
% h; o2 x0 Q! u- u0 g  L2 k                        row := assignLObj.getRowNo(GlobalDistObj);
' q' j- |( z* A8 \3 _) u4 V" o                        if Row = -1 then -- since 70
5 w, H& J  @: v7 Y# _% @9 ~                                if lan=1 then% M/ [; e- g- `
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
& \0 J" Q& ~+ N                                                to_str("in der Andockstation: \"",?.~.name,"\""));$ h$ U" G2 d& f8 S
                                else$ ~7 V9 s$ {2 S, C1 `; @0 s
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
, Z* W/ d, z% J. V- w                                                to_str("in docking station: \"",?.~.name,"\""));                                ! L2 y) t# _- p" b
                                end;
  W/ S/ A" D( x7 s                        else
# v& M# w" a) o6 Z) T                                @.Destination := assignLObj[1,row];
$ i8 d; b! i1 ^8 u- n( N                        end;                        2 s* a; j; [( o! {$ \' D
                        newDirection(@);) T2 R9 a' o9 j
                        @.HasOrder := true;
) T* i$ W# s2 A                end;/ S# s" d- Q/ `9 @4 j
        end;0 M3 w0 m* G; w6 C+ y
end;        -- of the method; o2 D) ?" p' I- o2 ^
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 3 d  l% \1 Q9 L; J$ Z
& F8 D* h& F+ ~8 m5 C, T
这是AGV_putin中arrive的method。
) S$ k' e- @& C( H0 u/ g2 ^6 l' J" {( C: q/ ]! P
当到达物料速度越高时,这个报警更多,
( i: u/ C& T& }5 i  W可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。+ `; @4 c) f2 c. W, F% I
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?, W( O$ u; o4 p6 W
  Q) O# X& {+ j  k# i) n" W- e
另外一个小建议,就是move,所有的move都可以这样
: E( l3 I$ K- [6 H- y4 E0 zif not move() then debug end
' A0 b6 C. I4 o1 Z, l这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
* ]! Y- P; ?: o# u  p' @plant simulation中的free libraries有AGV模板,
; J- h) G! R& K* u" u2 H6 e6 w里面也有案例。% a5 x& r& c: j8 g8 D
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。3 O0 ]! J7 S( t5 u: U# w

) L, M6 O1 `& R3 y( B& U$ l我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
( o  h; Q7 ~: e; O- b0 ~# S6 }
4 u/ J* D; Y! o) ]7 @* T那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
! Z2 y8 I, [& u1 K3 u/ g这是AGV_putin中arrive的method。
4 H; z, x5 p0 m  W! N
0 y; m, `! m: ]! R% R% B当到达物料速度越高时,这个报警更多,
4 Y, H" c: b9 U% m% B1 R( a( H% {7 B
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-24 16:18 , Processed in 0.015676 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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