设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6437|回复: 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'
( u% Q1 M- ?  Q3 o, t*/
; j$ Y$ u3 D# Q" nis+ [6 z( q; W' R7 v+ q$ l
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;; J5 z4 n8 P: o, D+ Z
do
: m& i" j( O6 G/ b        Lan := rootfolder.Internal.Tools.AOLlanguage;6 x* o! L- t- B0 g! _9 |
        if current = @.Destination -- else return
6 ?( A8 w. W) ]# q* M        then
. _! }  w+ b5 ]4 s( v, g/ U                @.Destination := void;. B# {& D; A, n7 r: U5 j
                if @.occupied then, l1 N; Y0 u8 Q8 y. Y2 P
                        part := @.cont;
' y5 ]/ L3 k; E  T- P  W8 ?- m0 H                        @.transpOrder := void;
% v: a5 x/ F! N. Q( @7 g                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,6 t) _) H) e. r* f( n. Y
                                @,root.eventcontroller.simTime);
- n6 W: a! k$ K9 S                        @.HasOrder := false;
  f$ P3 ?' b% K4 e) N6 X5 u                        @.DrivingHome := true;; l9 ^* j* e, _- z4 c, g9 Y1 Y! t
                        rgManager.tryToStartTransOrder;
5 W+ K! ]2 ^# v- J                        if @.Destination = void
) S, U( o2 [- I) i; s! }, c1 I+ n                        then -- no transport order for vehicle @8 Y" k# S9 j! `. _
                                @.Destination :=$ p" l: ]; i8 G$ g/ _" J9 f# L
                                rgManager.nearestFreeStation(@,track.~);
) ]1 U* i, [+ @) u6 k: y, T) E                                newDirection(@);   
; n5 P5 d) a! ~* w4 o                                if @.Destination /= void then7 v! f2 d! l* ^
                                        @.Destination.NumReservation :=
4 k* c4 R( S, V; @: p( G                                        @.Destination.NumReservation + 1;; H/ v; E- g3 }" W
                                end;/ }: f3 Q# P, h) A; X
                                @.CurrIcon := "drivingHome";
5 f4 k0 R; [5 f                                @.DrivingHome := true;7 Y0 u" j% U+ M2 h8 ~, M" @( z- D, e
                        end;
; x/ D5 H" x9 x$ d  m" X2 u6 }                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
+ U$ @8 z( e% R( E                        part := @.transpOrder;9 j, ~2 P& ~8 ~7 }/ P( M, f6 K! P+ o
                        part.move(@);-- load part- W7 D/ V: d. ?$ |: x
                        @.CurrIcon := "load";
% G3 Y& h8 @2 H                        GlobalDistObj := part.globDestination;
% X8 c( Z+ m0 y% m                        assignLObj := rgmanager.rgAssignL;
3 u- @; M' M& D. [& _+ g% W                        row := assignLObj.getRowNo(GlobalDistObj);1 p+ `8 F% C# c7 j
                        if Row = -1 then -- since 70
! I: ?5 ]/ Y& S+ ]" A4 C: |                                if lan=1 then
" |/ N" r: L9 ~1 A                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
% s* l; b8 u9 i                                                to_str("in der Andockstation: \"",?.~.name,"\""));
8 N' s# t* R# h% l" \( c! }' n                                else
3 h- L" ?7 D0 h. R* i( B9 _5 \                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),0 S6 i& J2 j/ n
                                                to_str("in docking station: \"",?.~.name,"\""));                               
5 C+ O: e$ i" c& z  q                                end;
6 A4 B! [  H* i" g8 I0 n- i                        else6 m& p' \5 F% y9 F$ n
                                @.Destination := assignLObj[1,row];' K1 s; ^$ Y4 R& N# P0 w7 o( B$ f( B
                        end;                       
7 q) j5 Z  ?. i* o( p' Q                        newDirection(@);
$ b* {! ^% b# n* V                        @.HasOrder := true;
8 F. C1 t  \- c' r                end;
% a+ `6 m7 a9 K/ \4 u5 T. u  d        end;
2 \4 v  a- m; F  L) g6 oend;        -- of the method8 l. a/ r% |, Y7 ~6 `
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
2 Q( W: A% n1 c: X5 a& U, T" V/ a* C  K$ R7 D2 P4 U" i
这是AGV_putin中arrive的method。
3 B$ n9 z, k: }8 w8 k
, u5 X  w/ t% k- @当到达物料速度越高时,这个报警更多,8 v$ w1 ~7 T- @0 F2 r
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
! D$ F' ]  }8 n9 j程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
6 d  p) a" d+ Z/ s2 F8 [4 Q# Y& e6 d( C9 Y$ |0 A5 B
另外一个小建议,就是move,所有的move都可以这样
$ s8 X2 \7 Q4 y( ]if not move() then debug end
& j  p& l. Y9 i1 _1 {" {: W这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
1 d3 g' ]+ L' A& P7 T) Iplant simulation中的free libraries有AGV模板,
+ q8 s" `* J) B里面也有案例。) W# o. H3 e" E5 y
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。2 d3 G4 l8 C! o

, F9 D! c% h9 `7 d1 \我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 7 J* m4 N: }2 {! i4 G2 n+ r+ W: w) b# t

; g) S; ]  J5 ]/ O9 G) t那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
5 a( x+ l( v8 O% i+ f" a5 N* X. b这是AGV_putin中arrive的method。
' B4 R3 ]9 T9 d) R$ L8 b( R6 g
: v" z9 Y- Z. a) k当到达物料速度越高时,这个报警更多,

; D) N6 ]! v; R; [- b% u; H另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-6 16:09 , Processed in 0.017197 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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