设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9474|回复: 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'
, l" q* @0 |1 r# j+ d*/
' A  _8 j( L- a$ Q; w, |8 Vis
7 b5 N- [1 P5 q- j        part, GlobalDistObj, assignLObj:object;row,Lan:integer;4 G! T( u7 E+ K
do. V! i; W9 g2 A
        Lan := rootfolder.Internal.Tools.AOLlanguage;5 N' o) D9 W5 L
        if current = @.Destination -- else return
; L- T" F1 m" O" f        then  ]" X; M# y/ o! N" F4 q0 G4 g/ y
                @.Destination := void;+ \* }* \) W$ h( }$ X9 G, m( v( E
                if @.occupied then5 e/ z4 m) r( T; Y* G+ b
                        part := @.cont;
0 x9 w4 F: S' ~' E5 v                        @.transpOrder := void;7 w- m  |8 I! C/ I
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,3 Z) Z* ?, u! d8 j7 }
                                @,root.eventcontroller.simTime);3 _) B# Q1 l6 _7 A# Z: \7 Q
                        @.HasOrder := false;8 T/ A. _) ?0 ~8 b; C% }8 e1 S, w
                        @.DrivingHome := true;
3 m2 [' f9 L. a5 j  H                        rgManager.tryToStartTransOrder;
$ N, o" Y9 B1 I, [# i) p                        if @.Destination = void" @7 y" c6 `/ N! _/ w( U# n* j
                        then -- no transport order for vehicle @
" y2 H% i% w* d( c4 w" }* o$ A                                @.Destination :=
3 L8 X1 x  F' X& `                                rgManager.nearestFreeStation(@,track.~);4 V2 q% ?: y- g, i" T) |6 W
                                newDirection(@);   9 f2 `9 @, a) V( m$ Q5 ]
                                if @.Destination /= void then/ [0 S3 s' U+ t/ p
                                        @.Destination.NumReservation :=
. x# O. r5 n1 X% Y9 D                                        @.Destination.NumReservation + 1;
1 F9 F- N  A" S* p4 Y7 u7 P                                end;( D  r  P6 N0 R% c$ \
                                @.CurrIcon := "drivingHome";6 ~" j) g, u$ o; M4 P
                                @.DrivingHome := true;" v: R  e- l3 y% a
                        end;9 A3 M/ m$ x/ u% [6 \! U/ }2 H
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station. m) f# b% A# |" b9 m
                        part := @.transpOrder;
1 ~4 k) @# u4 n. A: h# a                        part.move(@);-- load part
0 }3 }7 E2 l& ^& L  ~                        @.CurrIcon := "load";
' P0 P" S% g8 a: ?( a" \2 ^* Y- O                        GlobalDistObj := part.globDestination;- W+ e* F) s" |- x% a" T
                        assignLObj := rgmanager.rgAssignL;
3 u9 J! O2 i9 o' [2 j3 K+ R/ H                        row := assignLObj.getRowNo(GlobalDistObj);
8 r$ A( B, ~9 N' w9 n                        if Row = -1 then -- since 70# [- s7 {; A: Y9 \  ]+ a/ `
                                if lan=1 then
' M% S3 E( q/ q! V2 X                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
* \. P9 V9 }/ Y2 a# {; z% a                                                to_str("in der Andockstation: \"",?.~.name,"\""));
2 m' H1 S% W' D. s- H                                else
6 l. p3 N. z: ~                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
  w: {+ \3 x# Y+ ~  E                                                to_str("in docking station: \"",?.~.name,"\""));                               
( g! _/ y! @: J* L                                end;: k7 l+ ^4 k6 F, R
                        else
( o% s6 ^1 z" o. Y% R, Q                                @.Destination := assignLObj[1,row];( f. b% P" n# }9 H" X" C
                        end;                       
8 F4 X" F+ E& y                        newDirection(@);5 |9 a6 \4 X( P4 v/ \6 G) u1 ]5 M
                        @.HasOrder := true;
+ w0 x/ X2 {7 ?. A7 b7 k% C% x                end;
5 i! u& Z! _7 [" ^# o4 r, d        end;
7 G  f* Z7 |4 M1 R, send;        -- of the method
+ X2 U1 K# r1 L
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 2 W' @( }9 B) t- q
/ ~( j( P. C" a0 K4 c" l
这是AGV_putin中arrive的method。, F$ F* s& j. o4 ?3 S- C7 H% O
) c, \1 R, W5 t9 `. t; R! d% K
当到达物料速度越高时,这个报警更多,
5 P) [/ z- Z5 A3 }可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。6 M" K+ a" c. V$ @. F& |
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?' y6 q6 x8 v3 I' S& S( q* j2 P
: @* p8 M. k2 K8 |3 f+ w" t
另外一个小建议,就是move,所有的move都可以这样
# R. O; |0 |2 qif not move() then debug end1 j" {4 {; r! q4 n, t
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
4 q- x- J) c" E6 J' e/ p! W# uplant simulation中的free libraries有AGV模板,
; r8 I, Y3 M1 {1 U8 J3 O4 o里面也有案例。4 z! o6 j' b1 l  k( |% F
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。# y& b! K9 I% N) W; e
* D) L) ^0 g  u$ d; U$ g
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
' p6 ^( K' C. b. H& I+ u% P! d( _
" e2 {& @) ~4 I9 A) H/ O6 c8 F那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 : k  m, _* o: p) @% a0 t) z
这是AGV_putin中arrive的method。9 I& \% l( ^" I! g; P) E" Y* e
  Y; P. F# Z( \, a. X
当到达物料速度越高时,这个报警更多,
4 U- g! s# p0 x7 r( p) P) K
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-3 02:13 , Processed in 0.019400 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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