设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7095|回复: 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'
6 d5 k7 m6 r$ q  G*/
8 L6 g  K( m( j% J- Tis: j& n# [2 }4 F9 a
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
+ k1 n# d5 [- B* f8 `do( e: y4 \+ z$ ^$ Q% s
        Lan := rootfolder.Internal.Tools.AOLlanguage;
9 s1 r4 e7 [# b( D+ Y        if current = @.Destination -- else return2 w3 R: ^, ]' x+ b1 n
        then
3 l- m( ^- Y8 N3 ~. Q3 N                @.Destination := void;
& m& B: [# b* W, `                if @.occupied then0 S3 H. @8 w; O4 K8 K" M# b8 L; L
                        part := @.cont;: L& S0 _6 x# A7 p% e( ^$ E0 d+ l3 I
                        @.transpOrder := void;
, v( Y7 G6 A, _; D, }7 _! u" `                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
5 e- F+ r% |+ Y! x# e+ S/ K                                @,root.eventcontroller.simTime);
4 r; b' `. j  z8 L+ W: X                        @.HasOrder := false;
5 l4 n7 k& `3 e% \                        @.DrivingHome := true;7 b4 i! q# w  M" J% H
                        rgManager.tryToStartTransOrder;
5 `  r' x3 `/ S( ~& x* ]                        if @.Destination = void! [/ P7 A( I+ l' C
                        then -- no transport order for vehicle @
; p: u/ w$ R9 s                                @.Destination :=
5 y6 k& R4 p  _5 m9 f! }$ g                                rgManager.nearestFreeStation(@,track.~);
; H1 H7 f3 b; g4 y                                newDirection(@);   : h) j2 b6 U  E0 O3 c8 h9 x
                                if @.Destination /= void then7 @4 |: n4 \" `* a) ]7 _  C! J
                                        @.Destination.NumReservation :=8 \2 |2 U; z+ b1 |
                                        @.Destination.NumReservation + 1;( W! F: A0 a' ?! Y
                                end;
- Z$ D7 L% W0 M0 K                                @.CurrIcon := "drivingHome";' P2 J; W9 G" @: @0 m: {
                                @.DrivingHome := true;: [  ~; Q6 U# H- t5 [. ~
                        end;
: a, O' K5 L: u/ S/ H                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
% g! k+ c0 C, w                        part := @.transpOrder;
4 [( \4 b  a6 U8 l/ D7 ?                        part.move(@);-- load part* g+ G9 R7 h4 t) G! y
                        @.CurrIcon := "load";" \- H) `* N6 `8 c- x5 Y1 I9 M
                        GlobalDistObj := part.globDestination;
1 e: f: |" }0 Y                        assignLObj := rgmanager.rgAssignL;
- c2 Z6 ^1 M- p                        row := assignLObj.getRowNo(GlobalDistObj);# B$ ?- `0 J2 k0 z! j* u9 f
                        if Row = -1 then -- since 70! t3 z7 x, R" M  _) C
                                if lan=1 then
5 H# ~+ ^; x) R- _                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),: s8 [; ~- P/ b% V. T
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
4 [5 N8 e7 x3 l  _( r+ S1 I6 ]                                else
9 \& ~3 C( R- j7 ~! k- U* C0 B                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
; N$ u; X* A( H1 k                                                to_str("in docking station: \"",?.~.name,"\""));                               
. z1 ]1 b2 V4 y. x( b, A9 Y                                end;  p/ V+ U# z* A  p" R8 @5 u+ P9 }
                        else1 E/ d: |  u% a: T6 M* `6 k
                                @.Destination := assignLObj[1,row];
! [$ w0 O5 L1 a9 G  O                        end;                       
1 [5 `# d$ W0 F& {& B/ C7 F5 @: U                        newDirection(@);
7 c! z3 ?3 D  ?" ^% G                        @.HasOrder := true;6 x: x8 b0 s4 }! j
                end;) j  I; V* N. T0 I2 w0 d- v
        end;
  g. C/ `( S) E* Qend;        -- of the method
  b- @* j: i. H3 j4 P9 ?
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 # B4 h) G5 T# W" [5 f% e

- L, o$ Q$ @8 u  S; n# a' Z3 P这是AGV_putin中arrive的method。* n; h  ]( w3 e6 w
' X, w1 x  c  Z" b' n
当到达物料速度越高时,这个报警更多,1 K% n; B! Z9 T. X/ h6 B
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
; i4 G! W6 |! Z0 e程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?9 v6 b. ]7 B0 K, A

' |( m0 G! i4 R6 T" r% x3 O另外一个小建议,就是move,所有的move都可以这样1 _: e& f! \6 q2 t( v5 E
if not move() then debug end! y: p5 R* l3 Q8 B0 d4 B. [$ i! Z
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。- b6 Z, a* s1 a; i
plant simulation中的free libraries有AGV模板,
1 d, W% \/ {/ v/ D里面也有案例。
8 d, |; f, ?, e' `) K: D/ B$ ]5 n我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。) U) U2 s$ ?: Z$ R+ `$ E

7 V: o5 T' W! c* S+ {我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
) |' e; I) u" ~* M! v7 e. ?
0 w1 u1 _5 c+ l" s+ l那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
% m) c& n' X6 Y- ~* e4 p- c( o这是AGV_putin中arrive的method。2 Q$ s1 P, `( V5 i4 Q# N' y
4 {6 R8 U. _. [1 L3 b+ J9 V, Q
当到达物料速度越高时,这个报警更多,
1 w& M0 Y8 o) }; F2 ?7 I) \
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 09:28 , Processed in 0.019881 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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