设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8715|回复: 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'
' o, N# [) K5 }6 _! B% x*/' X. ^  ~2 E3 Y2 j
is; ^, E. ~8 R! v, s
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;/ O. ]2 d$ y2 H( s) Z; l* ^- v" `
do
$ Z( r3 V2 D  e0 D/ n        Lan := rootfolder.Internal.Tools.AOLlanguage;8 ~' d% X+ Q, m6 D# m5 q6 O& h
        if current = @.Destination -- else return
* J3 k% v# |: J        then
) ?, x& p4 D4 k                @.Destination := void;& I6 v; c& A/ i, I/ f* d
                if @.occupied then
; V/ T: f% a0 m) }9 U                        part := @.cont;8 ]# ^! H8 G6 |+ A
                        @.transpOrder := void;( T- W3 L& T4 k! [& N& C. Z
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,6 p, f; U( O& Z3 t+ z4 j
                                @,root.eventcontroller.simTime);! e/ a9 Y6 H& w9 z* _6 Y
                        @.HasOrder := false;
( G9 V/ F& @3 `4 v; Y* r8 K2 Y                        @.DrivingHome := true;
& |9 S; W" P$ a- E7 ~                        rgManager.tryToStartTransOrder;
6 B( }3 J: t9 C2 h- [2 c                        if @.Destination = void
, U/ c' h: x* t- H  S                        then -- no transport order for vehicle @
, @7 M" I4 l' h5 I: W" h                                @.Destination :=% N5 C7 c! o: h/ G: F' r
                                rgManager.nearestFreeStation(@,track.~);8 z) Q9 W" _' O5 n# s" }# }  F+ r4 s
                                newDirection(@);   
2 }; D% |/ G9 p                                if @.Destination /= void then8 m; Z1 R! @! o; G
                                        @.Destination.NumReservation :=
9 z- Z* c7 t% K3 k6 D: {7 {7 U5 v                                        @.Destination.NumReservation + 1;8 q  `6 f. E. k9 }! i9 ^
                                end;
: R% }! R& {% ]1 v1 G7 g% y0 J                                @.CurrIcon := "drivingHome";
/ R+ ~# T  Z+ t7 o                                @.DrivingHome := true;$ O( f- N7 R6 ^2 [2 u# O% O2 R; {3 Y8 n3 I
                        end;6 h% I' K2 n" u0 l* \
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
  w+ }* E8 o: v# l) Q                        part := @.transpOrder;
) P6 x! U) L. A( L! n6 N+ }                        part.move(@);-- load part8 J) {2 Z; |% W; z( h# K1 s8 r
                        @.CurrIcon := "load";
2 d4 R) G2 k6 \5 I; g" k                        GlobalDistObj := part.globDestination;! b) k" b) @/ Z9 C: B1 J, P$ g! v
                        assignLObj := rgmanager.rgAssignL;$ X! F: I3 R! [& z, {
                        row := assignLObj.getRowNo(GlobalDistObj);
% _! |/ l1 V( ]) X) G$ K                        if Row = -1 then -- since 70
8 H! a/ Q( F. B$ |! h7 S                                if lan=1 then
( o5 F0 k7 B" r$ _9 R1 B4 s                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
7 F0 e5 q* x: h5 Q( Y9 z                                                to_str("in der Andockstation: \"",?.~.name,"\""));' ]% P% Q! O7 M, p
                                else( Z3 j8 ]9 i, S% {1 _
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
$ m" q% Q+ B1 H6 ~0 s                                                to_str("in docking station: \"",?.~.name,"\""));                               
7 w" h: D4 ]: ^# o                                end;
) B& t7 k1 O! d9 }4 n                        else
$ k# ]. h9 w# ?8 M& Y" a                                @.Destination := assignLObj[1,row];/ n" j# G) D/ m
                        end;                       
6 `: j6 r! ]2 U6 G3 N                        newDirection(@);
  L6 v2 W; ]4 R. e                        @.HasOrder := true;
: V4 H8 f/ R5 l7 {3 E* t* B                end;- I* R9 y! z+ W& N7 a
        end;9 u1 M& M- U; B& @
end;        -- of the method  C/ q7 f: }) j
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
3 l5 y1 C3 X; u) ]
$ T2 T  P# l1 B5 E6 L; f这是AGV_putin中arrive的method。
2 x% C4 ?. |9 w* N# z* I  j  Q* P' `
当到达物料速度越高时,这个报警更多,0 K2 ]6 T3 a1 p" V
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。) ?. Q! P, u5 U  ]& }9 Z+ x0 ~
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?( j" o& u$ P/ g
/ O2 ?/ k+ Y' Q# K  V' r* u
另外一个小建议,就是move,所有的move都可以这样; A2 j& {2 M: h% d% v8 f/ I) V' X2 ?) T
if not move() then debug end$ E0 ?8 i3 }2 O! E3 h
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。1 z4 z& H5 R4 d( J$ V5 Z5 w2 k
plant simulation中的free libraries有AGV模板,
6 Z, e" V. T" |里面也有案例。
! d& g9 q- j, U- \: ^5 V0 g. Y我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。5 {4 f. j4 U8 V6 N/ q0 p; P+ [

( e& B) `# K' C) S/ B. h我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 & i: J/ N/ a$ S1 Z+ v: l
- M: A. V# N- t
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 % G2 G' d# {* ?5 @, ?& W/ j
这是AGV_putin中arrive的method。4 F5 O  X% L0 c3 X. F* ?

+ V" _6 ~, s$ n( L当到达物料速度越高时,这个报警更多,

8 \6 Z2 A. K  q: U% D; ?" A6 ~, e另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-22 00:55 , Processed in 0.020595 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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