设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8483|回复: 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 g" S6 N! j. k2 x6 ]
*/  \5 f# t! s% t7 |" T  R
is2 {, Q- c: H' T5 w6 k) \( z! z
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
. @( d, p+ j. L$ N8 g8 Qdo" P6 z6 Z; \2 C8 W" T3 S: ~
        Lan := rootfolder.Internal.Tools.AOLlanguage;( q) i# T$ `  f! X/ X( U8 C. |
        if current = @.Destination -- else return
$ g( m* z7 N! H        then2 _3 g3 k- l% c4 v, H& ]' |
                @.Destination := void;
% q: n6 k. {& V9 }" U                if @.occupied then: u6 n) G' F- X9 G9 F
                        part := @.cont;; u# T7 L+ p* F$ g
                        @.transpOrder := void;3 ?5 }+ g. K) x
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
8 u$ n$ x" e0 F! S" z                                @,root.eventcontroller.simTime);
' T8 a2 K# K# f, u% ^                        @.HasOrder := false;
4 o& F+ u6 [3 q) d7 h0 B                        @.DrivingHome := true;
* p* b$ \9 `" \/ O                        rgManager.tryToStartTransOrder;
. k0 }0 S3 V$ e- ]                        if @.Destination = void
# t$ m$ {  ]3 A9 f9 b# Z1 S                        then -- no transport order for vehicle @
; u; K! ^+ _6 g8 p$ |$ B- E                                @.Destination :=
. ]2 ~5 @2 m* m& s" b3 {* l  l! }                                rgManager.nearestFreeStation(@,track.~);- f7 c" I) v5 J, e( F* D
                                newDirection(@);   
8 Y( s8 X3 G( v0 J# w                                if @.Destination /= void then
' @0 _% g  y3 ]& X. ^7 c                                        @.Destination.NumReservation :=$ Z! {( f4 q7 p$ j1 e7 J* s
                                        @.Destination.NumReservation + 1;
3 K& |' C$ h' y/ k                                end;
! h% J, j' V* S& d5 W                                @.CurrIcon := "drivingHome";! g* v4 U/ P# J( y# Y) h- _+ `
                                @.DrivingHome := true;% K5 a: {! f9 d8 O
                        end;$ d" G7 {7 n- e
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station1 [( l! `6 {7 @0 J* g: }
                        part := @.transpOrder;; P4 D: u" n  V3 M& Y0 _. r0 W
                        part.move(@);-- load part, Z  b' F+ J/ v  D3 D7 [! h1 I8 ^
                        @.CurrIcon := "load";/ Y; C: T" [, {- {1 I
                        GlobalDistObj := part.globDestination;1 }" Q6 W8 i; z% W1 S, X, _+ P% o
                        assignLObj := rgmanager.rgAssignL;
! N- ?/ V9 ~6 j' {  K: X" d                        row := assignLObj.getRowNo(GlobalDistObj);+ @' T+ }2 N8 d' s% {
                        if Row = -1 then -- since 70
1 H) c6 f( U  C% Z8 Y                                if lan=1 then
# E2 p) O6 p) C, }, X7 A- w: z                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
  V1 b3 s5 u' v                                                to_str("in der Andockstation: \"",?.~.name,"\""));
- D3 u( C: n4 W9 d                                else
5 [: v* _% n4 q' a+ @, z# b                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
# D1 g" k2 c+ \8 \$ H4 k                                                to_str("in docking station: \"",?.~.name,"\""));                                3 o5 ?( C. m6 p* y/ q% b9 G
                                end;6 [* T8 Q! J! _6 }5 K
                        else
) f7 }9 _5 {' ]6 y) s# ^                                @.Destination := assignLObj[1,row];
) z- H1 z" J. U6 x8 R) W9 [                        end;                        ' W& o9 Q7 ?1 ^
                        newDirection(@);
$ R7 |4 z9 v- F1 b                        @.HasOrder := true;7 s( w& D; a% \' a, n+ [
                end;
# `& k- m/ V- ~" x& C        end;
1 N  Q/ I' y8 V* uend;        -- of the method5 c# O; I& j3 K) z7 \/ `
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 , F; {* s7 C$ Q+ O

0 ]0 c* K. r: h+ e这是AGV_putin中arrive的method。  p! q0 s: k$ U0 _
9 [. n0 M7 A/ k2 P# P2 }# m
当到达物料速度越高时,这个报警更多,+ D2 p; ^, a. E  Z
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。% n2 R8 z% U% x9 X  N+ O
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?; x, R7 N' k, }2 h5 _- n- l# n3 \

! d- [$ B$ X  b- I" z* z3 Q另外一个小建议,就是move,所有的move都可以这样& W7 ?3 {2 M0 a) k& Q7 I& `' U; X
if not move() then debug end9 e- v; _5 p8 a9 I; `: w$ i
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
$ ]. ?1 S0 q+ y2 ~plant simulation中的free libraries有AGV模板,
. U: P/ {% q% k: r! f9 f里面也有案例。) i. B+ ]3 z' [# V% i4 p# H9 M- y
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
# ]% j* a8 S  P
& ]3 k! Q$ z* a9 W: h& _我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
# T) O+ M, u0 m
# ~  G  w, r& k" G% c- |1 V" H  U+ X那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 ! e6 N# P2 ?3 E9 H7 B8 A
这是AGV_putin中arrive的method。; h  Z. N# a$ h- Q/ w3 d1 |- Z
) D6 g* p9 b9 D* S7 p  e8 k
当到达物料速度越高时,这个报警更多,

" p( G+ [! x/ e- V! V另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-6 19:35 , Processed in 0.013706 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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