设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8678|回复: 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'+ E( ~+ n; S5 I- d
*/# c* f+ n+ l6 _( m9 v4 n
is; P! E! ]2 H3 u: U( h! ?8 B0 Y3 L
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;9 e8 l# |( k/ X, F. k
do
+ K* G0 ?+ m7 U; d' D        Lan := rootfolder.Internal.Tools.AOLlanguage;
9 `1 G/ C* U1 `. K        if current = @.Destination -- else return+ q5 M) x9 S: P& ~* x
        then
8 P  z$ G  |- F$ ?$ z                @.Destination := void;% ?" o. K( R4 k6 e- I
                if @.occupied then
. I& D9 M, {, D  N                        part := @.cont;
! e  ~" B' K" d6 ~1 A                        @.transpOrder := void;
# \1 H+ ]1 b4 O  R  W/ m* u                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
( W4 q1 d+ i$ P, ~0 i# r                                @,root.eventcontroller.simTime);3 X0 i) M1 ?9 H" m' ?* `% a3 h# D4 B2 H
                        @.HasOrder := false;
) y3 \7 o5 a2 D0 X                        @.DrivingHome := true;+ _0 n$ t; S  t/ s& M' u
                        rgManager.tryToStartTransOrder;+ h" o+ W# e6 u6 r7 o2 T7 Z$ d
                        if @.Destination = void1 ]3 Q# }( B$ A1 [/ s2 Q
                        then -- no transport order for vehicle @
5 E! p$ Z5 u0 Z  W( \6 R                                @.Destination :=
+ \5 d1 J2 y. U                                rgManager.nearestFreeStation(@,track.~);" M, q& Y- x4 \9 m" ~9 ^
                                newDirection(@);   
: {; z4 I% P9 Q2 \( U. v                                if @.Destination /= void then
" P! n0 D1 ~/ s% a                                        @.Destination.NumReservation :=
9 y1 M9 k. _1 Q* Q5 R0 ?* I8 x                                        @.Destination.NumReservation + 1;
7 R4 r; {5 y5 Y" b* G8 z                                end;( ]+ U3 A: x: f* j! q: g4 H
                                @.CurrIcon := "drivingHome";% s8 j: o& G; ^- G9 R
                                @.DrivingHome := true;
7 ~1 i. ~4 x) [! n$ e7 l                        end;9 R6 \5 }% m& p, O; b# p- z" `
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
* K5 \7 _$ _  B9 @                        part := @.transpOrder;( H1 [- o5 f- h5 K; x5 V) G
                        part.move(@);-- load part4 G9 ~! w* i; z$ N5 s  ?- B* r# E
                        @.CurrIcon := "load";/ _( v* H1 R% P7 }
                        GlobalDistObj := part.globDestination;
3 b6 T! j& ~( ]% d9 C4 X. {                        assignLObj := rgmanager.rgAssignL;/ K( B7 @5 \9 o2 q! \. \
                        row := assignLObj.getRowNo(GlobalDistObj);
7 T( \$ F1 h5 B# c( `                        if Row = -1 then -- since 70
- d2 `. n3 U1 s. y9 f                                if lan=1 then
. d; j" x6 |& `8 _6 Z" s                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
! Q$ X! A9 w% Z% k0 s                                                to_str("in der Andockstation: \"",?.~.name,"\""));
5 B4 e# x( ~0 u9 |3 n- _0 X                                else2 O/ |0 g# z: y" E" T
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),. U: P, Q* B/ G% N( b  {7 R
                                                to_str("in docking station: \"",?.~.name,"\""));                                ! K0 r& [  P4 ^2 B
                                end;. e" h' ^. X8 a: _5 d" J/ {: `9 p
                        else, R9 z" {$ [5 \7 I( E0 X
                                @.Destination := assignLObj[1,row];2 q% G) k% L2 f5 L( v' y7 p7 Q
                        end;                       
  R( }, {2 O9 W( F                        newDirection(@);
  M* T) G. A- j                        @.HasOrder := true;. r# ^  j/ g4 q
                end;/ r' l, Y# s4 [7 h
        end;
! B/ g+ y0 q5 X4 A+ ~! Qend;        -- of the method% v% L% W) S) x% U. r- ?. \
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
* p. K& R4 j. V" @2 b, R* v7 t6 u: g$ i# t, z
这是AGV_putin中arrive的method。5 C5 x' m) n0 r

- G( H8 j. f* ?+ o; q0 O# j% u$ R* c当到达物料速度越高时,这个报警更多,
& x. t$ Y: M8 D9 L/ j可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
' d/ `9 {; L3 V2 _程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
$ m( z( M  c. e( B
) ?, \& v! `, I7 j6 t( J$ t另外一个小建议,就是move,所有的move都可以这样) S4 Y0 U5 B( f# v" p
if not move() then debug end7 J9 W- Q' p; x6 o3 A5 D8 v
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。; T4 u+ A) V/ g. I
plant simulation中的free libraries有AGV模板,
: e+ l6 a$ u( a: I0 l5 M里面也有案例。" e/ \+ p) K9 q4 I5 B1 I
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。* g$ _% f8 S0 ~/ y8 ~6 a$ B6 M

8 `5 s5 g, k' b& v3 w我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
" L. r+ \2 C+ L, @4 Y
5 e3 \0 I3 j* S& U那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 - L0 b" O0 @0 r, @7 t- D
这是AGV_putin中arrive的method。
0 G. Z1 ^, r7 g, c6 w2 }8 r7 J/ w6 y
当到达物料速度越高时,这个报警更多,

4 J5 n. @( ?% m' K) I: j8 d* b" p另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-19 17:51 , Processed in 0.015536 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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