设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6473|回复: 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'
6 v' I4 F- o5 M" m- S3 b' X1 ~! k*/
) [6 M4 ?- {, H# o$ A+ xis  v7 z  Q0 O5 g
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
6 x! |! ^- C$ w' o/ S7 Xdo
% {6 `7 W: E1 O/ `  U* N) n        Lan := rootfolder.Internal.Tools.AOLlanguage;
3 Q9 [9 M* U8 J        if current = @.Destination -- else return4 Z) I) P  {  {1 L. j0 w# |
        then2 H0 F5 i) J# J  h" r
                @.Destination := void;6 }, q7 a/ [% L( o" t& v5 y
                if @.occupied then7 |+ B+ m7 C, n( e5 J7 Z
                        part := @.cont;0 y. H# _4 G2 f0 Z0 S
                        @.transpOrder := void;
# U* B& V, n, W- `                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,  K/ S. T) C' ?3 |
                                @,root.eventcontroller.simTime);3 M* b# L9 L0 j# ~/ z; c
                        @.HasOrder := false;
4 w/ X# V  h5 i# D, Y7 P1 n                        @.DrivingHome := true;
  j. |7 B$ v; C* K* m                        rgManager.tryToStartTransOrder;5 g1 [6 D+ w3 _0 j3 m2 o( Y, T
                        if @.Destination = void
8 u! c' g! N. f+ \" T                        then -- no transport order for vehicle @
4 i4 _6 Q$ a4 O0 |                                @.Destination :=
9 j5 {+ G$ b+ a. @% e! P                                rgManager.nearestFreeStation(@,track.~);
( w/ D: g/ k+ i* T& M                                newDirection(@);   
+ u2 G' G* c1 V# [0 {                                if @.Destination /= void then
  g, h! [3 N8 o2 G                                        @.Destination.NumReservation :=3 [. I- s& ~* ?7 f9 ~. J7 S# F4 s
                                        @.Destination.NumReservation + 1;
) S& `9 I$ V! Q5 V! p: v- `                                end;/ l5 {& L4 k2 }# P
                                @.CurrIcon := "drivingHome";+ f3 U* y) Z- U$ K' d9 ]- Y5 B6 i( E
                                @.DrivingHome := true;
" J% s+ M; S* H9 b& }" X2 T                        end;
# @6 c, b& i# Z- {                else -- the vehicle @ is empty, both vehicle and part are in the same dock station2 T: g% x* `8 |, O4 c
                        part := @.transpOrder;% {0 i; c) p2 ?# O
                        part.move(@);-- load part
. V# e" R% Y  G& w* W  D7 T                        @.CurrIcon := "load";
' v! R5 @, C4 A7 ?! ~+ V                        GlobalDistObj := part.globDestination;
! a. y2 y) r; K/ m3 ~8 P                        assignLObj := rgmanager.rgAssignL;- ]2 [! v2 d4 w
                        row := assignLObj.getRowNo(GlobalDistObj);
+ L! ~/ E. k% \2 u+ X                        if Row = -1 then -- since 70
' z# n7 M# _0 p2 R& p# e                                if lan=1 then
6 Z5 A& [, r9 Y9 u9 l; d  ~                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),3 A9 n( m! Q8 Y$ J: |
                                                to_str("in der Andockstation: \"",?.~.name,"\""));: v  @" N- z: h: e
                                else
' a' D$ A$ j) a* v                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
! c  K  s  w% H                                                to_str("in docking station: \"",?.~.name,"\""));                                2 s7 t- b# l% ]
                                end;
& s/ ]& q3 y. V8 N: _                        else4 H+ ~* l; _: n$ c
                                @.Destination := assignLObj[1,row];
- L! E( X% y& [' _4 \8 e& z# w; p                        end;                          s! x8 N" T9 I8 {: T
                        newDirection(@);
6 U8 U/ j6 f( _+ ~- ?                        @.HasOrder := true;
; J# M. F) R  Q+ N' g                end;1 \# w/ i) H0 `8 M: g9 i
        end;+ i5 `' Q8 T. P5 ]: Y, G7 [+ `/ ~% }
end;        -- of the method$ K# J. B+ J, w( K. @3 |
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
- ?! V( l, b0 Y* T) c1 c- J8 p7 {7 j/ R2 G. O4 ]
这是AGV_putin中arrive的method。1 [5 H+ N2 q0 M" |. I, r1 Y) U
) x, D" F2 S1 S
当到达物料速度越高时,这个报警更多,
8 b+ ^. N" ?5 z2 f可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
  k3 i0 i9 z% e程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?$ o8 P, C9 j- S; s

+ I' Q; J: i6 Q6 x另外一个小建议,就是move,所有的move都可以这样
! h; N# ^6 V+ p1 ?' D8 Fif not move() then debug end% d9 u) L6 a" Y8 a, ]% u. [' m
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
+ ]( y% B% B2 c0 u9 Z5 r/ @plant simulation中的free libraries有AGV模板,8 w( n6 E: I: X1 J4 |
里面也有案例。$ Y1 v, @! ^& j& w
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
+ X7 z; d' [1 _# R/ N$ ~* n
$ T4 E3 i! _6 [/ [1 V. X: N$ W我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 ! @$ N  N2 U$ j' G
$ u! F0 R% E' [9 z* Q1 ]- x# Z5 {
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
, d3 m; l" Q- A% e" f( n这是AGV_putin中arrive的method。1 s) o% h) n' H

* A. }/ b+ H) Z( T$ y/ M当到达物料速度越高时,这个报警更多,
: E. Q7 F( X9 |+ n6 o! G% k
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-8 18:40 , Processed in 0.021313 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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