设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9047|回复: 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 w8 Q- P. n( _2 e9 [*/
: V+ v3 F" l; @! H) Yis
% Q9 U  O" d! d; r- c4 W        part, GlobalDistObj, assignLObj:object;row,Lan:integer;5 H8 u& v! U. x+ D
do, X4 h' g1 c* J5 q  v
        Lan := rootfolder.Internal.Tools.AOLlanguage;0 e& v6 I! \" X; Y2 w& k
        if current = @.Destination -- else return# O. y* C& T7 o
        then
; U$ \: o8 y1 I1 o( c! ~                @.Destination := void;
" r$ {8 u* b/ X! {! Y" W                if @.occupied then1 e/ H6 i1 s* T7 D
                        part := @.cont;; `# h' X* s! H7 p
                        @.transpOrder := void;
( R" A4 A' E, W) R5 r2 C9 U                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
- D! c8 O$ M9 W! C' }                                @,root.eventcontroller.simTime);3 K4 a) _0 {: @" q% q' F
                        @.HasOrder := false;
' w, C+ `7 y- J% K                        @.DrivingHome := true;
" }/ {/ g+ C. q0 Y                        rgManager.tryToStartTransOrder;
9 @6 z! }, M# C! U; T                        if @.Destination = void/ F) r+ H$ k4 w* g, @
                        then -- no transport order for vehicle @1 E5 ]- t$ k7 ^7 B) W! P
                                @.Destination :=
7 Q7 V8 D3 V: y! C3 y( r                                rgManager.nearestFreeStation(@,track.~);
" z" ?, X0 b, r: ~/ _! [1 a                                newDirection(@);   6 O. }! Q: m1 A" [& n7 [4 u* C
                                if @.Destination /= void then3 u$ _. W% I( _: i6 w
                                        @.Destination.NumReservation :=1 |. Q2 ^7 L+ B3 S8 K2 e2 o, S" w
                                        @.Destination.NumReservation + 1;+ }  F- D2 m5 E" z, W" m
                                end;
+ u' g3 Z& P$ e5 r5 ]0 M                                @.CurrIcon := "drivingHome";; G" {6 L3 z% g0 M3 K- P( [1 Y
                                @.DrivingHome := true;
% I: H; f) R+ y                        end;( e3 m2 u/ p% O& \5 u% R
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station0 E  M% f5 S& _  h
                        part := @.transpOrder;9 O3 \5 I& C9 o/ h( w- p4 r1 a% A8 i
                        part.move(@);-- load part) w8 Z( d. M: M' ?5 J
                        @.CurrIcon := "load";
6 ~/ X3 M: L1 ]6 ?                        GlobalDistObj := part.globDestination;, s) g" F; w! D' w& S+ ?5 r
                        assignLObj := rgmanager.rgAssignL;; ?! b! z- V8 ~; k7 T' K5 E$ K
                        row := assignLObj.getRowNo(GlobalDistObj);- J! m, |. O2 W8 ~1 ^
                        if Row = -1 then -- since 70" v" g; C# T- a! f7 }" ~+ N
                                if lan=1 then
. A/ s( e( W+ i                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),& j$ |2 `4 R: M* Z5 m5 R
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
$ x$ C& |* c3 n  [" D9 y9 h                                else+ a6 o8 Q2 M( l6 x4 \
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
  y- P8 x, D% z9 z& h4 w                                                to_str("in docking station: \"",?.~.name,"\""));                                5 p$ [- q; L+ k% _% v$ w1 h. J
                                end;
1 `( a3 c  j) G- ^0 A                        else
( ^9 C( u8 B' \& |5 f9 T                                @.Destination := assignLObj[1,row];: ]8 Q' h9 b9 _. f7 s
                        end;                       
, |4 t/ g* x8 s                        newDirection(@);- y$ D; m' {$ H9 r$ X3 Z
                        @.HasOrder := true;
5 h: X/ |, ?4 Y) v0 B7 m  a2 M                end;  X( Z. _7 e; n, k! A3 J
        end;
5 x: N* H9 s: f. g; u& r5 Bend;        -- of the method( j- v' ~2 _- a
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
3 Q# X5 R. f& W. c$ \
# _" k: y1 _4 e+ E; i; H5 h; o这是AGV_putin中arrive的method。1 O0 C6 {. t8 e4 y9 C( a6 |9 o5 O

* p5 g$ k1 v. H' h0 h) @当到达物料速度越高时,这个报警更多,
0 D$ N0 w# ~( `- z可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。9 T, P9 i5 Y) I( v  x+ E& H4 N
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
5 w# `7 x. |( Z/ ]6 p* U. P3 A2 K, `0 [! L9 Z( N
另外一个小建议,就是move,所有的move都可以这样1 @" ]  L* s8 D
if not move() then debug end; z) ]( o8 o2 l  V- ^# l
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
! Z/ P9 W& O" z7 K; h' o- rplant simulation中的free libraries有AGV模板,$ n, O) `3 G  U0 {- L
里面也有案例。; n$ y8 @6 [/ X3 [
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。3 n; R/ b" G7 {1 c! p. [
! i3 p* |. m$ w: T: k! S: I3 x
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 & D+ U& t0 c* t2 }

& u( g' z2 c. L那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 ! |. ]; K  B4 `4 D0 B' x
这是AGV_putin中arrive的method。
' k- c) M+ b! N  h/ w5 y) M
% B5 f; z- Z0 \- ~* x7 U4 [当到达物料速度越高时,这个报警更多,

5 z, \4 k& N4 s- J; @另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-7-10 16:14 , Processed in 0.018100 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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