设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7873|回复: 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') F- S8 \4 W, P. n; v" s' z3 `' }& ~
*/1 H4 k) ]0 H4 K6 ?/ g7 k) f2 L, S
is
. j/ }2 m8 S" y4 H' t: R        part, GlobalDistObj, assignLObj:object;row,Lan:integer;2 I) H, H* s, D% i
do$ r$ w7 r  W0 G6 G+ \# r! z
        Lan := rootfolder.Internal.Tools.AOLlanguage;
$ @+ D- g; r/ N7 D( N        if current = @.Destination -- else return9 \) u! I% m1 o) m9 r2 `
        then- @4 ?! j* O  F/ v
                @.Destination := void;0 c: @+ K# {; G4 Q/ E
                if @.occupied then
9 V4 T: T# e4 N3 ^/ e/ L% v                        part := @.cont;4 X5 ]; x7 ^, P$ w5 [
                        @.transpOrder := void;" o% l, ?# w, b+ m# F
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
( i( s2 N& m' C  J( ^* B" b" M                                @,root.eventcontroller.simTime);
! V" a* T% b4 E9 H9 C                        @.HasOrder := false;
: M+ g9 |4 I3 K; W$ d) }7 w                        @.DrivingHome := true;/ V' v# \) k5 C" b3 T) R
                        rgManager.tryToStartTransOrder;
+ c( u' ?, d5 `0 \8 {8 \; N                        if @.Destination = void
2 f6 |3 l0 e! {2 S' }& Y                        then -- no transport order for vehicle @
( s  Z  G& y. a5 b                                @.Destination :=
7 p, F' ^* b8 C                                rgManager.nearestFreeStation(@,track.~);
$ H5 O( c- [$ h* t  s' U1 T                                newDirection(@);   
% ?5 O7 H6 G9 S1 `1 w                                if @.Destination /= void then
" u/ _2 l: j6 E( X+ o                                        @.Destination.NumReservation :=
* O) a2 I. q4 w4 v                                        @.Destination.NumReservation + 1;/ u& o4 r! R) q" {
                                end;, E' s' [. E2 G. k
                                @.CurrIcon := "drivingHome";
9 l4 w: l$ s% V  ~! E( c                                @.DrivingHome := true;
( P6 ^- s9 t. \1 b% Y  ?                        end;
2 r% O  m/ u; P% S0 a                else -- the vehicle @ is empty, both vehicle and part are in the same dock station8 j/ s* C3 R2 b  P6 a, p# [7 D
                        part := @.transpOrder;
/ v2 }& h5 _+ D4 t9 y  D                        part.move(@);-- load part6 S9 n) ^, e7 w8 G. M$ F% K
                        @.CurrIcon := "load";
9 w+ z0 u7 V+ H* N                        GlobalDistObj := part.globDestination;" v& Q# e: z: o! ]
                        assignLObj := rgmanager.rgAssignL;
. i( E# q- l' w                        row := assignLObj.getRowNo(GlobalDistObj);3 @/ _/ N9 v) b8 g7 s
                        if Row = -1 then -- since 70
% ?( M2 V5 `* k: e                                if lan=1 then! e! p$ |7 l( K- e- h
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),) N8 ^  ]+ k: ~2 l4 s4 ^' h
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
9 ~6 U% V( M( i+ P! h" }& }; s# b                                else: R4 `( x7 N, r- {) k1 ]- {! o" W
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),1 C3 E% N) Q& S3 c8 A& G
                                                to_str("in docking station: \"",?.~.name,"\""));                               
4 ^6 z1 o* a5 U4 ^$ r                                end;5 C) X. o+ T" m- V5 n
                        else
( j+ O2 P) C& C                                @.Destination := assignLObj[1,row];
0 t$ T# U$ [" E. K' J                        end;                       
- I2 U/ t: W/ r7 F, ]; {                        newDirection(@);
9 q& e( X0 ]( \( l. T) a1 |0 {                        @.HasOrder := true;4 v* p: s3 s! Y+ A2 n
                end;1 z) ^( Y% m! B0 w  n. g) G
        end;! @& a  a& }* |4 Y
end;        -- of the method! }! n$ N5 r( ]! g" a# q) q1 t
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
# H2 x1 u- ~3 m9 Q. X9 \) {
7 Q& s/ V4 H3 G# i( p4 K这是AGV_putin中arrive的method。2 ]( ?6 J) @. f% f- w

- p* \7 |8 b" q9 h( e当到达物料速度越高时,这个报警更多,( g+ A* C" F1 N4 s8 h+ N& ^& b
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。( `7 l8 x! r$ o# n$ u1 {3 s
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?/ v4 I6 }: p  D

. L! ~: ?: S0 `8 m) e另外一个小建议,就是move,所有的move都可以这样
3 X9 f% I3 C& e" Qif not move() then debug end
, Z, u; J& d2 K- |3 B" ~% S( h这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
* |0 c% J+ n" V  `, Qplant simulation中的free libraries有AGV模板,( `( g1 L0 O  p# B1 z2 b5 S
里面也有案例。
3 \, R* M5 [  d我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。' @: \) n9 q$ Z( _9 O

: H! `1 c. s! G4 ?我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 % `8 J& n4 Q* m& w- |! X1 {

' k" o* q/ R, d/ T+ G) u- G那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 + R. K2 a* o9 A; t
这是AGV_putin中arrive的method。
' b1 Y$ m- b& C1 F" v$ y3 u8 F( y* Z& F# x- r7 ^8 E
当到达物料速度越高时,这个报警更多,

4 f) n( v6 }& r9 K1 L另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-2 20:24 , Processed in 0.023479 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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