设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9774|回复: 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'
% q8 m- \0 v0 R( t9 a0 _2 W*/$ a$ _- U& ?$ W8 r5 n9 r7 z
is  Y! e4 O1 |. W0 N
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;- h' K7 c- G3 H
do
9 M4 t/ w# K  p2 u) I6 j- [        Lan := rootfolder.Internal.Tools.AOLlanguage;2 {. }7 a6 Q: P' G! Q/ r
        if current = @.Destination -- else return5 r- ^1 H  w, a/ Q3 @
        then9 U" _9 f! ?4 x5 P" E" X
                @.Destination := void;
7 Y! W8 u. [$ F  l/ d7 k                if @.occupied then
3 L" P% c6 r/ ?                        part := @.cont;
; |3 x  f4 L* c3 E, F9 ^; f                        @.transpOrder := void;+ T0 G/ C' o) Y% S# |
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,1 A- C+ L, N8 J  v/ A# \
                                @,root.eventcontroller.simTime);
. {1 K/ @; F0 }( I* w# {                        @.HasOrder := false;% G# y5 {1 |% _* E% A9 L0 R
                        @.DrivingHome := true;& r  [1 w3 u4 C7 `& ?9 t
                        rgManager.tryToStartTransOrder;) {- l( u! n. w/ n2 Q
                        if @.Destination = void" {3 `$ t" X6 k7 M
                        then -- no transport order for vehicle @$ `* X) q+ [7 F% a" V; d! Q
                                @.Destination :=
5 M/ w% c- ?4 X9 C3 x' T7 A                                rgManager.nearestFreeStation(@,track.~);7 L" D3 p4 p3 y- b
                                newDirection(@);   , s7 u% h4 K$ e1 r
                                if @.Destination /= void then: G" v6 T9 [7 [: X3 i5 V
                                        @.Destination.NumReservation :=
2 |- q6 d" u) [4 o- ^! M                                        @.Destination.NumReservation + 1;2 s) r1 K4 I3 i: d# L( h; H  v! p
                                end;" B( X7 T" o; s* L, _" o
                                @.CurrIcon := "drivingHome";; _  v! G8 G6 F  V0 `% p4 C
                                @.DrivingHome := true;
$ R  T+ {* V4 h4 F# o, J+ R  ~" v                        end;
5 ]) \5 _5 O; H0 E/ h: [- `                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
- G8 P% \6 [: C& `( }                        part := @.transpOrder;
0 ?4 {7 G% O, V( u9 Z9 m                        part.move(@);-- load part
; D; c7 K  t. e. u; }8 F                        @.CurrIcon := "load";
3 v, |3 M! q+ `: S2 E& |                        GlobalDistObj := part.globDestination;/ }8 K  k* F. F' N5 g
                        assignLObj := rgmanager.rgAssignL;
& J2 q; Y6 ~# [9 U9 h% f                        row := assignLObj.getRowNo(GlobalDistObj);
) t+ U2 B# m$ G* W: Q# a5 y6 O" {; \! n                        if Row = -1 then -- since 70
) J/ Z; Y4 d& h& K& f, t6 m6 R- L% o                                if lan=1 then
9 F" n" O) x) ]: r1 n                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),, y: L/ k- N; J8 x( D" `" H
                                                to_str("in der Andockstation: \"",?.~.name,"\""));+ x: n9 Y4 D# _
                                else' k8 S8 N# }+ l3 r6 t, L
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),# s% C4 v$ b. h% q' F1 m
                                                to_str("in docking station: \"",?.~.name,"\""));                               
7 T3 D0 t+ `$ w( {, c3 L                                end;
! [) e. x. Z# O+ d' Z; v                        else
8 x' {9 ^- n9 C0 V# x5 u, P                                @.Destination := assignLObj[1,row];9 F  I- E# A& r) a: P. V
                        end;                        0 i+ n; r0 H5 K# `, l' C$ _3 E$ A
                        newDirection(@);, w4 \" `% V" u1 M2 @8 i  w
                        @.HasOrder := true;  ]. j3 A- ?3 Z7 p- f- a6 ^
                end;
8 R; }- z- S7 ^  A        end;0 k. c1 H: J- ~8 k# }
end;        -- of the method# _$ r- l* f6 V( U( _. F
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 ! A2 }" `  O" M
. a. |# Z1 ?; v; _% m4 u
这是AGV_putin中arrive的method。
: L! e1 o% k% e( ^0 z, y/ H5 a3 m0 T# k: Z
当到达物料速度越高时,这个报警更多,: q( N+ c; O. d
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。0 F, ]$ m; j6 R; J* B
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
8 `8 \8 K$ N8 i# o; s
. z; z; p# _5 ^4 l7 _) t另外一个小建议,就是move,所有的move都可以这样
: `' v* M4 V( n( pif not move() then debug end  y" d% B! }: N2 B4 y+ u' t
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
# U' R  H  U, f( Xplant simulation中的free libraries有AGV模板,) m1 F" F. _1 |
里面也有案例。' ]' i& u+ O) M" Q
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。6 ~! p3 T% u* ^+ \+ \, c
2 ]+ z7 V. O; g# n; R; u) J. E
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 ) f- _/ H& G! `) a8 G2 L' L
/ J) D/ r9 v0 |) y7 M# H% Y
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
6 ^% `3 B! \/ S* A这是AGV_putin中arrive的method。7 [* H4 z5 v; W1 D# b

4 i' T* r3 @% f* R当到达物料速度越高时,这个报警更多,
7 ]# T7 Z, {- p; b4 R- b
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-24 00:30 , Processed in 0.021995 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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