设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6255|回复: 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'3 [. p4 q4 i" c2 h
*/2 S1 y. {$ p+ W/ M+ ~
is, Y: c, Q1 x, m4 R
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;, V: m' w: l* d, [3 w' X
do, k, K# q: I1 ^6 ~7 \
        Lan := rootfolder.Internal.Tools.AOLlanguage;
7 g( z$ v' @+ R3 ]2 z( u; w7 A        if current = @.Destination -- else return
! e) `  r, b: C. |9 D7 v- r        then0 }" r8 v6 T' D* F/ l
                @.Destination := void;0 _; f& ~0 x' Y0 N( A- `
                if @.occupied then
2 t6 P/ L9 U  M% x  |# X6 y                        part := @.cont;
  Y$ p9 \: U' V: Y) m- {                        @.transpOrder := void;
+ T) I: N1 c$ c6 F* Y                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,/ }/ ?+ ~' O3 s# x* T
                                @,root.eventcontroller.simTime);5 y" R" y6 S6 f  [' ?6 I* z
                        @.HasOrder := false;! e# P8 T- ~; p; p# O
                        @.DrivingHome := true;1 Z. j, W  ?9 z: |
                        rgManager.tryToStartTransOrder;6 x7 x" c, e5 u3 E( X2 I
                        if @.Destination = void
9 u# j4 G9 t4 ?7 Y! J9 y                        then -- no transport order for vehicle @
2 r) m7 L) e' K# q                                @.Destination :=
* V. [. p" o: s) b3 I                                rgManager.nearestFreeStation(@,track.~);
) m+ A& [0 j# F# W3 J. V2 ^                                newDirection(@);   
3 E4 H$ Q" s; F3 W5 d                                if @.Destination /= void then
. h8 H8 V- ^: E7 k                                        @.Destination.NumReservation :=
2 L: V0 c8 W- k3 c; \$ O. f# p                                        @.Destination.NumReservation + 1;
' j+ V& e' Z% p; b                                end;% z! K' l# e9 w- v2 T0 m4 z/ V
                                @.CurrIcon := "drivingHome";# f1 x- p& p7 E3 C- }
                                @.DrivingHome := true;% D3 v" x0 N# f4 s2 ?
                        end;
, I  X: T/ K4 d% |' F8 X  Y- a                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
# q" F# l) _/ u3 Z                        part := @.transpOrder;
: G: L& |/ r4 e                        part.move(@);-- load part
, N$ M; Y3 ^) O5 A" {+ Y' D5 p( U4 Y                        @.CurrIcon := "load";/ W3 Z8 N4 p/ n4 q. z
                        GlobalDistObj := part.globDestination;
' G' \3 ^5 Z0 \) E, l                        assignLObj := rgmanager.rgAssignL;
) p( I+ W3 @% `: W% f! Y0 R                        row := assignLObj.getRowNo(GlobalDistObj);
. _" r" p3 p3 J0 t                        if Row = -1 then -- since 707 V- F4 n8 A$ p7 s8 Z) t# O
                                if lan=1 then% D+ N. Q+ f: u0 x* T
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
" Y6 t/ x9 I6 ^4 x8 l1 ^) F  w  _                                                to_str("in der Andockstation: \"",?.~.name,"\""));
. t% h  `! G" G; t8 I1 e                                else
4 L4 Q6 X1 `( S% U8 V* E                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
  d+ }8 j, s' b( [' l# A8 V, Z                                                to_str("in docking station: \"",?.~.name,"\""));                                ' ~4 h/ Y. n5 e& C
                                end;
: n1 d3 X7 n& U* a9 B; x1 Q% D% N+ [                        else
, p  Z$ m0 w# e( U4 [5 m" O" E6 B                                @.Destination := assignLObj[1,row];
  L  u' i+ R! b" e9 g                        end;                       
8 R6 a! ^) ]  e: g7 J                        newDirection(@);
& e. f" Q1 Y) |. z                        @.HasOrder := true;# I/ ^% d4 A% Z; u+ ]' n( J( s+ P4 S
                end;3 G0 i- c: U( I& F% |
        end;+ e9 F( r6 h  y4 `4 ]2 u0 z: d
end;        -- of the method
* T5 i3 \8 {3 O5 y% E- X
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 # O7 `) A  H% h" t4 k
/ J+ M5 B* i9 G
这是AGV_putin中arrive的method。* b( Z2 @' a% ^0 f# }
1 [# ]' l8 t# K* O2 U
当到达物料速度越高时,这个报警更多,
# ^( Z( j! _* |8 E) T, B可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。9 g# D( J7 R$ B- V1 V) x+ o2 N' R
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
/ d/ G8 r3 y# N6 A1 Z5 g: X
1 `! Y: F8 }- G) i+ U" z) o( t4 t另外一个小建议,就是move,所有的move都可以这样5 g' x/ i& _+ \& Q
if not move() then debug end7 W- V; Q5 l' D- j& T& V
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。; C& V' I+ ~2 B5 M
plant simulation中的free libraries有AGV模板,
% H) F# ]. O. K9 |( R+ U里面也有案例。; _6 m3 _2 G8 Q' I- }5 w. Y4 ^, Z
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。5 T- N: o7 m: q; m- t

" w% l1 K* @* G! c7 n6 I& g我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 " d2 A+ `: Z. y; K+ @% P; f9 w6 ?7 U

6 s/ V! m* l5 q/ u4 q那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 7 O) X& \. D! X) }8 W2 q
这是AGV_putin中arrive的method。$ Y; [  E5 I7 n% G8 V6 s  \

( M& @# ~; k& [! h  J6 u+ O) f当到达物料速度越高时,这个报警更多,
4 ?$ U7 t3 t; @( {) l% _
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-1-27 10:58 , Processed in 0.022016 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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