设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6266|回复: 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'
! c7 u4 ~% I9 @7 b*/: b  G1 n( s2 g6 b% t) o
is
  B( r- f/ L; L8 ~) Y' d0 C        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
- `7 ~, r9 M3 u' ~do) c; }. A! E! M; M
        Lan := rootfolder.Internal.Tools.AOLlanguage;6 }, ]. Z) G1 I7 U( v2 r% v
        if current = @.Destination -- else return
( |- B" v6 D; V        then3 i  r" ?: |+ p1 Y
                @.Destination := void;
9 [! S, |  m- t8 u- T8 F                if @.occupied then/ g- n) f3 |' f& @8 |$ d6 s
                        part := @.cont;" {. }( G& {4 q) @7 a5 y% M- d
                        @.transpOrder := void;4 i9 F0 ^/ _0 i+ i+ k3 f% t, g
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
7 r: t3 k* Z* q. y  x3 |                                @,root.eventcontroller.simTime);  Y7 m8 n) ~! n$ Z" @. [1 F
                        @.HasOrder := false;* b3 z: e5 w9 `/ G
                        @.DrivingHome := true;+ k: j& `9 N, a1 G) b
                        rgManager.tryToStartTransOrder;
- s' h" ]" J( S/ t                        if @.Destination = void# a! \. c8 p$ J$ w/ D( r
                        then -- no transport order for vehicle @( Y) U9 {$ n% `% ~6 N4 o+ ^. _- G
                                @.Destination :=
9 J8 I4 L" J, y                                rgManager.nearestFreeStation(@,track.~);
1 @. X7 m; K: k! z2 A- r                                newDirection(@);   
1 `& c  C- [* l7 n+ R                                if @.Destination /= void then
! |5 j% I) `! n9 a5 E& J8 a) P                                        @.Destination.NumReservation :=
' J! i+ S9 r5 U2 j                                        @.Destination.NumReservation + 1;% Y+ v  ^* |) G) t
                                end;
2 M. B: R! i/ I. L% |5 n6 t                                @.CurrIcon := "drivingHome";) a' z; s- E' a! o6 q
                                @.DrivingHome := true;
3 Z8 J: j8 h+ K0 C9 G- x( r; B6 a                        end;
9 R: o  H" H' ?& M' b" I6 E! ?                else -- the vehicle @ is empty, both vehicle and part are in the same dock station) S9 I" L( J5 d0 n) F1 h# R" `
                        part := @.transpOrder;
7 E( n2 z% n, C) d, [7 C1 z& o                        part.move(@);-- load part
5 Z) h0 O( z* [                        @.CurrIcon := "load";! f- q: ^7 f1 @, ~
                        GlobalDistObj := part.globDestination;9 P- N- o1 {) j" K* ?7 ~
                        assignLObj := rgmanager.rgAssignL;8 {- a2 C8 B6 ?
                        row := assignLObj.getRowNo(GlobalDistObj);
+ \7 u# Y6 H+ h0 Y; m2 X& S# G                        if Row = -1 then -- since 70
; w9 v2 {* \" r5 O8 g                                if lan=1 then8 {" l( Q# h( [' f( {, B
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
( i) Q% S" V3 Y                                                to_str("in der Andockstation: \"",?.~.name,"\""));
2 |  Z2 Q8 ?( y" q                                else) y' j0 K: e- T$ f5 Z
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
4 n; y: j0 t/ x' M2 d4 u, t  T                                                to_str("in docking station: \"",?.~.name,"\""));                               
. L3 |& v& S, |                                end;
9 |, U) ]6 q5 r: e7 b2 L3 c5 d" F$ D                        else( O, m7 ^' }6 I7 C
                                @.Destination := assignLObj[1,row];1 B8 C8 @  F/ \5 X/ l$ B2 Q
                        end;                       
0 m: \/ G, r& t                        newDirection(@);
+ x' w( ]' Z; a! D$ j; v' Z& z                        @.HasOrder := true;
/ Q0 x' k  Y: J2 ^                end;( F$ @+ g/ I9 {6 v
        end;  \% J" q  I& n( p# j
end;        -- of the method) J3 A: V% |1 z. N' g/ a/ O
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
. k: Q/ Y- E' }1 _8 {7 L6 W
# Y2 n* u" D7 q0 s) a! r. J这是AGV_putin中arrive的method。
' ?; h- b4 Z' i* x" D1 m1 ]# L1 ^( n: l. S1 S
当到达物料速度越高时,这个报警更多,6 E7 B( x5 K. ^( m5 G0 Y+ e$ V7 c
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
: l( e% R; p5 }" F+ k% I; M程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
% F5 L9 ]' z' f' g( ~6 {4 x$ F4 v- _
7 n6 G# \' F) y* C" e/ V另外一个小建议,就是move,所有的move都可以这样
' W0 s6 q% \. ]( |8 D* rif not move() then debug end7 R. G! e4 S+ @: |
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
  j; w% B' m6 o& |2 ^* u0 ?plant simulation中的free libraries有AGV模板,( I  x6 D( ~5 G4 _1 y% F6 K
里面也有案例。) A1 ?+ J, {: n/ j1 S) h
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
+ l) _5 p& e$ ]
$ u' G+ a% ~: Q8 b% H' }/ m我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 8 \: X8 o- Y$ O( H' D% I2 l) G

2 r) O% q6 s! d9 l2 B: f那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 1 t, E( O' p, S5 o7 u, Q
这是AGV_putin中arrive的method。6 p: W. L# J) T6 s5 H
" X4 J* `* D0 E9 a5 X
当到达物料速度越高时,这个报警更多,

# a; v" d  E  V9 H( P' x6 E另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-1-27 22:41 , Processed in 0.020702 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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