设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7196|回复: 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 u5 {: V" U% f8 k
*/: T) Z$ a# L7 q, g' P* D" O' V
is
# Y5 {1 s/ b8 o3 x. x! V        part, GlobalDistObj, assignLObj:object;row,Lan:integer;) {5 Z3 {  K) z6 `) B- F4 ?
do
' N8 I7 F2 ?) }; M5 r8 W        Lan := rootfolder.Internal.Tools.AOLlanguage;, v8 t9 t3 B# O7 s* I, v$ C
        if current = @.Destination -- else return
' G% k9 o% {- o$ G- ~        then& X* X' a6 c2 ^) q
                @.Destination := void;
4 A$ r" K2 v- r5 [' A6 a* Y8 j                if @.occupied then0 d/ q: k. i( g
                        part := @.cont;
: ~0 Q3 \) t* {' N5 ?                        @.transpOrder := void;
) ~  ?8 X, v1 n- W                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,1 x" G0 Q) G9 K6 M
                                @,root.eventcontroller.simTime);
# \% M9 y3 W0 |: ?% l                        @.HasOrder := false;
; m8 P" i3 G# s$ N6 y. l$ e1 o                        @.DrivingHome := true;5 U. I, x9 `8 o
                        rgManager.tryToStartTransOrder;+ Z( t- j# T8 j$ n$ N6 Y
                        if @.Destination = void
3 o8 v: Q% \, h( u4 C9 j                        then -- no transport order for vehicle @
- }& d( A' [1 e! p; R/ {                                @.Destination :=3 n! y2 k7 D* [, @7 \+ C2 L
                                rgManager.nearestFreeStation(@,track.~);; l4 T$ V) C8 i) J7 k/ s7 S- F( |
                                newDirection(@);   % }3 P: U2 S: F9 A/ t
                                if @.Destination /= void then; k' D# Z9 D2 T& v" s
                                        @.Destination.NumReservation :=
' z  `9 T7 m7 ?3 Z" x' J                                        @.Destination.NumReservation + 1;5 l/ i; d+ y2 A4 |. L
                                end;
4 M' L9 R* h& E* C' n1 Y                                @.CurrIcon := "drivingHome";- ~  w2 A- S+ p
                                @.DrivingHome := true;
% v/ n$ V' z/ k2 t" J7 z, q% [: F                        end;
* W6 ]  Z9 D$ i4 A& \" X                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
; W! V9 z9 ?$ S& T$ S: q                        part := @.transpOrder;
) s: \& ]$ T9 q9 |: j                        part.move(@);-- load part
- h+ n. C6 W: [! H0 t+ n! {+ Z                        @.CurrIcon := "load";: J' X5 f( s& R& L. \
                        GlobalDistObj := part.globDestination;4 o) ~" I! S8 f& _" t( V! s" h
                        assignLObj := rgmanager.rgAssignL;
" V% \* w( n3 c' W9 b: t7 N                        row := assignLObj.getRowNo(GlobalDistObj);
( ~1 ?8 N! J) _                        if Row = -1 then -- since 70
& M2 ^& j5 E( J9 n- N3 \; z                                if lan=1 then
: B0 H* l" W6 a: H/ {7 I( i                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),1 L+ O: f& C) \4 O
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
3 E, [2 O6 D3 O9 w+ O                                else  e" l# q0 u' ?& d+ s
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),2 Y2 k. A& z' w$ T* F
                                                to_str("in docking station: \"",?.~.name,"\""));                               
; D9 U1 k  q  l# Z                                end;
) F% ]% ]: V& |                        else) s) T6 g; H* x+ v# h
                                @.Destination := assignLObj[1,row];
" }" a* |4 O7 t                        end;                        . {; u  l/ R3 Y( \
                        newDirection(@);6 ^, \% B( I7 q; g  S3 l9 r+ N
                        @.HasOrder := true;6 e$ e! H) B5 g' ~/ ]# c4 Z
                end;
1 S6 a3 {- M+ U1 Y/ j        end;
$ ^6 A7 y4 }# R' ]end;        -- of the method1 j3 F. _. e/ v) o; b
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
. K$ |) I+ ?8 o2 V4 y) q9 u) h! x$ i* h6 Q0 z7 g/ X
这是AGV_putin中arrive的method。# `+ L3 \! J3 _% l' H7 c

" v$ x1 d* R2 q# d* c0 c+ I当到达物料速度越高时,这个报警更多,
7 m- |8 G* o$ ^/ w. i" m可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。* R. b( x+ |2 q. `# F. R+ V
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
+ z# P6 I: Z4 ~, t: b: B7 K" h# I/ |
另外一个小建议,就是move,所有的move都可以这样% P" P# G( V+ }" [3 x, Y
if not move() then debug end0 }5 _. Q2 M0 p) P# Y& \
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
" O" S3 \" C2 q3 j, A; dplant simulation中的free libraries有AGV模板,( K6 N- p9 V" [" @% f, H8 J3 ^
里面也有案例。
% \. Z& e: a( C7 v6 D6 q我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
$ }( Z% W* T2 _$ F) ]2 x2 O: H: j. r3 h# U$ M+ S0 Z
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
; e/ H/ o* m% @1 r/ u9 }+ H
' k# P: y( B6 i# R% i2 Q那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
4 q$ S) }( d0 u4 p1 W/ G- i- j# R1 I& X这是AGV_putin中arrive的method。  p% {6 f, g' X$ q! D9 {
0 L4 `6 [. x0 Z! H7 v' t- H$ i
当到达物料速度越高时,这个报警更多,
2 D7 g/ H. P0 B
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-26 10:07 , Processed in 0.022371 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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