设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7884|回复: 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'  M6 s0 h4 q. U
*/
( v& g; x, ~. z6 ~! Iis/ I: z/ \1 C9 t" k4 z1 u
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
$ z- c. L3 i2 k5 ndo; l: m2 Y/ G# T# ^( I3 e4 J
        Lan := rootfolder.Internal.Tools.AOLlanguage;
0 W( W0 T# v6 q2 w! l- J, }        if current = @.Destination -- else return
; T4 e' `- N- f; i0 U        then$ ~3 m9 T0 p2 _1 S$ D8 r
                @.Destination := void;) Z7 p* ?  Y; n; d# @
                if @.occupied then8 N; |5 S% D3 w: ]4 Z5 G! B# A  }6 q
                        part := @.cont;2 O7 o  w2 K. k$ x+ K0 U
                        @.transpOrder := void;
  J2 Q5 L, s, ~% N' G9 R& ?. N                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,) u7 W9 }. j7 j4 b' }5 ~
                                @,root.eventcontroller.simTime);
/ u  u+ }1 C) G& I9 k) F# I                        @.HasOrder := false;
' F$ W  y6 L5 e$ }; h5 x                        @.DrivingHome := true;! Q& u, u+ c1 _* c: M- W' k' U
                        rgManager.tryToStartTransOrder;
, K+ w# k3 D: _2 J                        if @.Destination = void
* Y9 J0 o$ U0 y1 @( s& I                        then -- no transport order for vehicle @
' k% S  L; r& N, I                                @.Destination :=
# P& s- X% w! X0 `                                rgManager.nearestFreeStation(@,track.~);
3 ], Z$ S+ O" j: g* H# {% p3 c                                newDirection(@);   - x9 `, D2 r8 x( p
                                if @.Destination /= void then, k4 Q( L( O8 r. X4 i+ Q+ S
                                        @.Destination.NumReservation :=
& A7 s  ]/ v# O: ~                                        @.Destination.NumReservation + 1;
$ b! c+ {4 u1 y% r1 _% d                                end;
; f% ^+ x" a1 |5 Z4 Y6 a. C                                @.CurrIcon := "drivingHome";! \$ g# E2 A4 k$ }; ]/ v
                                @.DrivingHome := true;! L2 j% x6 t% Z& O$ N; W
                        end;
' X' f3 G& h$ V. X. n# H                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
$ i% |( }4 b1 t, ~8 w# n                        part := @.transpOrder;
$ O' a1 A% Y/ g) D2 `' B7 A                        part.move(@);-- load part
+ A: e5 K) @' r1 S/ x                        @.CurrIcon := "load";
' z; ?& ]* g8 j5 T5 ?                        GlobalDistObj := part.globDestination;
8 W0 b9 b- @" v4 F, Z/ ~4 t                        assignLObj := rgmanager.rgAssignL;
; H# A! z# J$ H$ b- I9 \2 h                        row := assignLObj.getRowNo(GlobalDistObj);; \3 e) {0 P7 F# Z6 r  x6 Y
                        if Row = -1 then -- since 70
, h* `8 Q7 i! j5 i                                if lan=1 then+ \% ]( n; \  O5 [- E! k
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
' ~6 C/ g2 X4 @3 L  _2 ?$ A2 N* b                                                to_str("in der Andockstation: \"",?.~.name,"\""));' W# M0 ]: W. H! \) p& b! m& k
                                else) T. \" X  l) F2 C9 V
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),5 R2 i9 X4 R+ q3 `
                                                to_str("in docking station: \"",?.~.name,"\""));                                : S5 _! I: i: Z. _! e. H7 H
                                end;7 Y9 H3 T) {! x& u6 M* K
                        else0 x( Z) K! Z2 A* r
                                @.Destination := assignLObj[1,row];; P, K! k3 w9 Y
                        end;                       
5 M" p6 A' m$ H8 _% u: d4 Z! w                        newDirection(@);
. J" j: J8 C$ R- j" \8 T                        @.HasOrder := true;
6 j4 ?3 K4 R9 i                end;
$ G+ z! P8 X- u$ }! v        end;' X( d) D4 V- C0 \$ p
end;        -- of the method" ]5 D  o* q& a  x
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 9 z4 r( o/ T* b6 C

% S7 L/ k# Y$ `$ i这是AGV_putin中arrive的method。3 w" @  N/ f- [( Z; M

( J6 u" Y1 O# Y$ i' t; w* g7 K当到达物料速度越高时,这个报警更多,
6 y6 e0 j; G) a可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
* g) S4 {; d2 y) z) }4 l* o程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
5 a+ R0 ?- t# }* F4 g, }! T
9 X1 L) b3 P$ O% m  _  N另外一个小建议,就是move,所有的move都可以这样! [* s9 d- w. \# ]+ c
if not move() then debug end
" [. L$ k/ U6 [8 p% [这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。. v, g9 o+ Z7 I5 k/ h  [; [
plant simulation中的free libraries有AGV模板,
, f4 i. c9 d% ]8 q2 W* e里面也有案例。: y4 x# x: o, A% w9 s" d
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
; ^  G8 s, c# G3 i0 H3 q1 n5 M4 ^! W4 n
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
  s. f; B+ G' M7 N% _# T& B3 `5 v* v" Q1 j' K
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
# }! u: E- D5 i! E" u/ D' d这是AGV_putin中arrive的method。2 L8 _( t1 Q7 @- ^5 N% G! @/ @

# C7 v# p# F' j5 B# l' i, v9 Y) |当到达物料速度越高时,这个报警更多,
- N$ P: H# |6 C  ]! l8 F  p, F
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-3 08:44 , Processed in 0.019114 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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