设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7651|回复: 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'
: J* U. K, ]8 L8 N*/
3 ^% k5 E5 [5 o7 U& R! @8 His. A- g! v. P- {+ d) E* Q
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;% B" s" o; {' r- \4 j$ d: A
do
0 g+ u' ?3 n. w- y( U        Lan := rootfolder.Internal.Tools.AOLlanguage;) u; R3 W: s! q$ [) v( G' _) i
        if current = @.Destination -- else return
2 ~" m8 ^! G7 ]4 A; U  _; O        then& K1 K. C! ~6 W0 H. b4 P
                @.Destination := void;8 X* G1 h$ Y6 s  A( H
                if @.occupied then
% ^5 R" j3 [+ v; R4 d                        part := @.cont;& D& C, g6 ^. s( c) b
                        @.transpOrder := void;+ y; g$ n' W/ v: I
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
+ _7 R, T# c' K                                @,root.eventcontroller.simTime);8 m* D0 q6 ~% V6 k! o6 Y
                        @.HasOrder := false;# f+ o! c1 \" t+ c* B9 {1 k
                        @.DrivingHome := true;
! Y1 v# j. d0 h5 V$ ]$ M% C                        rgManager.tryToStartTransOrder;
5 u7 S1 f) a' v( W/ {5 \                        if @.Destination = void" J4 c9 S% s3 u7 [  F/ H
                        then -- no transport order for vehicle @
+ Q8 j. M# r3 T                                @.Destination :=
. g, S& _6 N4 r                                rgManager.nearestFreeStation(@,track.~);
6 |+ j/ A  m: y7 |  x                                newDirection(@);   * N( l1 R8 }& o* W# F
                                if @.Destination /= void then$ n. h+ g$ u, V4 {) N( B) W
                                        @.Destination.NumReservation :=# T% Z' t! G- a, G1 E4 j* s
                                        @.Destination.NumReservation + 1;8 j! v* E2 Q. R
                                end;( O( ~( J/ @) Q- W1 V( e! h: X$ O
                                @.CurrIcon := "drivingHome";: q% y" w5 M! ^( U- Q
                                @.DrivingHome := true;
& j+ ]& D5 ?, F# `                        end;
2 x4 m& k$ [8 e4 n* W8 l                else -- the vehicle @ is empty, both vehicle and part are in the same dock station9 Z8 L" `% f) J) f9 h
                        part := @.transpOrder;
- I! ^- ]7 X" g" H5 k                        part.move(@);-- load part7 A  z5 Y: }& d% R1 k' `. n
                        @.CurrIcon := "load";# f0 l# G- }! @
                        GlobalDistObj := part.globDestination;# L( _+ k' M4 U1 D; G) e
                        assignLObj := rgmanager.rgAssignL;0 S! X) {8 f4 l6 j( f; l: @
                        row := assignLObj.getRowNo(GlobalDistObj);
" n) H; I7 K  F7 F* }9 \                        if Row = -1 then -- since 70
6 [. Z' ~& E7 c. |. Q& p                                if lan=1 then' t6 V; i. d# e, c4 K# A
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),- }8 ^, h  ^* k* [# V
                                                to_str("in der Andockstation: \"",?.~.name,"\""));* ^# D* ?) n" C) Q
                                else5 y& }; b! k. {& q. G6 B1 O$ ?) `6 R& d
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),% \- r! Q  @- e* @/ A& N6 q
                                                to_str("in docking station: \"",?.~.name,"\""));                               
; x* {3 Q, w/ G# Q: e* \3 n                                end;
4 s: O$ Z/ @# d, @5 T6 D                        else9 e7 |3 E, ]+ G2 M
                                @.Destination := assignLObj[1,row];
# x+ ], \4 A3 \                        end;                        $ C  l* d" j/ O! X- `
                        newDirection(@);
; z7 B" G  _/ `! G9 y                        @.HasOrder := true;
4 Z9 \8 ^( P, t                end;" o6 E% @1 w7 O4 A6 x5 n& E
        end;
6 l" K, H3 t0 r* o, C$ E5 lend;        -- of the method
* t1 E9 U  m6 U$ P5 p# Z8 p6 c( X
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 / F! B( M2 h$ Z" ~9 t* r2 N
% y2 S- J% h# y/ ^: k
这是AGV_putin中arrive的method。
/ M# y! T/ d3 Y9 d" U" A) y  F; k( y4 A2 F
当到达物料速度越高时,这个报警更多,, k( H& v& a9 {# z" a9 ^; t
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
/ `  c+ `4 Q0 x. z2 U程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
7 I) l- i; ^. Y2 l
+ g' C1 c( U( j* i另外一个小建议,就是move,所有的move都可以这样
8 |  C: \5 U5 j9 W) a+ Nif not move() then debug end" B) z) C; Q* {3 s
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。) R2 b9 y: Q& |
plant simulation中的free libraries有AGV模板,
4 ]! D% ?! [9 G2 V里面也有案例。8 N4 D6 a. z2 B; D. b5 ^- S( N
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。2 m9 a8 i  h+ s7 _  B
5 \* O( G) s! k* e# a3 T$ M  C
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
: \2 k, m5 o$ s! K& I& U
! _7 c* z$ c1 e# ^3 d! w$ A那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
% e* P2 v% _4 E4 {3 |! T) [: G6 ~这是AGV_putin中arrive的method。6 K* a! \8 e" H; H. S9 u6 R
& b) h+ b8 g. u; p7 }( N
当到达物料速度越高时,这个报警更多,
( [5 w! Y, g5 o$ B
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-22 12:29 , Processed in 0.018357 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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