设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9898|回复: 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'
# Z, h) h0 y7 }! V*/4 C, j# [# Q# S2 K# l) Z* ?
is% k4 X6 ~4 @1 w' a) M. Z1 d1 [
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;, X0 [$ e0 ^- r& [) e8 N) E
do
1 }3 ]% J1 w, ~5 e- F9 L" f& h        Lan := rootfolder.Internal.Tools.AOLlanguage;
8 y+ d* K+ U8 C$ d" y/ `        if current = @.Destination -- else return7 i1 Q+ g: m8 |: ], X
        then
- `6 V, Y- m$ [, A4 e                @.Destination := void;
. g" ^: L( V- I% h4 u! p                if @.occupied then
8 n& |: j$ C; S& }                        part := @.cont;
8 Y& h" F9 {% @) d/ n% _                        @.transpOrder := void;" v& U& G$ O! d8 A
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
) x) L6 e* p) B; Q) w; x* y                                @,root.eventcontroller.simTime);
& @( t" B: d- A! ]                        @.HasOrder := false;
' u% y) C' c2 L                        @.DrivingHome := true;
) e5 e% m7 D8 x7 j                        rgManager.tryToStartTransOrder;$ r' W9 P  I+ W! n, t0 b$ d
                        if @.Destination = void
6 {. u6 [1 r/ G0 S4 N, d1 l, ?, h                        then -- no transport order for vehicle @3 o7 S1 E; u) s7 `
                                @.Destination :=
- d7 X/ c' F+ y0 {5 v8 F                                rgManager.nearestFreeStation(@,track.~);5 g3 X3 S1 |4 _# A8 L$ \
                                newDirection(@);   2 L7 S; N. `7 |+ O% p: H# k$ L
                                if @.Destination /= void then0 k" \: o1 q) L7 o1 c
                                        @.Destination.NumReservation :=4 D4 h/ s% \+ @2 v7 i( Y
                                        @.Destination.NumReservation + 1;4 z; w% D: t+ y: X1 ?5 R9 a
                                end;$ k. c& w5 K( z! g
                                @.CurrIcon := "drivingHome";) h5 N/ k% ~$ C0 s
                                @.DrivingHome := true;
- j% P  X8 y* ?( S" G' Y                        end;
& _  F4 X, I# U                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
8 o4 y" l+ J* M7 K) e2 u" s                        part := @.transpOrder;* w  X/ k- C" b1 E2 `$ U' Z
                        part.move(@);-- load part9 }3 p! g; l! g
                        @.CurrIcon := "load";% u3 S+ [( U0 k3 c& V
                        GlobalDistObj := part.globDestination;1 N- ^) U8 x, Z8 d* y7 Q& m" L* Q
                        assignLObj := rgmanager.rgAssignL;$ w2 R9 D* u' N" q1 o- [" X3 d
                        row := assignLObj.getRowNo(GlobalDistObj);* J6 C+ d8 o" K( ?! x+ X
                        if Row = -1 then -- since 70
9 E& N2 `$ E2 R- \: J2 P1 E7 i                                if lan=1 then6 i8 y5 \" K6 E. r) f/ {
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),( e# d% Q1 ~$ {! c$ Y; T  y
                                                to_str("in der Andockstation: \"",?.~.name,"\""));$ a% _5 @$ ]/ T5 f. E# b
                                else, y% ~: m  D7 K% E. G' M
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
" H% s4 u! n6 I; i9 j: i                                                to_str("in docking station: \"",?.~.name,"\""));                               
; v  ]+ N* u: H- p                                end;
# s, H- C  v# h$ H                        else
! M" V5 l4 w, ?7 O                                @.Destination := assignLObj[1,row];
3 w) x# t. {! E. b+ s8 r$ D8 z                        end;                       
+ L8 U* G6 }: G' i/ O                        newDirection(@);0 D% I& i& v4 d
                        @.HasOrder := true;
: [7 A. j, I0 U0 Z! R7 C# `                end;
6 T$ i' F* J; B8 k% ]5 M6 A        end;3 s% s: d/ F* Z
end;        -- of the method
8 x9 [9 G2 z8 S5 J/ V/ R
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
& X6 B* s* {# _; J" T& f4 v
5 Y0 X3 {* v% w# c* t& E( h4 A  U. j这是AGV_putin中arrive的method。( q5 T; D4 m& \- i$ K9 S

1 K. |9 ~, u" l  Q当到达物料速度越高时,这个报警更多,% K) |" b7 @) O) R/ L; {8 r1 x
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。2 |6 v( E$ c. @0 `- f& [
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?9 p, T( ?) D1 a4 s

' P% g! M1 A! O  k8 ]& T  Y另外一个小建议,就是move,所有的move都可以这样& q6 ~% u& l! F+ K+ p- V
if not move() then debug end; K& j' I9 R9 R! J1 F
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
! @3 W4 x: ]# i( @' ]# P$ rplant simulation中的free libraries有AGV模板,
8 B$ {3 E& ^( a8 a( G' M- m* \里面也有案例。
4 E8 h/ a* G( n  F% k我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。2 ~' X4 ]4 F' j  T* x, T% _/ T

) D4 q; k# f9 O3 c0 _& F我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
, Z6 n# c4 E, U) ^
  M, S% |7 Z; s1 d* |0 I4 x9 N4 M那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 8 o2 F; p. q" U) M0 k2 \8 v
这是AGV_putin中arrive的method。
5 t* Y% p; W7 V1 T) ^
' |/ }; l7 J. B$ x" k* L当到达物料速度越高时,这个报警更多,

# z$ T+ A" I* L! i另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-9-1 08:24 , Processed in 0.013056 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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