设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9267|回复: 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'& n2 C  G7 d1 @6 ~7 b$ N" j& u5 O
*/
8 S, m0 m! ~' Cis6 @4 s$ G* I- [1 s$ k" `+ Q
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
( b& [" w2 K; `% L6 Mdo
& _5 P3 D! k* ^) S% D        Lan := rootfolder.Internal.Tools.AOLlanguage;
7 P8 \3 b; {8 Z. P* Z3 F        if current = @.Destination -- else return
' w- |8 k8 M% U3 h8 ?3 T9 A! i6 p        then8 ~* }( |: O$ V0 D
                @.Destination := void;2 t1 d3 _0 p' m/ J
                if @.occupied then
* i( }0 {0 B  @. x                        part := @.cont;
; I  T& c. r1 S; m                        @.transpOrder := void;  {2 }. s; L* o: ]5 f
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,$ m4 {  f; t8 d5 ]" V4 h
                                @,root.eventcontroller.simTime);+ O9 l: q4 L/ m! ?3 ^+ Y% O3 f4 ^
                        @.HasOrder := false;! }' j; Q% J/ K6 z8 g: j2 O) q* E; a
                        @.DrivingHome := true;
' V2 V7 I+ ?4 q7 `+ X" D) P" o                        rgManager.tryToStartTransOrder;3 S  w. _" l0 N+ R- n
                        if @.Destination = void
8 f$ z8 @$ _' v                        then -- no transport order for vehicle @  }) t" q9 b$ L5 q9 v/ k  B% x( w3 j
                                @.Destination :=
, o1 o2 k% Y3 ]- i! X$ H0 ]                                rgManager.nearestFreeStation(@,track.~);
# d$ \9 h# E' R% v" @+ C: I2 c                                newDirection(@);   * s, d# `1 T$ X0 ~
                                if @.Destination /= void then" F$ q3 \% V* _
                                        @.Destination.NumReservation :=+ N/ I! I  f& l
                                        @.Destination.NumReservation + 1;
' m5 R7 i3 h& s% D; X) D                                end;) d/ f2 z8 T* V' W
                                @.CurrIcon := "drivingHome";
4 V+ y" t9 X: c. b% K8 T6 B! L                                @.DrivingHome := true;+ ]& {2 R8 Q* q$ T
                        end;, s5 m) ?# }  k4 l. M# v
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station( Y: ^- S6 E/ ]% z) E
                        part := @.transpOrder;
. T* t0 g2 P# b+ v& Y; B# t3 d  p                        part.move(@);-- load part
+ r6 E  c4 b3 X7 t  w                        @.CurrIcon := "load";
& x* V' C$ c0 y: |! L3 y6 n                        GlobalDistObj := part.globDestination;1 e! ~' t6 K8 ~7 l+ Y! L% p
                        assignLObj := rgmanager.rgAssignL;( }" c- Y- V) i! _8 b; m
                        row := assignLObj.getRowNo(GlobalDistObj);. ?0 ~/ ^+ E! M5 k+ O7 n1 Z' o
                        if Row = -1 then -- since 70
7 D+ i3 \2 \3 T4 D                                if lan=1 then
" |* U  k: Y" l. q5 x  ^                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
, ~7 j+ m1 ?' x- I2 n, p  F( @/ x% q4 r                                                to_str("in der Andockstation: \"",?.~.name,"\""));
7 @) Z% l$ ]5 k( }: ?5 S9 q                                else
8 C/ E4 m, A3 a& T& l/ C                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
7 Z0 `, q. v% H9 P0 s% o                                                to_str("in docking station: \"",?.~.name,"\""));                                % R& D4 X, f3 L; k/ n
                                end;" c+ ^! {* g& m' A
                        else
6 o" q! Z, ^& v% x4 C6 ~                                @.Destination := assignLObj[1,row];+ f( C2 f  ?' V* t0 \
                        end;                       
6 F5 O; p2 ^5 F$ r& c( y. Z# z7 }                        newDirection(@);
1 X  P" j; b6 B                        @.HasOrder := true;& M6 N; K$ {2 c% _* ^
                end;
7 W* E& Q! ]- g6 _        end;
/ [, i* j) i5 k( [end;        -- of the method
) w  O. ]- f+ Y5 s" X  f/ T' o
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 6 O  q1 {8 d, A; e) L! U

0 X1 G2 [- l; {# k9 r这是AGV_putin中arrive的method。
" H; ?1 {' s# h: A: N& Z9 i# Y; `- F" l. r3 }. C
当到达物料速度越高时,这个报警更多,
2 h- Y  V* n' C可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
6 E. A" n! E/ b" f" }' @程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
0 k) j  Z( S) m, o; z3 [9 x7 k0 Y4 Z
另外一个小建议,就是move,所有的move都可以这样, _3 }! O! s2 D  V- \, K8 M
if not move() then debug end# A0 V' c- w: `
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
( k" K9 k  {) {; p* u% c7 L* \- b* zplant simulation中的free libraries有AGV模板,
; a! q1 v8 E% T里面也有案例。% `' e/ ]- `+ U/ [, l; t5 v/ y' Q; k
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
( a$ _2 L$ ?6 W. W( l2 [% ~8 p% Z0 t4 P& Y8 X: E
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
7 A2 B8 ]0 \; i% ~0 L3 P7 }7 T2 s7 I4 A5 q- X. L$ f
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 ( g$ V9 T6 E& E6 ], U$ a
这是AGV_putin中arrive的method。
6 i  y8 [% f4 O& _
# R: S# z' V( e当到达物料速度越高时,这个报警更多,
! r0 V! H2 D1 k4 [: D+ _- S. C
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-7-22 02:15 , Processed in 0.015330 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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