设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6024|回复: 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'
, ^# d/ P8 e( e*/, ]4 N# w/ [- {* X# c) z6 u
is# m& }$ j) r4 U
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;4 k6 O% A% ], u7 q/ y0 B
do
! E5 m- l. x5 {" q! n# [        Lan := rootfolder.Internal.Tools.AOLlanguage;
5 S/ m+ Z3 k1 J        if current = @.Destination -- else return' V3 g: _' N" i, y8 g! Q
        then/ i, j: q# C/ W; v2 P
                @.Destination := void;
6 V. ]: c- \7 Z" b% m8 ~" B) ?                if @.occupied then! I& K0 Z3 [8 A* k0 T
                        part := @.cont;: j' @1 }" p4 A8 `
                        @.transpOrder := void;
; u; x- _% o4 b4 k( j' P" K5 S                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
! g" i& T; E) l7 d, U                                @,root.eventcontroller.simTime);6 F7 f) N. y8 `& P( g2 J
                        @.HasOrder := false;
8 i0 ]4 {: }" C1 J7 d& f" b/ }                        @.DrivingHome := true;
! A) ^! C) P4 ~/ F' S                        rgManager.tryToStartTransOrder;
% W' d8 O3 S1 l8 ^1 D3 Y+ B                        if @.Destination = void" r: f4 B2 K3 K
                        then -- no transport order for vehicle @
' R: j' b0 I+ x/ s- r8 _4 b                                @.Destination :=, P4 J5 [: Z6 J/ v# M5 e
                                rgManager.nearestFreeStation(@,track.~);0 r: Z$ `. P1 l' g
                                newDirection(@);   
$ Y! {6 q  o6 X* c( b                                if @.Destination /= void then  l$ s' s; n5 U/ ]) ?( W6 w) L
                                        @.Destination.NumReservation :=
- \5 i  k) U; K                                        @.Destination.NumReservation + 1;* H6 d$ A1 a* r9 b9 f
                                end;
* j- ]' V* B6 E2 d                                @.CurrIcon := "drivingHome";
  Z# O4 n, D# K9 c                                @.DrivingHome := true;
% s  f5 P0 W" ?) `+ T0 s                        end;$ M% h& q8 u: x
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
3 p8 C1 `) j: f" R7 k                        part := @.transpOrder;
0 x0 z1 C7 R" E& c$ P& ]$ `" C                        part.move(@);-- load part$ n9 X" b4 s9 j9 ?3 a/ E: B! r* i
                        @.CurrIcon := "load";8 s0 }# c9 u" X8 b( }3 x: x: u
                        GlobalDistObj := part.globDestination;9 R. l* _" G, L' z2 X* u- n  j
                        assignLObj := rgmanager.rgAssignL;
1 A! ~8 _% W9 W& k$ X1 d6 e0 ^                        row := assignLObj.getRowNo(GlobalDistObj);+ \* ?# p! ?1 k- ^6 p
                        if Row = -1 then -- since 70
1 S8 z: }* Z) Q% e                                if lan=1 then
9 ?, g! t: j' M/ s+ A                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
" r  B$ U$ F4 j7 v' I% ]- {                                                to_str("in der Andockstation: \"",?.~.name,"\""));. L# K7 q& k6 L0 W' X# D
                                else$ x: X5 V8 \/ s) L: Q; u6 H
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),) s, F1 P+ I' T. `7 }+ b# g3 i" n5 n
                                                to_str("in docking station: \"",?.~.name,"\""));                               
0 a, \5 g: ^5 \# a/ M                                end;- G1 ?# |# m/ N( Z- p2 }3 t
                        else
: t) r8 \( r8 }4 V! A; n8 U  [% y                                @.Destination := assignLObj[1,row];% E# J  K4 d2 ~
                        end;                        % h5 v( T' ^4 H, Z  L/ [
                        newDirection(@);
1 F" ^) F0 s) c% F% e; J+ M; P% d% w                        @.HasOrder := true;. O3 H& V  I' t0 ]
                end;
& v7 a1 |& |8 A  h3 C) Y        end;, I6 |3 M* U8 Z0 \
end;        -- of the method
7 d6 J0 }; }! |* w
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
8 I8 i: e4 V- o/ O
- m) T4 {; J( Z9 n9 [1 i  G# @. U2 Y! a这是AGV_putin中arrive的method。8 w' d; Z; f& W3 a! d2 k
4 Q( f0 V$ \/ _2 v! f
当到达物料速度越高时,这个报警更多,
+ M- i$ P7 q* Q. b& K% |1 i可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。; E/ i* e  a, ]5 n0 _
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
( _" h3 F6 C$ r% S# X
+ {+ ]. p- Y5 o# B, ]另外一个小建议,就是move,所有的move都可以这样& g7 c! `1 k3 [4 X% J- A0 |- [
if not move() then debug end
* F" F  k; W! m1 a/ i这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
- q; f  k) _  f3 Iplant simulation中的free libraries有AGV模板,5 b& ?# ^+ t& k! @
里面也有案例。! `1 ^" r# f3 C/ p
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。9 Z8 I: k9 l* B. L6 Z& I/ K4 F+ E+ Q
- |  U' t0 w# u
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 ' |: w2 \# U' Q# {+ Z- ]

0 U  [% m9 O( s2 S那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 * z' c8 ^# n. F2 N8 ]
这是AGV_putin中arrive的method。
- `1 z* {! z/ Z( z5 t0 i9 u: R! C1 ^" M$ c7 O- `
当到达物料速度越高时,这个报警更多,

& T0 {4 r- {7 K- N- J' n另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-1-13 11:21 , Processed in 0.015893 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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