设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10160|回复: 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'
/ N$ r3 Q5 j* a( r7 J9 @) }*/
# F0 S  m$ j5 A+ zis
$ I# y3 x& X, a0 A        part, GlobalDistObj, assignLObj:object;row,Lan:integer;' W9 K" a/ p5 Z6 |! i1 A
do
* S. e7 G* b8 r# z% ^  Q        Lan := rootfolder.Internal.Tools.AOLlanguage;+ n8 c( C# D: r
        if current = @.Destination -- else return! E+ ~5 j- c8 _: N4 z# M# z6 l4 q
        then
! Z- s9 K& o& \3 c                @.Destination := void;
9 w; G# ~8 O8 \1 u, I8 H( z                if @.occupied then% O: l' _3 ?  B. G
                        part := @.cont;- I& L9 d7 q+ f" c
                        @.transpOrder := void;
9 h6 i% x" e! F: D$ a5 I+ O; d                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,3 ~: Y% m6 x& y' D' G- [6 a' T
                                @,root.eventcontroller.simTime);
9 A, U! X9 L% w9 ?                        @.HasOrder := false;
. j9 _  u# i7 Y6 j                        @.DrivingHome := true;
, a$ i$ M) P* b* X) J                        rgManager.tryToStartTransOrder;" I  Q+ M: b3 E+ ]
                        if @.Destination = void, n1 D- T, ^& m- x& o; G3 x
                        then -- no transport order for vehicle @& a0 I1 V2 t% _: O
                                @.Destination :=) F; c( ^+ j, h/ h4 a
                                rgManager.nearestFreeStation(@,track.~);
) ~' r% U: W! E7 w+ \, B                                newDirection(@);   
# B2 h- x; @2 A+ r, _                                if @.Destination /= void then' M6 X3 F9 q9 H1 [* c+ A
                                        @.Destination.NumReservation :=
  `# n3 p8 n! d1 f. b) i                                        @.Destination.NumReservation + 1;
- Y6 \1 h- j1 d0 g. |5 p: T                                end;
5 m# Z& T8 F9 y0 \% r                                @.CurrIcon := "drivingHome";3 G, G) c1 ^9 J% c
                                @.DrivingHome := true;
. }4 J( H, z' }; S2 {/ M                        end;
; _. x* H) |  ?' A6 F                else -- the vehicle @ is empty, both vehicle and part are in the same dock station; t* W4 X8 n+ K3 Z3 t, d
                        part := @.transpOrder;
/ l  Z6 P/ J, P  s* R                        part.move(@);-- load part
9 Q" G; b) M) e2 i                        @.CurrIcon := "load";
7 m4 V2 k7 `2 W& w                        GlobalDistObj := part.globDestination;
) N% i1 @. o/ M+ K2 C                        assignLObj := rgmanager.rgAssignL;5 ^: Z; I- E6 Y$ X9 z* y! O1 g
                        row := assignLObj.getRowNo(GlobalDistObj);( t" G/ }/ r+ ~9 t% B$ d
                        if Row = -1 then -- since 70
; R; Q/ L$ U5 r0 t* G: h+ a                                if lan=1 then) U) Z1 J+ @6 y. T7 }+ ~5 z% W* \
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),& t# }8 a  p" V/ Z+ ~
                                                to_str("in der Andockstation: \"",?.~.name,"\""));9 s: z9 ^2 x8 r# Q5 R( p
                                else
4 H2 z, p1 d8 |% }/ H# n5 \                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
0 j8 O8 G! |' i6 P                                                to_str("in docking station: \"",?.~.name,"\""));                                + ~8 e$ \1 i: L
                                end;$ g0 s/ Q4 A- c! G
                        else+ J! \  n& K3 E2 ?, U
                                @.Destination := assignLObj[1,row];
; b9 m- [2 o- G  ~7 Y" ~                        end;                       
. ~) e8 d5 H9 W                        newDirection(@);4 r- t2 ~, A9 V# R$ ?
                        @.HasOrder := true;0 q' ^& L/ i/ t" h9 H: k
                end;8 _# `; Q- w' v# n( F: N+ j# E% J) i: e
        end;5 h$ V' X& `0 G/ i& G) ?9 ~4 |
end;        -- of the method/ b6 b- L( N# V# Z( x# L
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
8 A$ Q; H: C8 B3 b/ _  \8 D0 p  K( x1 V$ p# ]8 d- r  J
这是AGV_putin中arrive的method。' T, ~' O- i. D, M4 q

( x1 p6 i$ x- _* d2 y% i当到达物料速度越高时,这个报警更多,
- {( e2 ]+ m) y/ u' m; g4 Z  S, p可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。8 l' d; K; G+ X3 i, h8 l
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?( A' D4 @* n% ]% H: u) ~
1 {5 S* G. d) N: |* W! E' t
另外一个小建议,就是move,所有的move都可以这样5 C( Y5 x( Z$ f8 G! O+ ?
if not move() then debug end
6 M7 {2 x7 Y+ i  T6 y这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
6 p' [4 M# @7 B% o; dplant simulation中的free libraries有AGV模板,: m/ m9 y  M; W0 Q; S' G
里面也有案例。
) Q7 J  V! u9 q; w  z; {2 O* p4 h我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。5 w. v% ?/ J+ F/ }

- g, Q1 A; u* Q5 N  w: \我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 ' B) l# |8 g3 ~3 u! r  V8 n
# b" j8 R, u$ Y
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 5 f* U  ~( E5 z2 y
这是AGV_putin中arrive的method。
* R$ s3 a9 l& Q
7 z, Z$ @1 S% E/ `5 p7 m/ Q) M0 m当到达物料速度越高时,这个报警更多,

6 w/ g0 O  ~: n3 d另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-9-17 09:18 , Processed in 0.021093 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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