设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9682|回复: 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'& q5 d! W! q7 J# \, I
*/
( k! L6 W- g) \/ J) w6 g1 Zis2 {; k9 Z1 n  |6 y
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
; v$ I$ ?! C% p- @do$ x- }! s! h8 @* n6 I
        Lan := rootfolder.Internal.Tools.AOLlanguage;
6 n" c. P& ^/ Q: l        if current = @.Destination -- else return
+ s; h. {& C. J5 |% Z# A9 ]* T4 t        then
9 V  l& o% f8 O+ {                @.Destination := void;7 t. M3 f. \3 c/ j
                if @.occupied then
2 [* s; y8 M2 w                        part := @.cont;9 T1 F9 E* V7 p
                        @.transpOrder := void;
) \5 M# S# ]; s$ S8 X- ~                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,- [) y, p" v  J& D; ]
                                @,root.eventcontroller.simTime);: T: P3 Z( M& T( _! T
                        @.HasOrder := false;
4 @9 K) e% A6 I" _% u& g                        @.DrivingHome := true;  I$ \7 @5 j- b2 ^' Z6 T' o4 P
                        rgManager.tryToStartTransOrder;( Z4 J: X! C  E  c* i6 M
                        if @.Destination = void
3 {4 B. [* G. d/ d2 \                        then -- no transport order for vehicle @6 M* p9 _* h' {! B
                                @.Destination :=) C1 M! v2 [/ M+ {/ T4 B
                                rgManager.nearestFreeStation(@,track.~);
( s( |3 C* i1 [" S3 _                                newDirection(@);   ; P* m: L$ b0 T, J! ?1 A. Y
                                if @.Destination /= void then" F9 v& g8 s/ H/ U4 W* j+ p
                                        @.Destination.NumReservation :=
( R4 |# {. n: {: x, }4 ?" O                                        @.Destination.NumReservation + 1;
2 B. ~7 i' l: F$ h2 Q                                end;. V+ Z* P8 z8 ?
                                @.CurrIcon := "drivingHome";
8 v" P+ |. d3 `5 d                                @.DrivingHome := true;& q7 Z% U* Q+ r3 b
                        end;7 A2 M( }4 {( Q$ O
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
% l% a( h8 w+ `) v                        part := @.transpOrder;$ B6 U* C3 M' @" k, H# _9 G: S3 ?5 O
                        part.move(@);-- load part
' x+ M9 R( }0 y( e6 z  l4 I  F                        @.CurrIcon := "load";( k$ w6 K5 [! q5 j: ^* w
                        GlobalDistObj := part.globDestination;
# Z1 B- y1 e! P# X3 j% R/ y$ L                        assignLObj := rgmanager.rgAssignL;1 [$ H& P' q3 z, {/ y' b
                        row := assignLObj.getRowNo(GlobalDistObj);4 J$ Z7 `# ]9 ~( y
                        if Row = -1 then -- since 70
% a$ Y" b3 F/ V; H                                if lan=1 then2 S% \# \0 j' ~" w( {2 E  B3 p- ~7 e
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
5 Q- P- |' }# J: ]                                                to_str("in der Andockstation: \"",?.~.name,"\""));
4 r4 y' ^  U) q3 P  }                                else
! o) o& ~& N. M& {" @3 A                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
6 t- b* h/ q, L. R                                                to_str("in docking station: \"",?.~.name,"\""));                               
& {9 A8 ?% G/ `                                end;
$ f0 h1 k- G0 \& u7 @3 u                        else
  {9 z# ~0 G3 r. O                                @.Destination := assignLObj[1,row];
, N1 f0 q1 G( {! g0 ?  g                        end;                        , G" a, ^8 o1 ]" w) g. W8 U- ~+ R
                        newDirection(@);, f# y* v  |* h: ~! F# ^
                        @.HasOrder := true;
$ J& [6 N; U3 Y) G                end;$ A4 n9 D! q/ Y) }
        end;  E6 r+ T1 e  R( ^/ i$ I
end;        -- of the method- c+ t7 a  K  |4 k4 |
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
  d2 Y" z% E9 ~0 y% b; p6 v
' C; E- x5 p: z  m这是AGV_putin中arrive的method。
( V- P- O- g3 h2 K  T0 G* `6 B, m& l6 g2 D
当到达物料速度越高时,这个报警更多,7 r; k' i6 T# e( I
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
+ m, i# t9 {* [- ]& m! g7 t) o3 ^$ k程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
/ v2 r1 m5 b7 |$ m( G
# `. ]6 y" K4 F7 w另外一个小建议,就是move,所有的move都可以这样
4 S0 S& J; `1 B) V/ L5 Tif not move() then debug end
$ B# m" a- p+ ]- Y这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
& s$ S% R1 K# Q# |4 {' Splant simulation中的free libraries有AGV模板,
) T. G5 c# @/ @里面也有案例。
, V" x+ V; [9 Q3 K我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
. l+ C7 Z  z- {3 X6 I4 g5 O& S- j* h3 o8 h4 k2 P0 C  i
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 & |/ E, Y$ H) [
3 h$ j& c% v1 q% u# Y- r& N( x
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
) y3 I, X# @6 W$ g0 _, m这是AGV_putin中arrive的method。
7 H6 M+ d- S/ C7 B# Z; a( ], H* N, K0 L! h* [+ ~! ]8 g1 Z! G
当到达物料速度越高时,这个报警更多,

, e+ j" t; p$ j: |& @) y另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-17 00:02 , Processed in 0.017650 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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