设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8124|回复: 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'$ R( ?$ l/ P4 w
*/
' v* d* z4 f' n) |/ ?' f/ \is! }, f3 X  s% R1 }
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
3 n# K* e' C- d( s5 Gdo' p: `+ ^) D8 e7 u" v1 C
        Lan := rootfolder.Internal.Tools.AOLlanguage;+ A* y& E3 F5 E0 q) F, \
        if current = @.Destination -- else return
+ ]( x# R+ T4 N7 E8 f8 L        then
) F: ]3 J& b) P: ], z1 E                @.Destination := void;
9 f4 v! d% b: _9 w                if @.occupied then6 h% E, T3 p% i, }
                        part := @.cont;8 q: C# G  N9 B' P- O
                        @.transpOrder := void;4 h& x) @0 t0 v7 d- B' C* D* ?4 K+ Z9 O4 J
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
2 ^& h- \2 C& p# \: O9 k5 V9 S  p6 J                                @,root.eventcontroller.simTime);# Q4 A9 t; n3 R# I2 @$ d
                        @.HasOrder := false;
, o/ t8 g2 @, G2 G2 @                        @.DrivingHome := true;
9 v: K/ z/ _  s" L8 h                        rgManager.tryToStartTransOrder;
7 w! Z5 _# X) u) E! c                        if @.Destination = void7 c( m9 p! B' `  v# g
                        then -- no transport order for vehicle @, d& N0 X+ y( n4 E1 @
                                @.Destination :=* e$ `3 {' O0 c$ j* h7 A5 K6 Z! R
                                rgManager.nearestFreeStation(@,track.~);
$ a; r1 t; P7 t$ ^9 L                                newDirection(@);   ( c9 w7 O4 g) @2 `! E  O
                                if @.Destination /= void then
. F/ k( l! f7 n& ~( m                                        @.Destination.NumReservation :=
) M5 {, o7 M8 s; d& n& M                                        @.Destination.NumReservation + 1;
* @) H3 T( A) D6 H! o- @+ o& b                                end;3 b! }( o! G0 f- N; o! X
                                @.CurrIcon := "drivingHome";
1 m+ ~3 G. x# `4 V. H* R0 d+ V5 y                                @.DrivingHome := true;6 {( q6 F3 B3 l+ V! F! w# _
                        end;
) w/ l( T$ D7 k) T                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
+ y& z2 @8 g  \' J1 b4 b                        part := @.transpOrder;9 D1 J6 R1 M1 Z: I3 g# j
                        part.move(@);-- load part! a& L6 I3 U+ t9 m9 Y9 X0 R
                        @.CurrIcon := "load";0 J! l: o% A: c2 U" v7 G
                        GlobalDistObj := part.globDestination;
7 K7 B% Q9 e5 A; u3 a' _8 l# v$ O                        assignLObj := rgmanager.rgAssignL;
5 T/ r( I4 f) N7 d8 Y8 w' i$ H. \6 ~                        row := assignLObj.getRowNo(GlobalDistObj);
: Z; ^9 c& }% S8 i8 a# J$ Q- x                        if Row = -1 then -- since 705 G1 o* e7 Q% a( E9 e
                                if lan=1 then
. j: y5 G$ N) d/ c: z1 c( F                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
+ ?2 ^: Z. }( z* ^; s                                                to_str("in der Andockstation: \"",?.~.name,"\""));( ^9 z: {& E' i* v6 C
                                else$ \% d# N. B  F  |9 \* N% X% c* p& j
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),2 B) G. q  ]0 O* _, W
                                                to_str("in docking station: \"",?.~.name,"\""));                                + G( w! C! [& `4 c5 y
                                end;" z0 o2 Q; |+ L
                        else
* |% I4 D2 A9 E4 ~: [! k                                @.Destination := assignLObj[1,row];1 P- z% A: W; u: M6 y0 G( F0 ^
                        end;                       
2 }  H, k' [, G" j                        newDirection(@);, ^! U4 B6 y) V
                        @.HasOrder := true;2 c/ X( j4 j( c5 b% D
                end;
9 [7 v- ~  k3 W7 C' g+ r2 Y5 A! V4 a        end;
: |& M/ \' g( x: `9 l4 l* y$ @end;        -- of the method  c9 r1 y5 ~  F
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
/ g: O; k  O' L4 S- U( j) H$ K0 e
这是AGV_putin中arrive的method。
- m2 [" g4 I4 s  l# _2 w$ l' d2 W8 d/ c9 Z( Q% V7 M' G$ R
当到达物料速度越高时,这个报警更多,
1 S+ S3 z: u4 B, n0 A! A: @可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。$ l+ a4 f+ G4 a$ q% Q4 r
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?( r' ]1 q& l* H# a$ R. h
0 p0 C1 S9 n" N" x; k) z
另外一个小建议,就是move,所有的move都可以这样
! D7 t( x! d' r* O/ @/ s% T% s0 ?if not move() then debug end5 a( f+ [  a  R
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
8 |8 X  ^4 O% ^9 n3 @, dplant simulation中的free libraries有AGV模板,: @/ y8 O' i- q( Y9 H. B
里面也有案例。. u! X- e3 F" H( M9 M
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
: ?4 X- Q9 @; c9 ^
  ]! E/ C3 M" {5 j我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 $ ?2 y  u& ?, W# J0 D5 g

7 W) E& |) Q* C' W那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
8 E; S# Z9 o0 b0 A* M* _, B这是AGV_putin中arrive的method。: T9 r% D- r8 X( {  P8 ?' j
+ t" j" L$ g" Q7 U$ T. z
当到达物料速度越高时,这个报警更多,
1 h! u6 |+ L* K9 W
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-16 01:44 , Processed in 0.025540 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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