设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8270|回复: 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'
  e3 g% j8 {$ B6 _8 p9 K, [*/8 @: L  A- j: y1 }) M
is
6 E) k8 q+ p5 v        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
  e5 M+ t: x& d5 ]) s8 N2 Gdo, E5 x) L! g$ w
        Lan := rootfolder.Internal.Tools.AOLlanguage;
% A- Q* l2 R# t# a3 a3 f        if current = @.Destination -- else return( z$ S/ d& V# ^0 \! e
        then8 ^2 o; z4 i' T* e4 J0 a
                @.Destination := void;
2 t4 M' q8 l8 d                if @.occupied then
; ?: e# h# U4 S4 q0 v; v! J3 I) x5 [                        part := @.cont;* B$ V5 G" B/ C! g' I! W4 w+ x6 q
                        @.transpOrder := void;
; Y5 x# Y! ?8 D7 S: ?* ]! `                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,' l7 g/ J. B# a, G6 @3 S6 V
                                @,root.eventcontroller.simTime);. O& G1 k- b8 D  Q2 V7 E
                        @.HasOrder := false;) `3 P+ a9 k! T
                        @.DrivingHome := true;
  i' U. `/ R6 ?- q$ B                        rgManager.tryToStartTransOrder;+ _, ?7 R9 w! m" [; d
                        if @.Destination = void  Y+ @+ ]& s4 u
                        then -- no transport order for vehicle @& Q% P1 ?, ]9 ]. n. g/ M: z* P
                                @.Destination :=
0 ^  {$ F( b' I- Z                                rgManager.nearestFreeStation(@,track.~);' ?# X" q3 x& h5 p
                                newDirection(@);   / q2 ^3 Q8 C( \& b5 k3 S
                                if @.Destination /= void then
  ]3 Z; }. a6 }                                        @.Destination.NumReservation :=
! S% F0 I  T1 Y1 x' ?7 S: p                                        @.Destination.NumReservation + 1;
, |; n8 c, F+ ^  B/ Z                                end;: ]- s0 u+ E8 T4 S
                                @.CurrIcon := "drivingHome";: r3 z3 J. v0 R
                                @.DrivingHome := true;, c7 V" C8 V4 [0 @. ~8 r/ d: k
                        end;
2 }/ d( m% l' f  `# s) g                else -- the vehicle @ is empty, both vehicle and part are in the same dock station* `9 b2 {6 `0 T9 A3 {) V) ]
                        part := @.transpOrder;
8 i/ x2 O: \; U                        part.move(@);-- load part# N) j' ~' N- a  l% R1 @# k9 p
                        @.CurrIcon := "load";) B& ^; T% m, X7 E! S6 O
                        GlobalDistObj := part.globDestination;
) e5 I9 X" ]1 v! ]                        assignLObj := rgmanager.rgAssignL;/ Q% h8 y4 @2 p
                        row := assignLObj.getRowNo(GlobalDistObj);
& I4 t6 C% ]3 a5 J9 i( S                        if Row = -1 then -- since 70
4 G  U0 i) Y: C4 N) W9 v                                if lan=1 then9 ?/ J* e* v8 v. B9 `0 r% [9 F
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),( S" _6 |4 E* U8 @" s3 u; u
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
3 i" y8 g8 \4 Q: W( O                                else
+ Y  F4 L7 c0 A4 X" S/ S0 }( T( W                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
6 e  @- k, B+ X" _% i9 f                                                to_str("in docking station: \"",?.~.name,"\""));                                9 j* c7 g3 d1 [! P
                                end;1 x6 T  p/ k) Z* M
                        else9 Z( x6 u+ g0 \1 s5 }; M/ i
                                @.Destination := assignLObj[1,row];+ H& Y- E( R: O# Q8 Y" _- S
                        end;                        1 `) b0 ^" S4 w" X7 ~3 X6 l
                        newDirection(@);
0 L* @5 K" h8 n1 j: C! z                        @.HasOrder := true;* ]8 x* A. d6 ^' l$ B
                end;; T# B' n& t9 s0 _# A) P
        end;
$ ^) V! \& q" I9 n2 b, x( m7 Kend;        -- of the method+ {. h( ]! c- [2 J+ U  f: \8 U
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 % I) d, j. J+ j7 n% y3 a- n: _5 L$ ]
, w% @" ?9 J: I4 h/ S3 N2 W
这是AGV_putin中arrive的method。0 c+ y8 u9 q; n$ S
. s- Y7 p9 @7 S
当到达物料速度越高时,这个报警更多,
( W% ~% `7 z- ~0 w* F6 D; Z可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
8 }- J. ~+ c1 J" H! C程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?- U* C" R" h4 `5 @
% H1 P1 m+ H0 E0 E$ Y% q0 U
另外一个小建议,就是move,所有的move都可以这样
9 L, Y' X5 T0 V0 C( p$ Lif not move() then debug end' l( R" L; P' n. P- R% W  y
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。: u( g: u- S& y  K
plant simulation中的free libraries有AGV模板,
' g; E+ T$ l' }+ |* z6 S8 T里面也有案例。
' D6 x7 w( S, h6 M& O1 e1 l我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。2 q2 g, e6 u- _$ z4 q5 \

" S% G+ Z0 X4 p  Q% y$ ?% V) E2 u我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
! Y8 _% q8 R$ h4 {" t
, V. U7 N! s! Q4 X那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 3 I  K. {1 W$ u2 E( R# u) J3 I
这是AGV_putin中arrive的method。
; `: D4 ~9 x" a$ R
% X9 O/ v8 U4 d$ o; S6 L当到达物料速度越高时,这个报警更多,
9 S* ~: @' c# }5 ?5 n8 }
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-24 07:18 , Processed in 0.017789 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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