设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8168|回复: 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'
8 G( Q# j. x7 f8 V*/' Q  @) N! T! ^9 @5 i* L
is
1 d4 z$ N3 {$ F6 e        part, GlobalDistObj, assignLObj:object;row,Lan:integer;# h# b: R) v. _' |
do
% r' H& [* \7 c" t( s$ a% M% |        Lan := rootfolder.Internal.Tools.AOLlanguage;
& ^# O( c8 d) H7 q; `$ n% O) E        if current = @.Destination -- else return7 G( j  J( q; d+ J, O* j  \2 A
        then
7 K6 A9 c) j6 [, s$ d# |3 z                @.Destination := void;
. ?! p* I" o) j) b, A                if @.occupied then
3 r, j- P3 o9 l  b1 G, }+ h                        part := @.cont;, l6 V4 |4 X. x
                        @.transpOrder := void;9 J. e% Y6 b" a& O7 A# r
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,- ^$ [( ^% F: b5 N  i& R! h) {$ f
                                @,root.eventcontroller.simTime);4 i( m4 u2 H. |% T" d3 A7 m
                        @.HasOrder := false;
1 F- h- j  I1 a                        @.DrivingHome := true;3 T; X5 T5 Z, ^1 v2 q+ K0 Y' F4 Y) T
                        rgManager.tryToStartTransOrder;. f; J  K( t" s' c  |
                        if @.Destination = void; h1 w- w  I9 i( e1 k0 \- H' s
                        then -- no transport order for vehicle @
% ^6 w8 z2 i; d                                @.Destination :=
$ a4 x+ X% V( B9 l" }9 A3 N                                rgManager.nearestFreeStation(@,track.~);. X8 ?3 d8 s- C% T& u/ A( W& v
                                newDirection(@);   , h' ~1 D" N$ T
                                if @.Destination /= void then: o, m6 w6 k( L0 H
                                        @.Destination.NumReservation :=: ^: e3 ^4 C: W; f
                                        @.Destination.NumReservation + 1;. t, ~/ g8 F% n  n
                                end;
* i1 a* E: u. e5 h/ N/ Z                                @.CurrIcon := "drivingHome";3 ]0 q0 ?7 R# H( j. U6 b! ~  v9 }2 B4 p
                                @.DrivingHome := true;* f+ }' O6 `1 y
                        end;6 J) b0 Z) D# {( H3 R
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
0 ?4 ~0 S8 G" g/ c) }. I8 x                        part := @.transpOrder;; V& R: h. x2 j. }4 T! I
                        part.move(@);-- load part
3 v, s  e1 i  E! a" `, V3 a                        @.CurrIcon := "load";( z. C2 A$ S( I% ^9 u% |
                        GlobalDistObj := part.globDestination;7 v0 S4 y9 {4 l8 Y
                        assignLObj := rgmanager.rgAssignL;
1 S4 ?" P' h3 j                        row := assignLObj.getRowNo(GlobalDistObj);# _5 ]: J1 Z2 S, F% S) A  U) ]
                        if Row = -1 then -- since 70
' F1 g2 j% q* p                                if lan=1 then' B0 e' \' s: q4 U* [+ \, g
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
7 Q: d; Z  v; q0 m1 s( N                                                to_str("in der Andockstation: \"",?.~.name,"\""));
' ?: L3 Y5 M  C" \4 X                                else
" C4 q9 C, w$ W( z# A# ]                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
) x2 b1 P, v6 h0 R$ s2 L6 @                                                to_str("in docking station: \"",?.~.name,"\""));                               
- x% \% m- Q+ g0 A% p. k                                end;
' O; f" W4 k- p5 d6 P% [                        else# P' S7 D# A: j% V3 r& j
                                @.Destination := assignLObj[1,row];
% @! Q7 o7 E2 }! b+ }) ]: a                        end;                        2 \1 I; i! r& m) K2 h' L+ a3 C
                        newDirection(@);
" ?' O, r  D2 J& J+ ]3 B4 O% A( {' E: p! n                        @.HasOrder := true;5 t. X- g+ k" a# H7 D
                end;
; s' N" b5 S- U. r6 }* u        end;" v/ {3 q: N2 m/ N
end;        -- of the method
2 W( T, z/ |( Q" `$ d! y/ h# n
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 & P$ X6 c7 r) N# T/ `' X: O
! O0 U+ t5 b- }( l  h
这是AGV_putin中arrive的method。
) Q* R% y. E2 M1 J( r+ \2 X' }- j
' u8 G$ c% w; D5 r. @" M+ L当到达物料速度越高时,这个报警更多,% F6 y& u" ~9 L) f3 C( }+ O
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。7 n7 c! D0 n  A. q7 x
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?/ \. F) R( V1 l1 K/ i( |/ c+ A' {

$ J/ q3 z% Q3 b' \6 s& {另外一个小建议,就是move,所有的move都可以这样# G! |0 _8 Y& b4 N3 h* N
if not move() then debug end0 x4 n# s9 u9 g) |# u( U
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
7 F# E/ P9 a7 g. j' yplant simulation中的free libraries有AGV模板,
: W" u6 e2 Y5 S' ]0 }/ E& N里面也有案例。
1 m9 H4 \4 `  \6 U: l7 O- t我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。  Y: b6 ]2 k8 l2 m3 u
; D# {. _+ @7 [$ ]' [& b9 M. K
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
# s# E$ u# K( l, M4 w
" s2 C5 r5 X& ?) j4 x0 ~( i0 N那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
7 ^9 p% [# d$ B这是AGV_putin中arrive的method。
$ u) F, W' M& E+ g  _9 x0 d1 a1 A( W4 k6 G; Z; _) }2 h' |
当到达物料速度越高时,这个报警更多,
" n4 H$ u  K5 U) B8 Y0 @: ]' y3 h2 {9 ]  W
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-18 19:05 , Processed in 0.017675 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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