设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7725|回复: 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'% `$ u  d1 p! K1 W
*/2 K0 o( U5 r, s
is
: d% Q  a4 o8 P7 B8 M! U        part, GlobalDistObj, assignLObj:object;row,Lan:integer;. e" T" Q* t* n% \1 W% T
do% b4 T3 B/ D7 o
        Lan := rootfolder.Internal.Tools.AOLlanguage;# I# h: r- v$ L4 l9 C
        if current = @.Destination -- else return& i: n1 E( c4 Q2 O  @& v
        then
; O+ G9 p, e" _; p$ v0 z% e$ S) s" _2 N                @.Destination := void;2 {1 n0 p8 O' a/ z0 }" D/ t; h
                if @.occupied then; b4 T; p0 q) C+ Y7 N
                        part := @.cont;
4 P% E5 B; M7 D! i  a                        @.transpOrder := void;
( J# b5 B! t- Z0 T' Z9 v& g                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
( y8 b* T" e& A7 K2 Y                                @,root.eventcontroller.simTime);2 u; v- R0 ?0 Q7 r# v3 t* e. H
                        @.HasOrder := false;4 @5 k8 N1 k9 h2 M2 |2 e3 G
                        @.DrivingHome := true;
! y+ \+ L* i# u5 E/ N! h" S                        rgManager.tryToStartTransOrder;4 e0 U8 h% j0 L9 g
                        if @.Destination = void
  K% `/ J1 r  z! N+ r  z8 L! a                        then -- no transport order for vehicle @
  m8 d8 ?- V- x9 [3 ^                                @.Destination :=: Q" \: L3 u; y- v( ~
                                rgManager.nearestFreeStation(@,track.~);
; k% ]" n" D  A                                newDirection(@);   
2 H# T6 i! b( Z  R                                if @.Destination /= void then+ d. s+ h3 Y  A. L3 }/ u1 }
                                        @.Destination.NumReservation :=
/ h4 |/ ~' c( |0 G0 ^: ]                                        @.Destination.NumReservation + 1;& U+ O8 c1 {) o& w7 c: a
                                end;
$ e# Y8 G& M% Q; w                                @.CurrIcon := "drivingHome";$ w1 c- l% ^( o1 ^
                                @.DrivingHome := true;
$ }0 r# j+ m4 w( m, G                        end;
7 ]9 E& ~+ k3 |" j% Q( U                else -- the vehicle @ is empty, both vehicle and part are in the same dock station5 h# V4 q; Y8 J2 I1 n& @
                        part := @.transpOrder;' T" z$ g( e6 ~
                        part.move(@);-- load part
% p1 w+ x. A. f                        @.CurrIcon := "load";6 j! S0 H9 k2 e4 N7 L8 t& m3 e! W
                        GlobalDistObj := part.globDestination;
( i& u' D, g6 [: z1 I- d% v                        assignLObj := rgmanager.rgAssignL;2 G, G+ E. J; q5 @
                        row := assignLObj.getRowNo(GlobalDistObj);2 o/ @" x, Z& S1 ^) {8 }! J
                        if Row = -1 then -- since 70* K6 g- T, A' T# ^) B
                                if lan=1 then
, q/ \. x* j/ ~9 `                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
; R0 Q# f) o( K# R5 v( D                                                to_str("in der Andockstation: \"",?.~.name,"\""));3 v9 C3 ]: ?% X$ h
                                else1 ?; ]* M1 [' E
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
9 i0 Q5 n, Q" H                                                to_str("in docking station: \"",?.~.name,"\""));                                7 z7 ^! v% O( Y) f( L: o
                                end;5 P/ L8 }: ?1 u# m
                        else7 J5 `' [5 ]$ h
                                @.Destination := assignLObj[1,row];
; ^* c" q- Z& x3 O                        end;                       
7 P" a' V; r' f9 {9 `8 _' d* z                        newDirection(@);7 v1 }# U7 L8 Y! d& O: {2 S( A
                        @.HasOrder := true;
! ]1 s$ `6 K2 v1 c                end;
* N8 L9 }: y, g" s5 g        end;
* P" I1 h5 u& c& i, v0 mend;        -- of the method
7 e* V- t% i4 g6 X- r$ C2 m! w
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
7 H- x, }+ ]  g) |
9 \' Y) v+ U( u9 Q这是AGV_putin中arrive的method。. v3 q# H' R4 w. M# u; h& \: i: i

! v4 X, r  A0 P. P当到达物料速度越高时,这个报警更多,% G& D9 T0 O7 o6 `8 C# i
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。, b* A; |; C& D/ V/ @. L& c
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?6 f1 M+ G! t; o/ p; ]8 N: B

# L) L* r- {) E9 p$ `另外一个小建议,就是move,所有的move都可以这样
! w3 d# B" v9 R( ^) R- uif not move() then debug end6 o8 \6 m  q8 q4 y: m6 A
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。  Q( {6 r, I# A) I* f3 e
plant simulation中的free libraries有AGV模板,
9 d) ^' m$ ~9 ~9 [$ `里面也有案例。- s8 v- A% n7 ]) g! V( y* Z, x+ i7 \* Z
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。5 f+ `, V1 y6 t$ f, T& I: O

( }  P3 ]( f& c4 U$ {# p4 T- M我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 ; }* _, U! J% @7 d2 m

8 i9 b3 E* N2 n' Z那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 3 O! A5 _7 o9 O
这是AGV_putin中arrive的method。
/ q' g1 |, B5 K# a% }' }: ]2 {. v* ^7 d2 d
当到达物料速度越高时,这个报警更多,

/ v8 E6 e/ C$ [: F另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-26 06:01 , Processed in 0.023409 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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