设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6151|回复: 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'5 ~, x1 v) H5 u* C
*/
5 w8 j7 j8 M1 ]" U# ?  nis
7 r8 A0 j1 Z% S3 T  A* p7 q# t        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
$ e- U4 }: _6 S6 J5 y3 S0 Sdo
) ~! Q% s# y) h4 M4 N* L        Lan := rootfolder.Internal.Tools.AOLlanguage;1 J9 K( l+ q. e1 y  g) C
        if current = @.Destination -- else return. d! ^7 s; |, D& \) w
        then1 b2 \" I0 p6 Y, m' n( z0 _
                @.Destination := void;5 ]* T6 Z) Z, `9 S5 z, c  m# t
                if @.occupied then2 d. C% C: x: h. |8 y# _8 _
                        part := @.cont;
* q" B! B5 b5 |9 c                        @.transpOrder := void;. K. R# }- c! T& U
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,; l# E# I5 ^* `1 c3 Q
                                @,root.eventcontroller.simTime);
- m4 S4 b" f5 f7 u# L: x                        @.HasOrder := false;& i) u% q5 y0 D/ Y0 K
                        @.DrivingHome := true;
* _9 s, _7 j. ~! z2 [! y; ]                        rgManager.tryToStartTransOrder;
/ P$ I- o3 z, o                        if @.Destination = void
. N6 W( z* ~4 j  g2 @2 ^$ N                        then -- no transport order for vehicle @
% L2 t7 l+ y  L/ T' ?" a4 Y                                @.Destination :=4 N; ]" P( e5 |$ W: n: S
                                rgManager.nearestFreeStation(@,track.~);
, e- r- K+ w/ x5 }                                newDirection(@);   
( W  {  d- J$ B$ l& j6 X0 Z                                if @.Destination /= void then
$ p" t" R9 ]3 P- [$ Q8 X4 p                                        @.Destination.NumReservation :=2 M( B  x* A4 ?  ]
                                        @.Destination.NumReservation + 1;/ D! k' Q1 f0 I8 J8 M- {
                                end;
, z& l6 b+ M6 r) b$ ?                                @.CurrIcon := "drivingHome";
( r0 ~3 i: L9 [4 i6 U' s                                @.DrivingHome := true;
1 ]0 O" q# A; Z( |                        end;
  |: G( f0 e1 C" x8 l                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
" p' a! Z4 P( V                        part := @.transpOrder;
) W+ C. g' k+ P# |) ]                        part.move(@);-- load part
4 |; W. O( O! w6 B                        @.CurrIcon := "load";
& |$ n& G- Z+ |- i7 k' g                        GlobalDistObj := part.globDestination;
0 Q5 K  L" m6 P% r                        assignLObj := rgmanager.rgAssignL;! \0 w7 b$ l5 L5 C( u2 {9 f7 M9 X8 H8 k
                        row := assignLObj.getRowNo(GlobalDistObj);
2 r0 G2 h. j  ~$ }4 c/ X% U' w  p6 B                        if Row = -1 then -- since 70
8 ^1 V- Z0 |4 E3 R                                if lan=1 then  R- A5 B' o' _% |3 t1 B9 Z
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),. \4 V0 I  X# i" @# M9 i9 @
                                                to_str("in der Andockstation: \"",?.~.name,"\""));) P# b- e0 E* E) m
                                else3 n( M$ z" P9 l) c. K0 u
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),) a  _9 J! \* X. x' o
                                                to_str("in docking station: \"",?.~.name,"\""));                                ! }7 W$ {+ `7 O0 K1 B, k3 J0 _9 N  R9 U
                                end;) ~& P# f8 N% U. Y% f. u. o
                        else
' ?  n, b' H; f' s                                @.Destination := assignLObj[1,row];
7 s$ U' _1 d- O- R                        end;                       
8 U0 u" d/ G0 |+ H4 `4 x4 |                        newDirection(@);
: b" l" {; L: W( x3 V6 y  I                        @.HasOrder := true;
4 ]( L$ _% L) d- ?4 i2 n                end;
( a# d  i$ h  Z( ?8 p& @; V        end;9 c: j) c; D4 i) V
end;        -- of the method2 x9 i" O; Y9 V. a
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 9 b6 F7 W2 g* Y( X$ E' A

& |+ W& n. X! C7 s( C) |这是AGV_putin中arrive的method。0 ]6 D! d  n9 ?8 Q6 T4 `
4 n, m* U- W$ l; v
当到达物料速度越高时,这个报警更多,
5 d2 @+ O" Y% E8 Y$ s可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。, }2 O7 |/ n0 ?  p* S4 [: ~
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
3 L% a1 D4 U8 c4 L5 o/ A) L: K- L8 h& Z! j9 n( C* g! L
另外一个小建议,就是move,所有的move都可以这样6 ^% b! G$ e! J$ q# q
if not move() then debug end! K; j: \, v* G0 {% K
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
( Q& o+ g4 @2 ^0 cplant simulation中的free libraries有AGV模板,( ^7 X2 [7 i! k1 Y6 ?$ t+ D
里面也有案例。4 {" J+ |  k$ \+ r
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。2 T% n6 G7 [/ U8 ~% S- w5 w
$ A/ Y% S4 S. I* x. A2 Y0 G2 x' F( {
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 2 @7 E6 d0 U) \# ~7 N8 B9 l" _( X+ o

7 \2 X! r6 U, }, M- U+ `那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
; D% T6 T0 s* g9 I这是AGV_putin中arrive的method。& ~# X- e9 f. h% q6 x. @. k. D

8 T& }( O5 N1 P2 y3 y2 H  L1 {当到达物料速度越高时,这个报警更多,

; y$ Z" Q. y$ b' Z另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-1-21 20:10 , Processed in 0.443203 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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