设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10211|回复: 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'
+ i1 |4 W- X( X, O*/) N5 B2 _! N& U# U' v
is
" P8 E1 b* j0 F        part, GlobalDistObj, assignLObj:object;row,Lan:integer;; _! G& m' B) C9 W
do' k4 Z9 |7 \1 g& z- v& @
        Lan := rootfolder.Internal.Tools.AOLlanguage;: M: c+ ^$ u; y2 S/ G* ]7 H
        if current = @.Destination -- else return
% x) m. j- }  Y2 S, l        then  o2 L2 U7 |2 U
                @.Destination := void;
$ o8 Q' V# T, M" l( s                if @.occupied then3 Y. _$ D8 E( F* m
                        part := @.cont;% i$ }4 Y9 `* ~$ B' U+ z
                        @.transpOrder := void;+ b1 G6 ?9 i- p& R& s+ l
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,! q( r- Y" C4 R' L  u4 M
                                @,root.eventcontroller.simTime);
- l. T2 z9 Z, S                        @.HasOrder := false;! z. u! c+ Z- r
                        @.DrivingHome := true;5 e4 w6 e- n+ U, M. H* L
                        rgManager.tryToStartTransOrder;
' |( l1 H$ }2 {# Q4 q                        if @.Destination = void% }' k$ w  s# ]& Q- R
                        then -- no transport order for vehicle @
( U' c  r( {- q8 B2 D# }- z                                @.Destination :=
! s. i+ s& s9 m# {# R$ H& U% J                                rgManager.nearestFreeStation(@,track.~);! f, G! F$ @6 E0 |1 e! F
                                newDirection(@);   
: D7 A- A/ Y- i: ]; T$ Y9 U9 W1 c                                if @.Destination /= void then+ a. o7 ?; }0 B' l/ m2 v2 w
                                        @.Destination.NumReservation :=* h4 J/ j" o, e* m6 n
                                        @.Destination.NumReservation + 1;, e( Q" O- a6 R
                                end;
) c  {; X/ g) d. S- G7 W8 H' D4 t                                @.CurrIcon := "drivingHome";
/ M, J. |0 R8 U8 J                                @.DrivingHome := true;  z4 h% V( ]$ b
                        end;7 J" t& }* l5 Z$ ]3 L# ?
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station: [" m' o) d9 i8 `% \
                        part := @.transpOrder;
/ ], O* y' v$ I/ o* z3 u                        part.move(@);-- load part; p4 l! Q: d1 L- h/ P6 l
                        @.CurrIcon := "load";
* F7 k8 H( \8 ~                        GlobalDistObj := part.globDestination;3 T- _9 g" o% b& [
                        assignLObj := rgmanager.rgAssignL;9 \  q6 Y0 v; P$ X
                        row := assignLObj.getRowNo(GlobalDistObj);7 r& y# C, f8 A, p+ p, }7 ~
                        if Row = -1 then -- since 70) Y' S" M5 A& P5 ^6 r* U. s
                                if lan=1 then
9 s5 `- h! U. ~                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
! y, c2 y$ Y  m, ?( Y3 _- e( i2 s                                                to_str("in der Andockstation: \"",?.~.name,"\""));
- {; U( C( ~% b3 J9 b2 ]# u( a                                else
. L, W2 P$ r7 X( g                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),, B8 d! {' D3 x- s" Q: l) H
                                                to_str("in docking station: \"",?.~.name,"\""));                                / W; T5 E. J7 a& V- C( d' _; a
                                end;  @3 S+ u! U. D. P7 P7 \9 Q, J% g
                        else
# X: L- h; G6 ?2 A4 B9 e/ ^                                @.Destination := assignLObj[1,row];4 q' C6 `2 I$ x0 d
                        end;                       
1 b& o" \# U' k2 q& G                        newDirection(@);! k4 X0 Z- A& l& f
                        @.HasOrder := true;, E; _* g  Y, j! E6 u
                end;
1 `1 u+ |4 r: t' W+ H% C. `. f9 R6 l        end;. M* r& W/ `  Y$ R0 o0 P
end;        -- of the method/ W9 s- ]7 v- k& K
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
7 d2 X& t9 k5 O) x& g3 I; T$ I$ c! g* m3 y% U2 p; V! l* Y
这是AGV_putin中arrive的method。
9 p6 b* s" P' l" C; {
) A* O, E" a  H; n3 w% x1 v- K当到达物料速度越高时,这个报警更多,
/ N0 U- m! K1 _- _" P' u7 O" x# l可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
, N  @8 i8 N5 W/ V9 K* y# k4 Q程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
4 _! }! ^% }2 w  p. ?) Q, e0 o( m  H& E* E7 e; `
另外一个小建议,就是move,所有的move都可以这样$ j5 J+ Z/ p7 r2 }1 k% z* o+ x/ |
if not move() then debug end
/ Q+ C0 U: b3 p; O这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
2 @) N2 v  l2 Zplant simulation中的free libraries有AGV模板,
, q- }* b) t) e里面也有案例。
4 p: \" I8 `/ A% C$ ?% R# ?我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。) q: `, `/ F6 ?$ B  {7 u( C) g

0 s$ z7 u/ m  O/ D. h. f5 C我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 6 w: q1 K/ m- N7 n7 u

# Q" x  J$ G$ l# h( V3 S8 V那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
5 y! n7 P9 j; b$ @/ {$ f* Z这是AGV_putin中arrive的method。8 `. C5 c& z/ m& R
8 X3 U- ^2 D# i5 H) H
当到达物料速度越高时,这个报警更多,
9 M; j) I' ]. Y3 X- R/ u9 B
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-9-20 14:21 , Processed in 0.018013 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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