设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7122|回复: 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'
% W; r6 W( x0 |' P  N*/( |) u- ?7 Z0 L* j0 c
is
, o' f* z* S) g# s8 h        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
6 b/ I7 t" ^# x. |% jdo- y# X; q' v% @& R! t$ r6 E
        Lan := rootfolder.Internal.Tools.AOLlanguage;
* Z# E8 ~7 {6 {0 x' r$ m        if current = @.Destination -- else return
( D; F5 ?" W6 B4 l7 O, j( @        then! Q( u7 F& r5 h6 L! A! \3 D
                @.Destination := void;
8 c! x1 x2 F  D# L4 t                if @.occupied then
# o9 f) a2 f: w; q/ O9 s8 G7 a                        part := @.cont;
4 K( f$ \% W+ Q                        @.transpOrder := void;1 S) C! ]5 M) V5 p  d7 e
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,$ E6 J( b5 S/ X/ z  Z
                                @,root.eventcontroller.simTime);
( J  T  Q/ ~( e$ w! F                        @.HasOrder := false;
0 m' _  ~1 U, ^" p7 }                        @.DrivingHome := true;
$ m. @% Q$ X) r+ v                        rgManager.tryToStartTransOrder;
, m1 O/ k# _" X1 O; \                        if @.Destination = void
  e4 ]: r) ~6 f# N7 K" \& Q! s3 ]                        then -- no transport order for vehicle @) O; f( Y  ^) T% i% _; \* T3 K. z) F
                                @.Destination :=
2 ~5 _, Y# r8 _7 @( m7 G                                rgManager.nearestFreeStation(@,track.~);6 j: y! U7 X; W1 W
                                newDirection(@);   
; f6 N# V1 k& C3 X' {$ A+ c                                if @.Destination /= void then
' f& i+ ~- ]3 w/ _7 C: Z6 M                                        @.Destination.NumReservation :=
& o4 x! {* b' J- _                                        @.Destination.NumReservation + 1;
6 u( H, ], Z( V, L; ^                                end;
" r) _/ z" g. A( U                                @.CurrIcon := "drivingHome";4 J& N. Z3 c. z+ ~3 J) ~
                                @.DrivingHome := true;
, t! ~. C4 P1 p3 G  h+ I                        end;! b0 W/ z4 d8 e
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station2 }6 f: S6 b  s
                        part := @.transpOrder;
7 b  n3 M3 w! S: f6 Q( z                        part.move(@);-- load part2 x' T% K) Y' t
                        @.CurrIcon := "load";
. U# h; B0 D: w  C, n                        GlobalDistObj := part.globDestination;
& e3 R- z) k0 t: Y( y$ D6 `6 R4 u                        assignLObj := rgmanager.rgAssignL;
8 Z5 g; G4 a* |, l& Z3 n) u                        row := assignLObj.getRowNo(GlobalDistObj);: j! d  R) ?* b; {* P5 B: {
                        if Row = -1 then -- since 70$ `# y$ [* }& c' N' ]
                                if lan=1 then
3 b7 C+ S' ]  T) _# W  u                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
& O6 ?" e, R3 R; ~7 q! [                                                to_str("in der Andockstation: \"",?.~.name,"\""));0 @1 B% U. a/ ?4 c
                                else& d, J8 P1 H& W4 ?$ p
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),) `+ d0 w/ L& `* ]. ^- Q7 s
                                                to_str("in docking station: \"",?.~.name,"\""));                                $ L4 i" E  K2 n" U! k
                                end;
6 i" k: @2 I5 B6 J                        else
2 |" u" N4 Q6 T  I( G                                @.Destination := assignLObj[1,row];3 n* Y* _' `+ U0 V' r* z4 Y
                        end;                        $ P! k' L, {/ R
                        newDirection(@);1 @: R! Y& m2 R- G- U0 S4 u$ P0 ^
                        @.HasOrder := true;
" Q+ O1 X* N( ~; m5 @% d                end;
: w: M7 {+ `4 C2 J) f        end;) w) t! j% a* p$ T2 C' M
end;        -- of the method
+ u" b, D( e- |# y8 h
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
+ {9 _: ^: v( [5 h, d+ O0 k( b. c8 I3 I/ S2 J
这是AGV_putin中arrive的method。: P% S8 e* T1 j

$ u/ e8 C8 A$ x8 H+ d! M: R当到达物料速度越高时,这个报警更多,# V0 M. `2 M- B$ j: x' z4 t
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
) T9 w% S4 g1 i# ^$ I6 @程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
! A. S, D- h6 T) ^( }, R+ y/ O
8 [! J, Y8 T2 A4 K3 @/ X/ ?% u另外一个小建议,就是move,所有的move都可以这样
1 z- L& z& Z9 G/ [# K  e1 qif not move() then debug end
7 E/ t8 g/ h5 {5 D4 v( L这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
( [* ~' W# R$ o  w1 mplant simulation中的free libraries有AGV模板,
( Y8 ^- ]0 ?: j% h' h. v2 N+ [里面也有案例。* m( F* H; ~- w0 R8 Z) G( m$ h
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
7 S2 D% i) G. G
$ Z* W8 s; G  H; {) D- |我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 - Q- M6 j6 ^5 L! j

# d) W* V8 \" @0 ^那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
6 e; [* f8 E/ ~- M; |' ^& l这是AGV_putin中arrive的method。4 v" i8 Q0 A  S2 ~$ l0 z  H8 |: N

8 I1 @9 P, l+ f* P当到达物料速度越高时,这个报警更多,

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

本版积分规则

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

GMT+8, 2026-3-19 20:20 , Processed in 0.016881 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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