设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5475|回复: 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 J( U$ ]+ B2 f/ _*/
, o$ ]! z/ l: H/ ris
: a8 a# M# u5 [        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
9 ?) m; ~- ]  ?4 e/ ^do7 n! b7 u; b3 ~7 V, J- Z5 X
        Lan := rootfolder.Internal.Tools.AOLlanguage;' a& z+ P7 i: |/ x8 {* |" E+ o+ j
        if current = @.Destination -- else return
* g! D) M+ W, P" E        then
4 z! x0 i6 I, g6 H& w" v) u) Q4 r1 }                @.Destination := void;
+ J1 v; }  M& z# `/ b3 ^                if @.occupied then
8 [! {$ s8 D+ ?( h$ Y5 G2 v' l2 {                        part := @.cont;2 P# Y5 b  }: R- G3 Y( c1 W
                        @.transpOrder := void;6 f/ l# b2 ~4 M) I9 u
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
2 R$ j# ?3 I7 [' b1 P, B                                @,root.eventcontroller.simTime);3 `3 ]; l( p- Z- J; {9 C, ~
                        @.HasOrder := false;$ h& U8 N8 x& G, S! P
                        @.DrivingHome := true;
$ C, B, q6 N! R  v/ }                        rgManager.tryToStartTransOrder;% O( a+ f' q7 J$ U' b4 [
                        if @.Destination = void
% \- K% V( s( w  a, n* \% l, [! j                        then -- no transport order for vehicle @8 \' W* c6 H1 [4 F& }- ~3 }
                                @.Destination :=
4 K" c9 F0 d( U                                rgManager.nearestFreeStation(@,track.~);
! _) y7 s: D9 u                                newDirection(@);   ! U3 O% s9 |* T9 G5 `
                                if @.Destination /= void then
0 A: L2 _' w+ F) V9 y7 ?                                        @.Destination.NumReservation :=
9 B( ^0 E  q  W1 g                                        @.Destination.NumReservation + 1;  {) F$ ]; M& P$ N) K
                                end;0 Q/ ?' Z! ?2 A( k
                                @.CurrIcon := "drivingHome";- @. U: T: q* [) Q
                                @.DrivingHome := true;
- S7 J0 M% ]  a1 Q) q) ]. l4 T; s$ E                        end;& M. }* i/ n/ F6 a* E* u3 X
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
$ j( N8 d7 J" C0 b! G9 [                        part := @.transpOrder;% X1 q- X+ |7 p! N, i3 O
                        part.move(@);-- load part! l. {+ e  y7 x9 m! ^
                        @.CurrIcon := "load";
9 u) S6 N* c3 Y8 {) }2 b9 w, x                        GlobalDistObj := part.globDestination;
$ s& i% t* f5 r" s) w                        assignLObj := rgmanager.rgAssignL;8 O  \$ w% Q% b) t% {3 M) c; d
                        row := assignLObj.getRowNo(GlobalDistObj);
9 Z- {8 u& F: X, h                        if Row = -1 then -- since 70
3 W7 T9 Y6 s0 n* E( T$ w" Z- N+ n* H                                if lan=1 then
/ r  D7 Q1 O. T/ H# ?                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
: q& e3 }( J, M+ u4 @6 O6 F3 p                                                to_str("in der Andockstation: \"",?.~.name,"\""));( N* g- m( P$ g9 a) m- r
                                else( R$ Q# m0 O  H5 j, X$ f
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),1 q8 u- Y% q  A6 w
                                                to_str("in docking station: \"",?.~.name,"\""));                               
# L5 z6 o! R* `5 t. Y# e1 y                                end;' Y8 S/ k5 t+ H3 m9 G% l
                        else
, ?6 y& A" q) F: L6 o8 ?" M" B                                @.Destination := assignLObj[1,row];4 l/ T$ j+ @2 x" u. s
                        end;                        " O- x8 J' c. B1 Y$ @( J
                        newDirection(@);/ v/ i5 b2 `6 G5 }8 V  ^
                        @.HasOrder := true;
2 B0 Q: e; ^6 n0 g" c; e                end;9 @& N0 r( j2 k+ g2 t1 ?2 w1 c! N
        end;
6 [( R* x7 I; a" {- T7 jend;        -- of the method2 C) z% ~/ j# D! y0 Q5 l' `! A
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 : C5 s! ?# c/ \
4 H2 O  X6 g2 D+ [. T2 ^
这是AGV_putin中arrive的method。
) Q# J  L0 \0 j/ x
1 l8 U6 B% U/ g当到达物料速度越高时,这个报警更多,
) R# T2 U$ }* @' C# J$ C可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
. u. o* |$ P5 Z  n程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?# D+ w  U: H0 R: |

& i4 J* b/ X; J- Q* G另外一个小建议,就是move,所有的move都可以这样8 h: |% F3 N! U* a; N/ R
if not move() then debug end& h: X# Q# e" H8 K: q9 L6 L0 @  a
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
1 g% E  t7 U( o0 G" nplant simulation中的free libraries有AGV模板,
" v# d: f$ s" f4 i# M里面也有案例。
* X( S8 F# `% B( b我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。5 K7 G% C8 x7 I6 c$ r0 ~" u% w
$ u0 D% l+ o$ Q1 I( M- @) i
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
+ j8 x/ n/ J: F, t! `1 v) {, M4 j  k5 n$ P4 @1 v! s3 t" A. G
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
1 E) Q$ S" a- h7 m5 j0 e2 P这是AGV_putin中arrive的method。
. H# s2 K6 V; V( q( B+ F% e9 R' m' D4 H2 s& s2 X
当到达物料速度越高时,这个报警更多,

& `& o3 J9 B" I+ @. [另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-11-26 03:03 , Processed in 0.020860 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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