设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8842|回复: 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'
/ B: l4 C1 H% G0 i, X*/
4 c' V! S. ~& d7 Jis
5 c) v6 s; y4 m, m' e5 C        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
% Q2 D! m" y( j/ Y: v  gdo: F3 x, m& \: Q8 a- a+ \
        Lan := rootfolder.Internal.Tools.AOLlanguage;
" G) }. u! H0 i2 f6 e( p. {2 L9 _: |$ i        if current = @.Destination -- else return
; K5 n( u4 ^/ w2 Y& a+ X        then
1 G4 _# L8 Y2 W. x- [                @.Destination := void;
4 g: C9 A2 b& T% r' ^% g3 \) s$ u                if @.occupied then
% U7 ]( H- l) _5 T  a4 A                        part := @.cont;
7 m9 O$ `6 T' N- o. `  A# X                        @.transpOrder := void;1 u  c' w& W2 s/ Y+ |
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1," _3 c1 G4 \. @4 l9 \* C- O8 R
                                @,root.eventcontroller.simTime);
4 U; d9 Z4 v6 O                        @.HasOrder := false;
% o+ T( k# B( b7 [, L" M) B4 u                        @.DrivingHome := true;
& S! A* h  O; E0 [                        rgManager.tryToStartTransOrder;
6 N* B# U! l  y" O( n2 C                        if @.Destination = void" k  r+ l7 A3 b
                        then -- no transport order for vehicle @8 H4 l) Z3 A! h* |: u
                                @.Destination :=
" ], C! h& @3 ?/ t, R; r                                rgManager.nearestFreeStation(@,track.~);
2 t( G/ o7 p' P! k6 {7 k                                newDirection(@);   
6 y  e0 V, S2 o8 u' d                                if @.Destination /= void then
+ Q7 E  {# P4 C* s                                        @.Destination.NumReservation :=+ B. f8 D. Q$ }8 B% N
                                        @.Destination.NumReservation + 1;
  p( K( y% ]2 l) A/ N% q7 q                                end;
! I1 v" `% @5 i$ ^0 \                                @.CurrIcon := "drivingHome";0 l9 u& Z( v( A
                                @.DrivingHome := true;
& {3 I* x+ z6 p% q4 T                        end;
) P5 l7 W5 u6 f) N- V% x& ~: o                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
; J0 S9 Q+ L& S3 ~6 B: S                        part := @.transpOrder;7 B: n- r! h: D/ U+ E7 f4 z. U
                        part.move(@);-- load part8 i; @! A) P, G; Q# c
                        @.CurrIcon := "load";/ j7 x( L) P' E5 w4 i7 w
                        GlobalDistObj := part.globDestination;
7 i/ y: G; X$ ~% e4 h- a, P9 ~                        assignLObj := rgmanager.rgAssignL;4 [3 h" f/ c! i' u# {
                        row := assignLObj.getRowNo(GlobalDistObj);
- w2 I6 c" b6 m3 m                        if Row = -1 then -- since 70
1 f2 m" U1 S6 l0 V% E                                if lan=1 then6 }) Z% ?4 W" n+ _* P
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),- P6 R+ k/ \4 D3 D6 t6 x
                                                to_str("in der Andockstation: \"",?.~.name,"\""));% s. T- i1 F2 k, G* s' H
                                else
4 T8 I# G3 L9 e$ p  ?  K                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
" v9 r  k% k4 C6 y                                                to_str("in docking station: \"",?.~.name,"\""));                                : b9 k5 {; ~1 ~3 b: X
                                end;" h5 z% e% c8 w7 ^0 R
                        else
; p. Q6 @( F0 c% r                                @.Destination := assignLObj[1,row];
: y% R% O% O9 s. j0 J1 q/ \                        end;                        4 F4 Y: h# }3 T2 E7 ]
                        newDirection(@);' n$ z/ \0 v. s& m! O
                        @.HasOrder := true;
; _  f2 x& x6 m* `+ X                end;
' _* e- E0 r8 f( K        end;
# ]; m$ F" J" s( T8 Y# c: {end;        -- of the method% ^. f# P2 `8 ?! A
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 0 s$ U* @% D! K- y4 p/ ^2 {/ J
8 r; o! A# g' B( u
这是AGV_putin中arrive的method。
6 A$ t$ p2 F; O, [, k2 K+ `- J$ g" u6 n6 j! [/ M
当到达物料速度越高时,这个报警更多,$ v6 a) S' d0 `& c8 ~8 J0 f# b2 f
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
8 i: o1 ^1 h7 y- g' v程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
7 c7 g% N5 P% M5 ^4 A" V- o- G# B" ?( \* k" y. [3 r; D. `$ c
另外一个小建议,就是move,所有的move都可以这样; m5 {( |* x4 o& v
if not move() then debug end
# S' U, E8 f# A7 I; V% @这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
! \! \0 E4 s* E) hplant simulation中的free libraries有AGV模板,
  Y, K0 M% }3 D9 u. z里面也有案例。
$ [; v. o0 w; p. Y, s我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
' g/ \) j9 B( |% ^" ~. j0 L- O% w" r- B1 E! Y; |
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 , ]) X% V$ ?" [+ ?0 y0 x$ A" D* V
. Q2 N0 s; V0 L2 h
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 7 q- `/ ?- u1 |, e# d1 ~; [
这是AGV_putin中arrive的method。
4 v" U0 W4 G4 V3 S7 X$ z+ d
* g- c, \2 ?7 h6 ~! Y当到达物料速度越高时,这个报警更多,
. e, q+ Z6 U. `. v7 K* t5 d; b
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-29 13:35 , Processed in 0.016583 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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