设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7698|回复: 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'3 l. Y+ o" j( ]. Z
*/
, `% X9 g, ^7 }* Z, Nis. F0 B+ x9 G2 a! g8 P
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;& `2 @; N$ {& V; _; A- D/ S( H4 z
do
( v  t; i: A: K6 h$ q. f" z        Lan := rootfolder.Internal.Tools.AOLlanguage;
1 u3 B+ M* U( ^        if current = @.Destination -- else return
0 N* k& J4 i) e+ S        then
2 |7 a* }4 r# [) @                @.Destination := void;5 c9 J& O2 U" v$ H5 ], K" y4 r
                if @.occupied then0 D' w9 z+ _2 ]
                        part := @.cont;9 o& n3 y) X7 e# ~
                        @.transpOrder := void;8 _2 j* \: [' A  l' U0 v
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
% O2 a* `1 V! j                                @,root.eventcontroller.simTime);8 U$ x, P8 q" [5 L* d6 p- {
                        @.HasOrder := false;0 e5 t' f# }# h. i' X
                        @.DrivingHome := true;
8 m9 h, d" ^6 |% c+ t) B                        rgManager.tryToStartTransOrder;; X; `) n: Q/ W; Y
                        if @.Destination = void9 K, [  r! L  a6 k
                        then -- no transport order for vehicle @
+ J% |2 P0 W9 j$ D8 Y  o                                @.Destination :=
; I  J7 \6 W* F8 B* ~                                rgManager.nearestFreeStation(@,track.~);# [" }, G" k8 B* ~1 W
                                newDirection(@);   % Q! t% l6 [6 c/ m$ g3 k* C
                                if @.Destination /= void then
. e4 B3 U7 J6 `7 c, |6 c# g. B                                        @.Destination.NumReservation :=
' Q( h& f' o* J' D# ^$ v                                        @.Destination.NumReservation + 1;5 S4 `$ |5 G$ P! F! _8 W( t. t3 ~/ Y7 s
                                end;
# T" n6 Q4 i" i  z) A1 V' y6 l                                @.CurrIcon := "drivingHome";
& m. k& N1 T% ^% q6 k3 C                                @.DrivingHome := true;& Y+ }" b- r% ]. l
                        end;6 }  W: C5 v! E& @5 Q
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
: J1 h2 P+ U1 {7 `* t                        part := @.transpOrder;1 l% m6 T9 D! |: O3 ~* u4 Z8 T5 e9 N
                        part.move(@);-- load part1 `8 A. c2 F7 e3 Y' ]6 P
                        @.CurrIcon := "load";
2 n+ S% J  F4 z( ^                        GlobalDistObj := part.globDestination;
5 a, i3 y0 H/ z                        assignLObj := rgmanager.rgAssignL;" m' I$ _. ?% a; b6 e! h7 X
                        row := assignLObj.getRowNo(GlobalDistObj);
! {% Z5 B  {$ x- ~. G8 R                        if Row = -1 then -- since 70
7 b9 j6 p8 b! T4 J                                if lan=1 then( G- t! u+ v/ S8 K% q: z
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
9 I- u. e  Q; v4 Z' m                                                to_str("in der Andockstation: \"",?.~.name,"\""));. X% h/ N( R+ N
                                else! p4 I- T+ T) _- w$ I
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),, S3 P3 r4 u+ w. R, E# |$ d% H. A
                                                to_str("in docking station: \"",?.~.name,"\""));                                ; v7 N) d" F6 e/ u1 a/ C8 A, s
                                end;0 z- N' o: c( ?8 ?! B# P
                        else& K, A* W$ i6 ^' r
                                @.Destination := assignLObj[1,row];
' x3 C" ]; o1 @9 L1 z                        end;                       
$ p1 D. V. w0 o/ Q0 v                        newDirection(@);( k8 f4 J. U; Z8 R9 {- R
                        @.HasOrder := true;; [: a/ E# N$ F7 B. |2 }9 Y
                end;4 N% _: D- I  B4 H/ i% c7 L
        end;
3 n) N1 S8 Q6 X  c0 Lend;        -- of the method
9 d( Z6 K" \5 J5 R+ G+ g
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 ) H( \4 G& f9 `, G+ O2 j# ^
' X7 m' n* q' r9 m( }* I
这是AGV_putin中arrive的method。
" K/ |7 Z$ @3 T. w- @, j0 p2 _% ^2 K( V+ h$ X
当到达物料速度越高时,这个报警更多,
5 Z8 O8 z! X$ k3 x/ R, g. l( h1 B$ @可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。- E9 I6 Y% V5 z" q- a
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
' {# Q: N4 y& ]% {5 S* ^4 C. p- N: h' t# O0 h
另外一个小建议,就是move,所有的move都可以这样7 t2 g& K4 W1 Z0 g. H
if not move() then debug end
, u% M! C8 c8 N# t: }这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。7 y+ }) S) ^% v' v) h
plant simulation中的free libraries有AGV模板,
* `$ x1 @/ H- d: ?7 @- X3 i里面也有案例。, r/ \% d* n' O$ d4 ~7 ^' N5 o- |
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
! [' ~, C+ d) R" S! O8 [
* X0 [& A% L* U1 B; m我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 2 |' G, ?; ~% X- W- T" x. S' G7 H

7 j) h# P$ s2 Z- ~( i6 L: R那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
2 U1 C8 e. ]' w7 \2 S这是AGV_putin中arrive的method。
1 \3 e( i% [- a) J7 y7 f% O. N1 S$ c8 k' z* a4 x; ?
当到达物料速度越高时,这个报警更多,

0 o9 s* e; V' G+ B另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-25 00:39 , Processed in 0.020258 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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