设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7091|回复: 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'
/ V; X# G# q$ `5 ^0 }  `8 G. l*/) a1 C2 A; Q$ i+ A* }
is) K3 S4 r  b" q5 z9 \3 }7 U
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;. m+ W5 r2 S/ W; u8 u; w6 X4 T! Z  y
do3 z) k# e2 j8 V+ h( \
        Lan := rootfolder.Internal.Tools.AOLlanguage;
/ s" q  k6 p4 d$ p; \4 {3 O        if current = @.Destination -- else return
4 b; ^4 R" G% m9 O        then' ]0 M0 }  E& A
                @.Destination := void;( i0 Y1 O0 s4 T0 K. i2 c
                if @.occupied then
9 N: t: l! {6 q8 T- I* N( I) e! ^                        part := @.cont;  s+ g3 h- T( k6 ?
                        @.transpOrder := void;+ L: W: ]" W; U) M* M3 w
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,/ A- J6 Q- i4 l8 J+ ~
                                @,root.eventcontroller.simTime);
  d2 ^; O1 r% s                        @.HasOrder := false;# w* G. b/ I; {4 R' n& \
                        @.DrivingHome := true;
( Y1 \3 b9 j1 ]9 b( m8 n1 \                        rgManager.tryToStartTransOrder;
7 G9 l4 H" R% n& W' Y# e. m                        if @.Destination = void
7 n$ }! g. b- C+ n4 q5 H                        then -- no transport order for vehicle @. e( k$ K+ O0 Q5 B
                                @.Destination :=: j- M6 i! L. e  N( s3 ]
                                rgManager.nearestFreeStation(@,track.~);2 i0 ]3 z! D9 c3 G
                                newDirection(@);   4 z0 _0 w1 c' j
                                if @.Destination /= void then
& j' s& r& I  V. ^' _                                        @.Destination.NumReservation :=* D3 D% U3 Z: z6 `% E
                                        @.Destination.NumReservation + 1;
+ a- O& A2 u) g% B$ a) I; b                                end;
6 {& g9 @* U) D$ H: |/ O                                @.CurrIcon := "drivingHome";1 j0 ?* ~8 q0 _
                                @.DrivingHome := true;3 V* |+ W0 B2 o$ r. G+ ]' }
                        end;1 O8 N" m; @9 L/ M( X1 Q/ X
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station0 x: k! d1 U7 @6 `) {7 H, E
                        part := @.transpOrder;
' `: G3 q) F8 P8 k' p, a                        part.move(@);-- load part
- e/ L4 }9 r2 l# w/ m                        @.CurrIcon := "load";! l5 M) g% Z" b. z( Q
                        GlobalDistObj := part.globDestination;3 s: i) G- z$ q& p/ f1 {
                        assignLObj := rgmanager.rgAssignL;
0 E& w  H+ [# G) U3 _3 R1 [                        row := assignLObj.getRowNo(GlobalDistObj);
8 w# u! L3 v, c6 G% Q                        if Row = -1 then -- since 70, h! E. l  A" E" G- u# `  Z
                                if lan=1 then% a0 ]$ `9 |2 I
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),9 E9 u; E* i4 L: i& R" A2 K
                                                to_str("in der Andockstation: \"",?.~.name,"\""));  u: N" n$ y/ _' L6 q
                                else0 Q5 q5 }3 C9 b/ ^5 w/ w
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
& g' B) H: E' P% H                                                to_str("in docking station: \"",?.~.name,"\""));                               
& M7 e2 o/ c4 B0 @" Q                                end;  ~/ w% f  }. g. h: g
                        else5 D6 d' @: q2 `8 |, i$ F
                                @.Destination := assignLObj[1,row];$ ^/ T$ W4 E8 ]6 i. v9 a. C
                        end;                       
# Y( z1 N( l0 M! i8 K7 E                        newDirection(@);
% M- ]7 ?( Z; S                        @.HasOrder := true;2 W( P$ J6 Y! u8 r
                end;% V6 ^% Y, H5 y8 O/ U  o
        end;5 K$ {$ D/ e" C- A" C, l5 k
end;        -- of the method3 f8 W  h9 x. d% @" B5 X
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 3 A5 p" X- ~; H
: x) G8 i  u& K/ W+ I- U
这是AGV_putin中arrive的method。. J2 ~" M, s6 q. `9 i' }
6 }1 a5 ]- H9 B" [
当到达物料速度越高时,这个报警更多,
: \8 o: N! k8 o0 x  i6 C3 |1 {可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
2 t9 ]/ T+ R) N0 N$ D: n) D程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
" p8 f$ t- q/ \( t0 j
; n( n4 P8 h- t4 @+ k另外一个小建议,就是move,所有的move都可以这样
# T8 {# z: f0 g( J- l$ c; h+ vif not move() then debug end
# L5 Z7 N9 u. i% F* v" M! S9 f这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
: ~8 E' j, E5 r9 ^% b& Yplant simulation中的free libraries有AGV模板,
. k8 Y/ e5 {% f) W3 Z( I1 x" z里面也有案例。- m0 y- o0 `6 T* @/ k8 S: ]) \5 ^
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
) A3 w  D' b8 i" S' Z
5 h- ^6 q6 l; y5 `+ D我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
2 g5 ?- T' `3 ]. [
  e: U; b8 |8 ^* Y- J: Z那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
: H4 C. [+ V2 v/ c这是AGV_putin中arrive的method。
/ \# a' J# O& f* X. u) R; V" o1 I+ @0 J% i* p; G6 ?' `
当到达物料速度越高时,这个报警更多,
6 d  \* s$ M8 j7 \' c  k; z
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-16 21:22 , Processed in 4.571359 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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