设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7384|回复: 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'
: X6 G2 ]) y2 G2 n8 G3 i8 X# H5 Z4 _; L*/" f8 e7 Q. @0 t$ a, E
is" C  N/ E' g; ]. ]- d% c; P
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
  t+ h' n& e! w3 u/ V! qdo
& i( I& G8 ^. v5 _) c) E        Lan := rootfolder.Internal.Tools.AOLlanguage;' T# W- a7 p' E1 p3 H& Q) w* ?
        if current = @.Destination -- else return
! y" v! l5 |4 R+ C: V4 I+ P9 Y# y        then
. d5 H% C. v; |                @.Destination := void;+ H7 _% D2 @5 ~6 Q! r! u
                if @.occupied then
( D' f# [0 V2 G! w                        part := @.cont;
0 {+ U% G1 r9 q0 ^5 u% B  i                        @.transpOrder := void;; n+ ]6 Q3 I$ p& ^
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
* t, B0 e  Q1 w& n0 E) S( m$ L. X                                @,root.eventcontroller.simTime);' V+ u0 w$ J' w- u- w
                        @.HasOrder := false;( a# `- j; x- F  G3 T
                        @.DrivingHome := true;+ y' b1 H/ g2 q3 W/ N. X1 [
                        rgManager.tryToStartTransOrder;2 O6 V+ F/ v% M1 l
                        if @.Destination = void  X) R! q9 F  \
                        then -- no transport order for vehicle @( V3 t* |. a, O9 i0 e* p- N: M
                                @.Destination :=. x, q& ^7 v: n( `' K8 P
                                rgManager.nearestFreeStation(@,track.~);; ~, E4 m% l. f" G( w3 L
                                newDirection(@);   3 X1 I6 M8 e+ Y+ Y
                                if @.Destination /= void then! q& R9 `9 ^3 l! d9 O) x6 b! L
                                        @.Destination.NumReservation :=
# f# `( V! R; F# F- |                                        @.Destination.NumReservation + 1;
0 K- r! i$ @3 b% `2 z                                end;" t) ], f+ l% s3 A0 X+ A6 K
                                @.CurrIcon := "drivingHome";
" X. D* w; h: X. M5 g% L                                @.DrivingHome := true;
" ?  ~, A/ T) w% a/ Q5 T6 \0 C                        end;1 D+ ]/ L  Q8 B$ N4 i
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station, }: u8 P. N6 l  d5 _1 _4 [
                        part := @.transpOrder;. w% O0 Q+ R/ U8 n" l- h
                        part.move(@);-- load part: z$ b% [" r! E+ _3 }0 J+ Q# K% q
                        @.CurrIcon := "load";
+ s6 P, {; {+ h                        GlobalDistObj := part.globDestination;- q1 X2 M+ s* @3 t# f
                        assignLObj := rgmanager.rgAssignL;
* y1 T: ]6 H1 H4 u6 K                        row := assignLObj.getRowNo(GlobalDistObj);4 ^+ u; Y" H' k, C4 X
                        if Row = -1 then -- since 70# ~7 p' y; q/ b" I# ?
                                if lan=1 then
8 `& y" d& D6 B4 S8 d                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
. q* ?8 u, ^) B' l& v' |                                                to_str("in der Andockstation: \"",?.~.name,"\""));
  E( J" v( }7 e                                else" A$ C: r9 k3 I6 [" R; r
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),  Q# j1 C  `. x$ U- p
                                                to_str("in docking station: \"",?.~.name,"\""));                               
. E& t0 u* @  ~1 R% o3 h                                end;( M$ ~; B) X# y
                        else
. v' F* G! C! X- T& `5 E                                @.Destination := assignLObj[1,row];' L8 q% ^0 c6 ~: S; s+ N" h$ \
                        end;                       
" r0 }/ n: A% m! a  z                        newDirection(@);' P: P$ }% i" U( l9 X
                        @.HasOrder := true;% b7 [/ A! H# J; G6 ~
                end;
8 ^6 U6 O% i1 o/ G/ g8 N( l' ~        end;! ^, ?; H4 x" u$ B" o- k
end;        -- of the method/ f  S" ?& s* n3 W3 A5 k
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 2 h7 k4 |7 q7 ~; W- Z% h. j* O7 `

. g9 s, [$ ^5 B3 s# x这是AGV_putin中arrive的method。/ C& A6 d8 f3 }" @6 h/ F& n* O
5 G/ L, S$ H/ Z
当到达物料速度越高时,这个报警更多,
; [: W. @! w5 i) [* e0 g( E5 }可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。; f6 W8 Y! V3 c6 B# p- S6 \  `" Y
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?! a( ~( G" t$ Q& q: P. ]4 `

+ L- [* f, G' n' m$ p2 `另外一个小建议,就是move,所有的move都可以这样, Q+ M6 N) r% c* N
if not move() then debug end" {' P* m7 E0 E7 Z
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。7 K+ x9 H% z' \9 u
plant simulation中的free libraries有AGV模板,
9 U; }2 G6 f0 B  O里面也有案例。8 c! I. J# j5 n8 b' {' K5 F( W
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。5 e, K- B$ }6 _9 j
( P  p3 k0 N: N+ @9 c6 W* J
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
6 B. V/ N7 `, L. c: u- z' x' C/ e: _/ B
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 ! \0 n5 |$ B% q+ R" B& R
这是AGV_putin中arrive的method。
6 u' S8 U/ V. f' _% R
4 ?8 C& z% \- V当到达物料速度越高时,这个报警更多,
$ F5 ?7 z; O1 P
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-8 16:15 , Processed in 0.024335 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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