设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9558|回复: 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'+ O3 B3 B# P) w! K4 T4 U
*/0 a8 O/ d4 d6 k& \5 C# v
is
* e, T: k. I- `  W        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
8 D1 T3 G1 y, N  _+ @do: o5 c! ~; _- L$ S  j
        Lan := rootfolder.Internal.Tools.AOLlanguage;; Z. X+ Q% h0 e- `+ t; }1 M' W
        if current = @.Destination -- else return! g* O0 ?, ^: k+ _- l
        then# e" _. T7 a: w+ Z3 m
                @.Destination := void;) a, S2 d% z0 ]& `* q( N
                if @.occupied then) Y: U- q8 a" D( j% D( k3 E
                        part := @.cont;0 D' y, j8 e7 v
                        @.transpOrder := void;* P+ y5 K- h0 }) c( m- h6 {
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,! ]2 ~; G3 N* ?" T8 L) J
                                @,root.eventcontroller.simTime);
6 _/ h4 K  e1 ?                        @.HasOrder := false;% ?3 U/ a8 o5 n# q
                        @.DrivingHome := true;* m, B# W0 E+ ^9 l
                        rgManager.tryToStartTransOrder;$ \. R- F, \1 i
                        if @.Destination = void0 u8 p: q  k3 C3 J# r, d
                        then -- no transport order for vehicle @
' Y9 E: l: j. ^4 F" e7 ^6 x$ n                                @.Destination :=
: w1 [( B. k1 o- h                                rgManager.nearestFreeStation(@,track.~);# r! [0 A1 j4 I9 z3 k7 C9 a6 v# y' N
                                newDirection(@);   
# k* N1 A" |  B6 M                                if @.Destination /= void then
2 H( e; m! z( V" K% U                                        @.Destination.NumReservation :=2 l) @1 ?, h% ]# i7 ^
                                        @.Destination.NumReservation + 1;( D( L! a7 V8 w# h+ B
                                end;& v9 z0 ^3 ]8 m( u! {
                                @.CurrIcon := "drivingHome";& o+ w# S5 g7 G" J4 S: ]
                                @.DrivingHome := true;1 _7 B9 f* K2 x# i
                        end;  b( G9 f/ @( F: d
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
. g0 p' \/ X5 A6 ^0 A                        part := @.transpOrder;' O( J! ?: ^% N1 P' o, r
                        part.move(@);-- load part
6 x- }. ~! l% [0 q                        @.CurrIcon := "load";# t( d3 a. w8 E5 I/ L; d  S6 o/ X
                        GlobalDistObj := part.globDestination;8 s; \" P6 {2 \1 t
                        assignLObj := rgmanager.rgAssignL;# e6 q+ z& L) c5 j) O$ @1 [3 E
                        row := assignLObj.getRowNo(GlobalDistObj);
$ a% k6 W* i: D' l% b' j                        if Row = -1 then -- since 70  G; k2 x; L, d3 L
                                if lan=1 then
! P# d2 \7 w9 F5 n8 x                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),# |" F& s: ~7 L" [: e4 y
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
( e/ E7 O1 M( \9 b# V) u9 z2 u1 Y                                else8 M7 z) v* C5 I! C! O2 @- z+ b
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
! O, C# {: }+ B- _. |                                                to_str("in docking station: \"",?.~.name,"\""));                               
, U" M: Y6 S# q% T  G                                end;
& L6 l, A% ?8 }                        else! F/ N, U4 Y  x" V0 M8 ?1 h
                                @.Destination := assignLObj[1,row];' n' E3 q) T0 F. s6 u0 c  R
                        end;                        % W' p6 H% Y' D' A
                        newDirection(@);
& I! k5 {, \7 q4 N                        @.HasOrder := true;$ b+ r; ?' C: w" ~0 J
                end;. I# o6 O/ i1 |1 f6 v. s. a
        end;9 I7 R5 N! r# S& \
end;        -- of the method  r4 n1 h% n& j% ^
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 6 k# e) j% ~0 |3 ]9 R% i% u. F
9 I/ {% {7 ~" c- a' J
这是AGV_putin中arrive的method。1 @1 @8 u& W8 ^3 M0 M& `

  j# U. k- V; B8 ?当到达物料速度越高时,这个报警更多,- P$ p. e* C3 N& {0 d/ N0 K* M
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。4 V; b5 G) U1 l# z5 x$ |
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?) S0 h& g9 x: y; X# ?4 X

3 D7 Y8 g1 k) v7 T% j$ m另外一个小建议,就是move,所有的move都可以这样
' K5 e8 B8 T) ~if not move() then debug end! s0 D/ S, T6 `1 A! C4 S" D' k$ ~& _
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
( p; t0 \3 W% y2 @; @plant simulation中的free libraries有AGV模板,
8 G% \1 B1 x! w' z3 K& f; c里面也有案例。# n1 C5 {. i2 T- ~" y( V
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
0 Z* ^9 O& g% w2 P; r! x
5 ?' Y3 [& X3 H# b5 Q我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 7 X$ m5 C9 h" |% o/ b, G; ]
  \8 F) y% J1 o8 \4 G
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
3 r" n3 v3 `* ]/ l# v# m# q这是AGV_putin中arrive的method。" Q& }0 D( h+ g; \3 ~/ ]" E0 c4 ~
/ }. k- F  _' @5 ?4 H( o
当到达物料速度越高时,这个报警更多,
% ]8 A5 d# r' g4 X3 x2 Y
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-7 22:57 , Processed in 0.017406 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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