设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8210|回复: 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': H7 i# I- U/ d" j( P
*/: y! C" T6 u; Q
is
/ p& T! J9 E6 f# a8 w        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
  _( a4 u( J# o# vdo8 B# v% @& _" I9 G
        Lan := rootfolder.Internal.Tools.AOLlanguage;( D3 e  r3 Z* O; c$ L
        if current = @.Destination -- else return/ S. `% M. z8 n, F1 @- b
        then
8 F+ i! {) p6 x                @.Destination := void;, r2 L* f" r# ^. \9 S
                if @.occupied then! A+ d5 F' @$ M! g9 N$ l# Z
                        part := @.cont;2 @. S5 V4 E0 z6 H, O
                        @.transpOrder := void;/ k& K( D3 x2 N* t9 H% p: s% T
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,0 C; i& G- a( f" P  {6 ~
                                @,root.eventcontroller.simTime);
4 x) V! a: }3 s0 |7 N                        @.HasOrder := false;
: P1 G. I: o8 H; r( N7 ~: O  p7 D                        @.DrivingHome := true;
0 D4 t) b" p: a# Q! t                        rgManager.tryToStartTransOrder;
# y/ @5 k9 L$ |: e3 D8 U' p' m                        if @.Destination = void* W  S4 X7 s+ d+ f( \- k3 Q& A
                        then -- no transport order for vehicle @$ @* O  ^2 x3 H1 Z7 d4 J+ q
                                @.Destination :=
7 f# F% [0 F# m" X6 B8 u                                rgManager.nearestFreeStation(@,track.~);, G. t4 D) n# Q/ o
                                newDirection(@);   
; E3 x; D- h3 Y* Z: Q! c$ A                                if @.Destination /= void then
0 R+ |% L- j" D                                        @.Destination.NumReservation :=, S, K3 {& }* B5 {* Z/ s6 l# x
                                        @.Destination.NumReservation + 1;
6 Z1 i) v, G" H                                end;
$ K6 X+ U6 t  H: M8 o                                @.CurrIcon := "drivingHome";4 v; W1 F6 p) E& w
                                @.DrivingHome := true;
6 Y& B9 y5 b% I0 B8 j; k6 }                        end;
% o' U5 W; d6 l4 c; N                else -- the vehicle @ is empty, both vehicle and part are in the same dock station; F9 i2 i3 l1 C) K1 H9 Z
                        part := @.transpOrder;
% s2 m  V; }4 }2 w, I                        part.move(@);-- load part, Q( d; J, K4 l
                        @.CurrIcon := "load";
. \& }7 t  X0 e  h                        GlobalDistObj := part.globDestination;
4 i, J$ [+ r9 t/ R" ~7 e/ a                        assignLObj := rgmanager.rgAssignL;
: a) e$ X! {$ T7 J                        row := assignLObj.getRowNo(GlobalDistObj);8 N$ Q5 D1 c) X  Y: p- J4 a+ ]: ~
                        if Row = -1 then -- since 70- `% e9 ~4 J6 R* r3 S
                                if lan=1 then( L: A2 N+ u2 j
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
8 d* l. U" W; q  C$ X' a, a                                                to_str("in der Andockstation: \"",?.~.name,"\""));! N0 t7 J" M- g" U* U4 X6 D5 y
                                else
% Z- Q5 V0 I: h0 t                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),: i9 V' S, E) L" l/ `
                                                to_str("in docking station: \"",?.~.name,"\""));                               
  Z" x' X8 R; W2 @. S, ]6 y3 |                                end;1 [) e# H  E4 d' T# b) H- Q
                        else
4 o/ a. ?" A! U4 x8 i                                @.Destination := assignLObj[1,row];
" E" K  |0 X+ [9 p, f0 i, t                        end;                        7 u2 o0 i, U% C# j
                        newDirection(@);: H9 [- Q) N" H& P
                        @.HasOrder := true;
- a' H5 B* d( p% [* Q, |4 M                end;2 z: w9 K3 @' L# s4 P
        end;
/ i; w9 ?$ z1 g+ Yend;        -- of the method3 U: ?9 g% h8 P! L' @& d
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 / I' M. p6 N, C
- n9 K1 {5 f+ y4 u
这是AGV_putin中arrive的method。& I* }. y' Y7 U' G
8 |1 `3 ^* {1 t
当到达物料速度越高时,这个报警更多,
  m# t- ]% A! ]. s6 s$ W可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。( H  K0 x) d' F: N9 r- }8 q
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?9 U9 j' q/ c! F# c
, S4 f. A+ W$ _. }5 n4 b
另外一个小建议,就是move,所有的move都可以这样! V( W* V$ c  t5 v3 Q3 s
if not move() then debug end6 L* A7 u( G: x, L5 j4 g' c6 B
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
4 j, h8 i8 w. c4 W2 P* T4 b$ B7 \plant simulation中的free libraries有AGV模板,8 v6 d: J$ t# A
里面也有案例。4 q6 I* V9 d7 I' W9 U! C0 k# N' j
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
! c6 I. I3 ~. h8 i$ j$ w) Q, F: X. K9 k9 I6 w, `7 g* l
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
/ P6 Z( x+ ~* J- U# g2 I" z( K( f( _# I0 D8 W3 X6 u. p
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 : ]6 d7 M" u7 l- D
这是AGV_putin中arrive的method。
9 V, e0 }3 @: V6 C' F+ Q, e( B6 w0 d9 Q7 [+ R1 z
当到达物料速度越高时,这个报警更多,
- \. Z" ?5 X7 l# a
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-21 00:45 , Processed in 0.032522 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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