设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8658|回复: 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'! x" v- j$ j$ i( S! B
*/  n  {$ i4 V1 w
is
3 @  }) ?/ H' O; m: U  ]$ w' `        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
# ]& P' R! v8 b% a8 Zdo5 D9 N* z9 s1 i% U5 @& E0 a
        Lan := rootfolder.Internal.Tools.AOLlanguage;# h( X1 z9 d# s+ D4 I5 h
        if current = @.Destination -- else return4 [# E/ T3 ?/ X% m
        then, N0 o: Y& X/ `( C1 i- L
                @.Destination := void;, ?; Q, Q" F# p; C/ R! M' \
                if @.occupied then$ z: u5 L, s% g4 S% x7 S% o" F
                        part := @.cont;
. t/ x6 h3 j3 ^! F  v' x; n                        @.transpOrder := void;, J, f+ Z, i$ c: h3 a! R9 I4 i4 h+ [' D
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,! E5 G  V9 A" f! ]8 M
                                @,root.eventcontroller.simTime);
  ^- E+ J6 D5 _                        @.HasOrder := false;
, J+ m$ @+ U. x8 E; j                        @.DrivingHome := true;
7 O' h( N- X8 G" ~                        rgManager.tryToStartTransOrder;  V! F, e' s! C+ m
                        if @.Destination = void
, O) H, B# t+ M: K/ v                        then -- no transport order for vehicle @
3 t# w. d6 J, q$ u$ _1 @) h/ L6 L                                @.Destination :=( d3 A! O0 U4 M+ w! j
                                rgManager.nearestFreeStation(@,track.~);
- Y5 Q; b, d2 T                                newDirection(@);   7 v; A- o/ a3 V" T4 L) P% U1 V
                                if @.Destination /= void then
8 P1 v) ?. m5 C+ I( J8 v                                        @.Destination.NumReservation :=
& ?$ u- ^  Y2 e0 g! Y5 a                                        @.Destination.NumReservation + 1;  u5 L& f) I( @1 l
                                end;, ^9 J6 \0 `% X% r
                                @.CurrIcon := "drivingHome";
( Q, w1 B3 |" s6 `                                @.DrivingHome := true;
5 J( A$ O: C0 Y9 w& I                        end;* y0 U* t) h" q7 E1 f% j; z- x; L/ Q
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station9 O3 \; @  j' K# p1 W
                        part := @.transpOrder;
- a: ?* y# N! n, T4 ]                        part.move(@);-- load part8 z. N/ C8 F! |' W
                        @.CurrIcon := "load";
5 M* y/ o4 j! @* B, W' P2 D& u& |                        GlobalDistObj := part.globDestination;- {, C9 L- B' k* m7 Z/ _
                        assignLObj := rgmanager.rgAssignL;8 A8 v2 R$ _+ v1 r: D; ^' A$ M
                        row := assignLObj.getRowNo(GlobalDistObj);! D3 @+ X% z( r( O$ v" ^2 [7 R
                        if Row = -1 then -- since 70- o" [& f  t$ V3 q  B( f" q
                                if lan=1 then6 y9 [# B' Q4 A
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),# ]" Z$ F8 k' v. Z7 R
                                                to_str("in der Andockstation: \"",?.~.name,"\""));) L" A' B! q$ t) ?" I0 V0 @
                                else
$ t: b: v7 h! u( {2 F' j                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
8 @) r3 a4 ?0 ]5 T3 |                                                to_str("in docking station: \"",?.~.name,"\""));                                9 ]* ], x, _% ]2 J
                                end;
# P" N/ Z% w  a( `' z                        else# n# [- |1 P0 @8 _! K' l" O& L
                                @.Destination := assignLObj[1,row];6 |! {0 ]/ c. g( @; R/ T
                        end;                       
+ \5 ^  @8 P) M/ I9 @1 R                        newDirection(@);; ^" m$ p, Q  J
                        @.HasOrder := true;
  o5 ]0 K4 H( v, K9 p+ \$ j                end;
: o0 }; S; d6 g        end;/ U/ `! h: A% ^% o0 P2 |/ ~/ j: D& k  q; g, t
end;        -- of the method& ^* [1 ?4 _5 R+ B* o
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
8 C8 C8 s9 g8 g) w! k' w! u0 d; E$ v
这是AGV_putin中arrive的method。0 e( |& s2 z& \9 g8 B
$ e3 a0 ~+ r( I+ ]6 _! Q
当到达物料速度越高时,这个报警更多,
! B1 \4 a; o/ m0 s可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
4 ]! f* `; I: u) `程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
( X: _* b2 m, s4 C, Y- W5 G; {1 ]6 y* N0 A9 z: T1 N
另外一个小建议,就是move,所有的move都可以这样2 z& v6 k) n0 d, P$ \
if not move() then debug end: N1 Z9 q: {5 P. S- \% ?+ A9 o
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
1 \6 [2 m, l: {; g3 I5 t4 w+ {plant simulation中的free libraries有AGV模板,
9 c6 R8 {- Q1 o6 N6 ]1 w7 y里面也有案例。
$ v& l, z0 U; V. c3 }) X我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。/ U( `# r% w8 z3 J( f

. i7 L. ^. d2 y2 S3 ]+ c我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 4 B( j/ n" w% r) b: w) K2 x* K
5 k1 i# G+ `8 d2 A" L) w
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 + }8 S" }$ v2 B" A( _+ P; w; y
这是AGV_putin中arrive的method。
& m5 I4 j4 U9 q; ^* y, p# W, {) o/ E6 P; @6 Y+ [8 x6 X5 `: _) P4 P& D
当到达物料速度越高时,这个报警更多,

# Q4 n4 k5 R% Y另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-18 14:00 , Processed in 0.015730 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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