设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8285|回复: 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'
9 p# x6 m- c/ P* e/ Z  `  L*/
" x5 c, [9 K  e2 vis+ k0 |6 J+ v7 e2 V/ e+ m4 s, S2 H6 a9 T
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
1 A1 A9 Z( y4 R1 |0 Qdo" A% O. x# p0 B& W* h  G
        Lan := rootfolder.Internal.Tools.AOLlanguage;
1 Q: n. r' p6 u) W" [/ J  C        if current = @.Destination -- else return# Y' S5 Y* D" h
        then
( A: D+ u, ?4 N( V5 J                @.Destination := void;
9 ^& r: Q, {5 G                if @.occupied then6 E' B1 W. J$ t- q
                        part := @.cont;' [+ p+ q) L; M$ `+ {; E
                        @.transpOrder := void;7 x2 K/ f6 D  Z4 q' L2 C
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
( k/ e% X4 X$ N3 |( z" _* h                                @,root.eventcontroller.simTime);
! ~& c. }9 h0 P  b- e4 |                        @.HasOrder := false;* c! N: D9 Q" ]
                        @.DrivingHome := true;  a: N/ O/ e# P: p
                        rgManager.tryToStartTransOrder;6 \+ J. K  _4 o; H; W
                        if @.Destination = void' g+ d, T7 ~" p3 Q& |# Q
                        then -- no transport order for vehicle @4 r' i& X: ]/ [- J( I! o
                                @.Destination :=
& i- @/ Z' k% b1 f5 H                                rgManager.nearestFreeStation(@,track.~);' p; A: @$ w) u
                                newDirection(@);   # k0 F! H% y; ~9 ^  M; E1 W5 n2 ]
                                if @.Destination /= void then
, k- U7 y8 t# m% S3 b* {                                        @.Destination.NumReservation :=* V  w: v0 `* u) k+ x
                                        @.Destination.NumReservation + 1;- [: }0 W- a7 X8 a, Q- c
                                end;6 C- [* }4 ?+ G  f2 ~) f
                                @.CurrIcon := "drivingHome";7 k: v+ ?' h7 s
                                @.DrivingHome := true;, G% Z/ z! j+ {, x9 `
                        end;5 M( z# ]2 U# R; z7 B) I7 d+ W" g+ b
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station3 D" p* {2 Z# W; p
                        part := @.transpOrder;- H; r# }$ l' Y4 F/ n. f" }8 y
                        part.move(@);-- load part
; N* j  M/ R+ [& @6 U5 B' l                        @.CurrIcon := "load";- O# s( [: b0 G8 ]" G
                        GlobalDistObj := part.globDestination;" V" B8 m, d$ G7 \4 {, Q: T
                        assignLObj := rgmanager.rgAssignL;
/ k% M' \3 p, r! j$ l7 J                        row := assignLObj.getRowNo(GlobalDistObj);8 C# I+ q8 ^" {
                        if Row = -1 then -- since 70
/ S- B) P+ l) M, Y                                if lan=1 then
' J$ O0 {. R5 y0 k" y* ?+ V0 ^7 h* i                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
9 ]: T5 `' [: }* l" x/ S  A                                                to_str("in der Andockstation: \"",?.~.name,"\""));! M5 z$ M' Q5 \( B. e' N
                                else$ q( W. t7 Q) q6 C8 k
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),; [. q$ R, V. J
                                                to_str("in docking station: \"",?.~.name,"\""));                                & l4 F- a" X, W: @
                                end;
6 F; P9 C1 |0 b$ d" v8 D' t                        else
1 H8 M. u/ ~4 W  y; v$ c% k$ N                                @.Destination := assignLObj[1,row];
2 H! F1 ]9 K2 i                        end;                        1 M5 W2 C# n4 |! C3 Y
                        newDirection(@);
7 k6 D+ u6 ~7 ^. h                        @.HasOrder := true;
5 `% e# ~& W7 Q, |) L8 f6 P9 c0 l                end;) `) u1 S. W8 z& q  N* J& l
        end;8 t' g/ h& c5 C
end;        -- of the method
: T9 Y) S+ J% U* Y% j
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
% d: S3 i, e4 S( W- [' C$ x
9 L$ K. Z0 e! u3 B这是AGV_putin中arrive的method。
6 u: `6 F7 ]! p: j% ~; m0 s. d2 {1 C/ D: k. K( t9 o
当到达物料速度越高时,这个报警更多,
/ W; L+ P8 ]: U可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
% c* w  y- s0 s  l$ x程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
! X3 i4 e6 c  H( B4 O
& }+ B7 V4 s! k另外一个小建议,就是move,所有的move都可以这样
$ R* z! _! Y4 j" o! Wif not move() then debug end% {, Q) c% `* K+ D, r  k$ y
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。7 {3 _1 m1 Z% t& {
plant simulation中的free libraries有AGV模板,  ]7 ^+ k# j9 C% e
里面也有案例。
+ ^' P; N6 H0 `5 r3 r我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。1 r7 k; M- G0 Y/ Q8 h% F0 S, e0 V
5 l- Z  O" R; h: F% F7 @& L
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 / s- R( ?' D0 N

( S3 l5 B7 ]: m) j7 `, |那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
  j5 s7 S1 ?: B5 a2 S. I! d; Y  _这是AGV_putin中arrive的method。
& M- h7 a" E$ P& u
; |7 y4 t! V% v当到达物料速度越高时,这个报警更多,

9 ^" q) v& U3 g8 R另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-25 10:13 , Processed in 0.019329 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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