设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8814|回复: 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'2 W1 I- f2 ~$ L
*/
1 ^# A% X% o7 P4 @& j1 dis* [$ B4 l% t' y+ G
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
3 Z) s8 [% r% F7 d) z6 jdo
, H  l. _) I& V% i" E        Lan := rootfolder.Internal.Tools.AOLlanguage;+ X% T) ^: p* Q; W* W4 u
        if current = @.Destination -- else return
, d3 Q8 U3 P$ j9 T        then* m1 @0 M, E( M% D9 d
                @.Destination := void;$ N* x, E# q3 H- V; a0 B
                if @.occupied then
+ D# O: b( t8 i! A. M                        part := @.cont;
$ [/ w' c, U7 i% h& J6 w  k) }                        @.transpOrder := void;& g+ H) f$ f" ~4 m1 U5 F
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
2 w5 x. K" h1 I1 x0 a; K& _                                @,root.eventcontroller.simTime);
+ a7 m2 I: @1 d$ c) D3 m                        @.HasOrder := false;
& u9 H& q% [8 K$ {# r/ G& s) h                        @.DrivingHome := true;( q% T4 @8 J/ @9 n
                        rgManager.tryToStartTransOrder;
% y6 r! T* Y" L0 L; F                        if @.Destination = void9 e* E& b( B& i; @1 x! p  j
                        then -- no transport order for vehicle @
+ I" s# k' J# e9 k                                @.Destination :=0 B6 i6 _7 q  v/ y5 a% X9 H5 w
                                rgManager.nearestFreeStation(@,track.~);6 h, O! r& c4 _7 K* c- w
                                newDirection(@);   : \5 N6 c  @! a) R  g9 d; D$ _1 P& j
                                if @.Destination /= void then# \% Z% C" h7 ?* L4 C' }3 O
                                        @.Destination.NumReservation :=
' z9 `. I, F: D. F" E* Y  ~1 k                                        @.Destination.NumReservation + 1;
2 X) H# N( m( h                                end;3 ^( f4 Q# x! I
                                @.CurrIcon := "drivingHome";6 f8 T8 m5 G' q4 l
                                @.DrivingHome := true;+ _4 J2 S  R( F0 e* o6 C% o
                        end;" b# i3 M0 x8 I$ F- F
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
9 ~/ W8 ]2 i3 f+ n! m4 y                        part := @.transpOrder;
6 P8 n" F& l' C; x/ E                        part.move(@);-- load part
% G& d, g  {% s! n  V! S$ v                        @.CurrIcon := "load";
  ^( m/ l2 |! C3 y. T. M                        GlobalDistObj := part.globDestination;1 g# f% {4 O  P9 p/ T" {
                        assignLObj := rgmanager.rgAssignL;
" `6 R' R  _: g% J5 O% H. z                        row := assignLObj.getRowNo(GlobalDistObj);$ u7 f: o/ n& v
                        if Row = -1 then -- since 70
! b" y2 j3 S  B& F3 w7 K                                if lan=1 then
0 \2 y+ A3 a& H4 r2 j- W                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),' M% G7 R6 Z- t% F! J+ _, \
                                                to_str("in der Andockstation: \"",?.~.name,"\""));" y$ S$ g, w7 f) C# ^4 w& N$ Z! w+ B
                                else" G. t& r" [& R" ]4 a* P
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),& F" J( u/ W& H" T$ P
                                                to_str("in docking station: \"",?.~.name,"\""));                               
% I4 I9 Y6 T) {                                end;! x- T6 }+ c) v
                        else
$ P/ b0 G  n4 b                                @.Destination := assignLObj[1,row];
: d6 S% i1 |0 W! P7 D0 v                        end;                        + P- H3 H* `' v0 r& U; v
                        newDirection(@);8 \- Y8 w: E/ L5 Q# N9 Q5 V
                        @.HasOrder := true;
+ a2 q/ r3 [; m) K  Z" Q                end;
  y! z" t) ~0 ^        end;5 u. s; `, r. s& J) z. {1 j! o: Y% R
end;        -- of the method
1 k/ v2 \& v& w. g: J
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 0 M% J3 n; I+ U. s0 O$ O5 A) X

* T% X! H+ o" f4 P这是AGV_putin中arrive的method。
9 U" O. I. F( c( h. H$ h3 l: D! u# K$ \7 |1 X
当到达物料速度越高时,这个报警更多,0 T0 y7 M- R( q
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
; j( g7 c" ]- Q: j& P6 H程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
" d* p1 t) G( L' k& q2 ~9 D: I' v' `$ _* B6 f; d8 E% v. r) n0 _
另外一个小建议,就是move,所有的move都可以这样
" x' S8 R* j* e; \# ]if not move() then debug end
* O# o8 g! d0 v  f这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
! h' [. z6 P5 x* i  K" k+ i! T. eplant simulation中的free libraries有AGV模板,
' }4 d- q5 H: A. S5 z" R/ K6 }- c里面也有案例。$ a: o  V7 Q$ F* c5 w! v
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
4 J; q# s$ R- P- _+ G0 s0 K
, r+ C4 O7 Z- [; ]  Y我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
+ H$ ]& e5 A- w# R# M, t( y$ n$ k/ H7 G* P, C/ Q" _
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
+ F0 ]$ h: n4 R8 h6 H2 ]/ H9 [这是AGV_putin中arrive的method。
& T5 q' m. K$ b" ]% t, H1 f$ l2 S! n. T+ `- u1 ]
当到达物料速度越高时,这个报警更多,

0 C, R" t& i( V/ W另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-27 21:51 , Processed in 0.017539 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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