设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6999|回复: 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'
% y- |" k( q+ s2 i*/5 J" q" d* k7 U3 A2 @
is
, p3 }9 H1 {6 A# Z6 ^# @0 X( u        part, GlobalDistObj, assignLObj:object;row,Lan:integer;2 o! O" I. C3 B. i6 J6 d
do. A- D4 @7 q+ B
        Lan := rootfolder.Internal.Tools.AOLlanguage;: z4 f/ a/ F$ N! C
        if current = @.Destination -- else return
. }, L( G" V4 {, L$ [        then. S+ a/ b4 \5 S' o. N
                @.Destination := void;( |8 w3 n5 A. j! m
                if @.occupied then9 u% L# R1 u6 B2 p* F
                        part := @.cont;* w! s: K0 D# a0 q2 O: b: j  b5 r
                        @.transpOrder := void;
! g# c+ r& A' j/ h2 S                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
2 u% A$ Y, B  U* ~8 C9 P6 J                                @,root.eventcontroller.simTime);
0 A! C; Z8 w% ^" R9 F0 S8 [+ `                        @.HasOrder := false;
- J$ i4 c+ i2 A* I9 T, d5 y5 X& W                        @.DrivingHome := true;# ~- x& e0 G, @7 l; ~5 ?: k
                        rgManager.tryToStartTransOrder;
! V2 p# o2 t4 s8 ~; s+ M                        if @.Destination = void
! J! P5 v! {, B/ B( \7 J2 Q3 |                        then -- no transport order for vehicle @8 z& W5 z2 K: z, @; [3 U7 O
                                @.Destination :=
: q% Z' N8 x4 I9 w1 t$ \8 N                                rgManager.nearestFreeStation(@,track.~);
. l9 E7 w5 r5 K1 D9 [3 F5 Q0 S: w                                newDirection(@);   
! T6 ?6 [; g+ j/ a! M$ R                                if @.Destination /= void then( _9 @) Z/ y' m- P" E
                                        @.Destination.NumReservation :=
% T) T  S8 n2 s- W6 Q                                        @.Destination.NumReservation + 1;
. s+ s* T( j* P9 c                                end;3 [- D% c3 o9 |0 l) l; }" f
                                @.CurrIcon := "drivingHome";
8 X. }5 k/ Q7 [& y, u7 U                                @.DrivingHome := true;
5 H6 B* e0 ~- [" ]                        end;
! _0 n( P, Y. c& I; h2 a! A9 Y                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
0 O3 j. L1 p% C' p5 R/ B                        part := @.transpOrder;$ L& L0 D7 \0 `% p
                        part.move(@);-- load part
& P# a4 A. b( s9 g& P                        @.CurrIcon := "load";( P& _% F, D3 I
                        GlobalDistObj := part.globDestination;; |$ |9 `+ d5 z7 L6 l/ N: Y3 T
                        assignLObj := rgmanager.rgAssignL;
- q& d, ?- @7 U7 R5 a                        row := assignLObj.getRowNo(GlobalDistObj);
$ b2 T% P1 R8 Y8 Z$ H                        if Row = -1 then -- since 703 @4 r8 R8 @  C
                                if lan=1 then
3 E3 o4 m: v3 d0 m0 S                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),7 W2 R  F# Y- `# F: J
                                                to_str("in der Andockstation: \"",?.~.name,"\""));6 a% S  M* m# V! {! E) O( O
                                else$ O$ c  }* E7 v1 T( H
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
& O/ F3 f& }- a( D                                                to_str("in docking station: \"",?.~.name,"\""));                                7 z- I  i4 S3 G9 h
                                end;
; C7 F0 f0 f' B3 ^' M- J                        else& E8 |& h! L  t( Y* Q* c+ S! ^5 g
                                @.Destination := assignLObj[1,row];
* X# v3 Z# }) }1 j& i* r                        end;                       
9 E1 {  z- y& n5 R                        newDirection(@);6 Z+ a* P/ ~2 k+ G2 S" {- j4 w& Y
                        @.HasOrder := true;- \: B& p9 Q8 A6 a
                end;! @. r5 t! l) G
        end;6 {1 P* [2 c9 Z8 T. ?! _! d/ ^& v
end;        -- of the method
6 X. o' A1 G7 m$ J7 {% N8 `
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 # T) E5 H6 [4 z" J) N- |" G

4 g& Q1 f$ F5 Q4 d7 w4 i5 e- t这是AGV_putin中arrive的method。
$ ~2 N. Q" v+ ?2 _
% e  M0 u/ j, e) j: T当到达物料速度越高时,这个报警更多,
+ J1 x+ A" ?6 r4 e1 ?# n可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
. _  Q/ J0 @1 J. u, U0 O程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
% E1 M6 d1 @; ~3 V. Q1 P  z2 S0 i
另外一个小建议,就是move,所有的move都可以这样
' `+ Z2 ]' f$ r( V. R9 V4 wif not move() then debug end
) A9 z/ T' u9 }, B3 ]) H这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
5 E  Y- Z+ d  S# D0 vplant simulation中的free libraries有AGV模板,
0 Q5 U( [  o7 G% L% G% Z里面也有案例。
& k8 d5 I8 Z/ n7 M$ \7 @% i# t1 [& h我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
9 Y- W; m' M8 ^' V5 k3 \+ y* w5 @- Y, H8 y6 \
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
' n4 w9 p' P0 c: N% c% B1 _1 N
. Z5 i% y" y  G那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 & ?" J, ~- I& p* @
这是AGV_putin中arrive的method。
1 q9 g6 h/ f! f  V1 r) q2 b& ?* _* ]4 A3 S% d% @  @7 Q4 M% W
当到达物料速度越高时,这个报警更多,

5 }% K5 X/ I7 Q5 E2 u另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-10 11:23 , Processed in 0.016427 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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