设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9572|回复: 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'4 j7 O, [, j- M) \6 _. p$ ]; L
*/
. ^1 z3 a( t. \$ A) K8 N) Ais
$ i* p; i' w4 w9 t        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
$ g. K3 ~8 {7 e' [0 Ddo
" ~% |+ n# O$ ~% A5 L9 p% W        Lan := rootfolder.Internal.Tools.AOLlanguage;8 |1 a: Q- Z. f5 J& ?, d
        if current = @.Destination -- else return
% H. ^  D3 D* P+ p- p6 {        then
) _- t% k# |9 _                @.Destination := void;
4 D2 }3 a# O* e) c4 H, ^. `                if @.occupied then* E) m8 N2 U+ H# }9 z% U
                        part := @.cont;3 K" j! F& Y5 J6 c, V% W% f! `
                        @.transpOrder := void;
" Q) `8 A* h# @; V# o                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
! i2 {" @. d7 x                                @,root.eventcontroller.simTime);
" {$ w% U6 ^4 w9 j                        @.HasOrder := false;
2 ~2 m4 P4 E- u( v: |                        @.DrivingHome := true;
3 V( w( s/ H  N. e/ q4 W                        rgManager.tryToStartTransOrder;
' I+ @7 ^7 I5 O                        if @.Destination = void
4 U. j! O3 G" K( R. a+ ^2 t" m                        then -- no transport order for vehicle @
5 a" C2 O! v' ]) \: n9 w                                @.Destination :=, R6 k* R. M: x. e2 L1 s+ m8 T* {# K
                                rgManager.nearestFreeStation(@,track.~);
& Z8 {4 w2 |* y' Y  ]9 ?                                newDirection(@);   % _. j- b/ H) F6 u, x
                                if @.Destination /= void then: P. p# j' L$ A+ ]- E
                                        @.Destination.NumReservation :=
" D* S5 X- U* j2 K4 V! [                                        @.Destination.NumReservation + 1;$ w. f5 O6 o  ~" k1 K, d6 O
                                end;
  D- d+ X& e4 S                                @.CurrIcon := "drivingHome";0 l* Q8 ~7 p4 P5 U
                                @.DrivingHome := true;
8 |( L. {9 \4 R8 {" J2 E                        end;
7 Q' D3 u  \. y) y1 J                else -- the vehicle @ is empty, both vehicle and part are in the same dock station  F- g) c7 J  Z, j: D: M: t- Y
                        part := @.transpOrder;# ?* d  G, ?" n) n1 |
                        part.move(@);-- load part
( @) t: [" v0 j- D                        @.CurrIcon := "load";. }, u9 C( N$ L" G
                        GlobalDistObj := part.globDestination;8 L$ j) o) F. `; H5 V6 u+ p. U$ X- ?
                        assignLObj := rgmanager.rgAssignL;
- i. J' d2 _; J+ N: k, a                        row := assignLObj.getRowNo(GlobalDistObj);7 I# ^6 {/ `! E/ w' h" I, ~$ r" d
                        if Row = -1 then -- since 70; p' R1 {5 F" y# Y
                                if lan=1 then( [. ]9 j! i6 u1 g
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),6 l- z* {$ L/ m0 _$ c6 S# a
                                                to_str("in der Andockstation: \"",?.~.name,"\""));2 j$ r) q8 ^: j' s
                                else* g0 B: D# K0 }4 K  n: Z) P. f1 X
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),+ `0 `1 Z) u! Q! w( ~1 X
                                                to_str("in docking station: \"",?.~.name,"\""));                                $ C6 |# K9 U' T/ J% O# S1 y
                                end;( c6 h# x/ w; J' d0 }& s0 `+ p
                        else
! r% e' B0 C6 M* |# H& u7 n5 j                                @.Destination := assignLObj[1,row];# R' |9 A' Q' G* t1 g
                        end;                        * ]3 P! {" q  ]* n
                        newDirection(@);
& Y  i2 ]7 F$ T% X' c6 K                        @.HasOrder := true;
0 E- m6 m1 v' p' `                end;( ^8 N0 X# J) K* N4 ?
        end;
7 B+ L2 a+ _- a% G+ oend;        -- of the method2 P4 x/ w6 y$ l' V! ^  i
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 ( ^% L' O$ x, `7 a2 c& R0 `. O
* S! g( m* k9 j" H- c& e
这是AGV_putin中arrive的method。- y* E- B9 R; b( E& {9 y

' A7 r+ ^" b2 d当到达物料速度越高时,这个报警更多,/ C: g, N8 l7 |6 |; R
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。& ]2 b" q# c+ A0 u
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
& ^8 G# H  d( Q* D' s
' M% m6 J6 z0 v: _7 N7 q' @9 K另外一个小建议,就是move,所有的move都可以这样
( c7 d2 L$ ^; T* @. H/ n8 f( Dif not move() then debug end
( Y4 Y7 y+ v/ F) u! l这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。5 c0 N- |; l' F( T+ ]
plant simulation中的free libraries有AGV模板,1 y  d1 t! ?- y7 q( T1 x2 w$ w/ \
里面也有案例。4 e8 y' a# l8 s* z& k
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
( ?% b/ J3 k8 \3 V6 q$ O* r% r/ F# Z
- R2 {' t" X' J我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
+ @& l2 c+ N" q# L! D  d' T; J' [1 y7 y' C2 z  Y* j# ^1 S
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 ( J/ W/ w  }+ a  O6 j* p' D
这是AGV_putin中arrive的method。
% ?5 U$ l/ b* N& p
) n1 t* y  y# B$ q$ L当到达物料速度越高时,这个报警更多,
$ U+ _& c. e& X* w- w/ M* Y
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-9 01:56 , Processed in 0.603573 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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