设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8117|回复: 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'
2 M/ A; L& l& |: l9 d$ C*/( m# z) b4 E9 h
is
$ T, o2 t( j, Q. ?3 ~/ N' j0 _        part, GlobalDistObj, assignLObj:object;row,Lan:integer;) h, W/ c4 d9 ?$ O0 H
do% V8 W& ?) [! u1 `2 Z/ ]7 N7 x6 `$ D
        Lan := rootfolder.Internal.Tools.AOLlanguage;6 j' `7 j0 b; Y6 B
        if current = @.Destination -- else return
% t( Q+ ~0 ~4 R8 ]( l        then
; k7 M  m: a' ?+ N# Z! ?: [                @.Destination := void;
6 R0 H  g0 a1 E5 X( `9 o* q5 E0 k" k                if @.occupied then* |4 v0 c" ]) w) Z
                        part := @.cont;7 u# v+ e( J) s3 I* U0 ]
                        @.transpOrder := void;
6 J' o$ o2 B2 c2 r2 O                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
' k0 N) Q$ |# V                                @,root.eventcontroller.simTime);; q  f# V7 s# q) t7 _, Z  Y# L' X1 S
                        @.HasOrder := false;7 l) U% c3 U: j% t
                        @.DrivingHome := true;
0 o' ~" K" e0 {  e" o: u% l4 J3 N& _                        rgManager.tryToStartTransOrder;* w8 A! ^6 z* ]' ^: A2 x! l' [
                        if @.Destination = void& q: x( L/ u: p8 V! M2 O6 X3 m
                        then -- no transport order for vehicle @: u7 j' O2 A( m" h* ]8 X
                                @.Destination :=& Z! H; C1 I& Z* A7 S
                                rgManager.nearestFreeStation(@,track.~);
7 ^0 O; L+ Y* b% S' m) E                                newDirection(@);   ' C" N2 l/ s) F+ }
                                if @.Destination /= void then. E  h2 Q1 c* C' {
                                        @.Destination.NumReservation :=, `9 t6 d* q+ |. M
                                        @.Destination.NumReservation + 1;* {; h: S" Y" k0 n. Q
                                end;
- z" |* i' J) G& B( `, i/ ~8 `- _                                @.CurrIcon := "drivingHome";
0 ?7 }' T4 ?2 a; }) [9 g6 E* u+ V                                @.DrivingHome := true;
" E0 `2 |% J5 ^3 x                        end;* P- y: _$ \' y# d5 `
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station9 U; t3 A) ~. S' ~3 r
                        part := @.transpOrder;
2 \( ^% s% x" x. r* j7 k  Q, a3 H                        part.move(@);-- load part
7 w4 v4 V9 j* n. [                        @.CurrIcon := "load";
! `2 b2 U$ {( _, X                        GlobalDistObj := part.globDestination;* A( l7 ?3 {: ~8 Q8 r4 B7 s
                        assignLObj := rgmanager.rgAssignL;+ k6 K( M+ ?) k1 n2 u
                        row := assignLObj.getRowNo(GlobalDistObj);
& D; Y/ X$ P' B* o% O                        if Row = -1 then -- since 70
% e1 ~) {$ F4 `, \* g$ L! F                                if lan=1 then
9 f5 [1 X' a5 o                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),% L9 N2 D: H% N7 l! O8 }
                                                to_str("in der Andockstation: \"",?.~.name,"\""));: j3 K3 ~6 i: i  E8 P# Y& j  H) g
                                else
; }$ n* Y- C3 c# }& b0 L                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
: p2 h2 c& w" h% G                                                to_str("in docking station: \"",?.~.name,"\""));                                4 ]- z0 t6 j) E  h+ M6 A* z
                                end;
. }6 d/ ^4 \( {- H0 z5 ?                        else
2 n! E) ^* K! M/ P9 J9 Z                                @.Destination := assignLObj[1,row];
3 H4 S+ K9 r; C' P! p                        end;                        , y9 i" O% E+ p  M* W
                        newDirection(@);
' d' p6 _: M" R2 f                        @.HasOrder := true;
/ l& o# G: J6 ]4 d* I                end;% q8 a& P2 ]" G( h4 r- G3 P+ M
        end;
  x! S* |* z& \4 d- c" vend;        -- of the method
( u) T0 d* D% ]$ N/ ~! d7 V
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
+ i# g5 k0 N6 |' Q8 a' X, P, V7 o; i5 I! Y9 O" g2 [* i
这是AGV_putin中arrive的method。$ }' r( \! K# v

5 s6 k; k+ s- ^2 A% ~2 I当到达物料速度越高时,这个报警更多,' f, q' T1 F! i, C! r1 X( h
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。2 A$ P% J5 _* q# `( @9 ~8 K
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?3 `8 M9 f- r; r# a, f* r

- c7 ]4 }: g- k% Q另外一个小建议,就是move,所有的move都可以这样
) }4 `9 T0 F+ l. U1 S% mif not move() then debug end0 {1 u, G* T. L5 B
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
1 E' D( N- n1 N0 dplant simulation中的free libraries有AGV模板,- M9 g1 _( F9 r6 W' z
里面也有案例。- G& D. n! @$ G' r
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。; W1 n& h( I* U
! J# B, `4 v, Y# Y& x( I# T& V- u
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 & V! G( a4 {) K0 F
( f$ P5 m0 D  Y' J
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
' ?2 e" x% N' ~* \6 n- V, e! D这是AGV_putin中arrive的method。
# a1 }- v& V' m% B/ F1 G6 x' G
% |- [9 ]9 i6 t' G" |3 E5 N当到达物料速度越高时,这个报警更多,

& _2 ~9 M& {; b; m, X4 _另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-15 16:22 , Processed in 0.017939 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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