设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8735|回复: 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') {) z& D% e: [* {/ f& e; ?5 g
*/
. M. \  \) }! N& j/ Bis
; Z9 x& ]) X, Z; n  R& [        part, GlobalDistObj, assignLObj:object;row,Lan:integer;3 p2 f9 [3 q" M6 m$ _) T
do
+ S' G5 T* U) u; C        Lan := rootfolder.Internal.Tools.AOLlanguage;2 f$ {: B' g0 Z1 [1 M. S& A
        if current = @.Destination -- else return
- B, o; t4 O; n' d6 v+ M        then0 w8 k- _; W" g+ c# x$ j7 q- r! B
                @.Destination := void;
; [6 V) I$ X- ]& H! _0 |                if @.occupied then8 I$ Y6 I) L" n' Y+ a* K
                        part := @.cont;
: `4 j/ Q+ ^% h% J0 q                        @.transpOrder := void;  U. G3 c( l1 a, i
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
% H# C6 V" n; q5 i                                @,root.eventcontroller.simTime);
) K3 s7 s' [# S  C3 u/ F3 l: l                        @.HasOrder := false;
9 p" K; \$ `8 ]. t' d7 O                        @.DrivingHome := true;3 l/ w# e& i' `1 _, m
                        rgManager.tryToStartTransOrder;( ~$ h/ y* m) O; a
                        if @.Destination = void% I9 L5 M. i. U  x
                        then -- no transport order for vehicle @- g6 A6 A& r+ q8 O
                                @.Destination :=4 \0 J& W& {8 l9 A3 m) d% D
                                rgManager.nearestFreeStation(@,track.~);
8 X# z  g8 V9 e                                newDirection(@);   2 q* ~9 j0 _, B4 U
                                if @.Destination /= void then
  s/ n5 j( j! s- V* d+ e4 _                                        @.Destination.NumReservation :=$ Q3 ?( B* v8 A! e6 T3 j! e
                                        @.Destination.NumReservation + 1;
$ c! A4 j6 b% ~9 D$ t9 y4 j; {                                end;2 n& T. r+ T* c" t' X' N/ R
                                @.CurrIcon := "drivingHome";
& B$ q3 Z6 ]# v8 ]+ D8 k6 q                                @.DrivingHome := true;
& j( W! @# @2 u  R6 m5 {                        end;
9 x* G3 d* Y. Y                else -- the vehicle @ is empty, both vehicle and part are in the same dock station- I+ S+ ]1 B: W5 v1 Y/ n
                        part := @.transpOrder;! y' E5 a$ V# q* o) W4 b
                        part.move(@);-- load part% R8 B5 o8 @" N! a+ p4 @0 H( X
                        @.CurrIcon := "load";1 \* e) x, w+ T1 L# g' c4 w
                        GlobalDistObj := part.globDestination;
. v6 a9 _9 d' F) `! M5 ~7 R                        assignLObj := rgmanager.rgAssignL;
) |: c, [5 ?: m, U* H1 i5 G( T                        row := assignLObj.getRowNo(GlobalDistObj);
1 k8 e$ J* Y1 y' G) D# G) B9 Y                        if Row = -1 then -- since 702 k, F: R$ \4 ^  b6 w& S
                                if lan=1 then
8 }9 Z8 K- |1 t! _* Q: i; j                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),3 ^* L/ Y4 G* b" O
                                                to_str("in der Andockstation: \"",?.~.name,"\""));$ E. C2 e5 K6 @& i  K8 g7 T8 V
                                else  E# v% i8 g- z2 A
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),8 \4 G4 S# a, G9 F8 x5 E! y0 f
                                                to_str("in docking station: \"",?.~.name,"\""));                                6 D! b% ^: X5 B9 [( F
                                end;$ A+ d) {4 O1 O' B/ r$ w6 Y
                        else
  ^8 B/ j9 A, h+ w! Q- @                                @.Destination := assignLObj[1,row];1 F' b2 e8 f* d7 g# `0 u3 d. T
                        end;                       
/ r/ `& L1 e  M- e6 [                        newDirection(@);
' ~  P. s0 X, D) c! J' L! s- g                        @.HasOrder := true;! Y: p! c* \! a
                end;1 m" w& ]% M4 c/ Z( t% ~! n) }+ ]
        end;
' T6 ^1 g4 k) jend;        -- of the method
" @' u4 x0 w! J1 u* L& l
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 , K7 X( V6 b7 _4 w& U+ y* r
  m  r' \% R- M1 D# `9 @
这是AGV_putin中arrive的method。
5 ]) K% ?  Y" k8 [
' T5 Y  z6 U2 x2 [! K当到达物料速度越高时,这个报警更多,1 Y$ ^0 ?3 w! i& P
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
! r) c- E  _$ U5 P程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?" N3 z$ n3 V. x

# B7 ^  n4 a$ g2 v另外一个小建议,就是move,所有的move都可以这样' }* z9 z! I/ F* Q' d
if not move() then debug end7 Z, a- l8 \, ~
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
5 E4 z  W$ l1 ^7 N, Xplant simulation中的free libraries有AGV模板,
: `- m6 y4 p) \" l/ J' ~- x9 k% m2 S: M里面也有案例。
9 O& X+ i( }2 k/ \我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。$ x% k) f' b4 K/ u9 A

8 d& ]/ C  _9 _; n; B/ g; c$ \我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
8 B% q+ C5 h* R( J( P9 Q0 t8 ~$ v" U
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08   }) U8 M5 i9 D5 g2 Q6 E, x7 @
这是AGV_putin中arrive的method。0 v- K/ G* E+ ?% }3 ^& J; F. ?
3 \+ o! C& Z) A- V8 K* W9 m
当到达物料速度越高时,这个报警更多,

* }& p6 D4 R3 V, [) Y8 ~另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-23 09:31 , Processed in 0.019781 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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