设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5412|回复: 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 e: X/ x& v% w/ Q, U/ ~; B% X
*/
2 P- m7 s" d$ R3 Dis
8 ?# Z5 {  Q+ B3 r        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
4 p1 B  G4 H8 u7 i2 G# n& b' ?do- |' I( }  |1 ]) m
        Lan := rootfolder.Internal.Tools.AOLlanguage;: i. r- X+ G" G* Z; }
        if current = @.Destination -- else return
( P7 w- s) x5 U* m3 j6 b8 O. M. T* [        then
& d: [$ y3 J( U, M                @.Destination := void;
) d# M: O# v, `" y8 ?                if @.occupied then% C2 g) t/ @' d9 l
                        part := @.cont;7 ?- n! T% ^* ^
                        @.transpOrder := void;
" @4 ?$ z( g6 B2 W; g, \% t- D                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,# Q* q' F7 Z* F; a. [3 q4 x
                                @,root.eventcontroller.simTime);) \5 f+ S8 b* Y' ^7 h
                        @.HasOrder := false;
/ D+ K4 ~4 @* N; W                        @.DrivingHome := true;& z0 |/ t& \0 K/ U: C
                        rgManager.tryToStartTransOrder;, V1 b: e% b! G+ o/ P) n
                        if @.Destination = void9 z3 S% H( u1 h* V
                        then -- no transport order for vehicle @* T0 i: b0 o2 b5 O
                                @.Destination :=
$ z* N- l0 E% {4 p& ]                                rgManager.nearestFreeStation(@,track.~);% X, B# x# \0 Y2 J
                                newDirection(@);   # K" F0 D. G) Z: c0 F" [
                                if @.Destination /= void then) G+ o7 f3 w0 x: N5 ]7 }& k
                                        @.Destination.NumReservation :=
/ y' z+ R: P8 D                                        @.Destination.NumReservation + 1;' ^) }1 N+ ]- B) Z) K! U
                                end;
1 K( f+ W9 E" C1 @/ `3 e                                @.CurrIcon := "drivingHome";/ I6 f- i3 `3 Z; \3 m
                                @.DrivingHome := true;
- D0 `7 I" R6 _                        end;
- H" p+ P9 a* `                else -- the vehicle @ is empty, both vehicle and part are in the same dock station% m4 ^$ k& b( L; ~9 g5 i7 d
                        part := @.transpOrder;
# {# i, {( j- y                        part.move(@);-- load part1 z9 S$ v2 m9 x: h
                        @.CurrIcon := "load";
2 g' S9 S7 g( k5 O% |/ `/ {                        GlobalDistObj := part.globDestination;
! {9 |8 l. l4 e+ v5 s" o                        assignLObj := rgmanager.rgAssignL;
$ D/ j* x: ^7 c, u                        row := assignLObj.getRowNo(GlobalDistObj);- C0 n# N0 N6 O3 N1 \( q) V* \
                        if Row = -1 then -- since 703 \4 }: \! v5 P( A5 ~  B
                                if lan=1 then
7 o: d1 ]. R+ a8 H* F, v                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
  z( t* J! F" f! o) R! N& N                                                to_str("in der Andockstation: \"",?.~.name,"\""));
1 K/ J3 L% ^/ Z0 P$ R' L2 X, T. `                                else9 ^# {: S1 J0 M4 D8 b( b# P* ]" J
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
( d5 \7 e1 I7 M+ p* _% h: F                                                to_str("in docking station: \"",?.~.name,"\""));                                - m' K% A; n! y( ^2 q( _
                                end;
" ?$ ^: H( V- p8 m0 a2 `  J0 [6 O                        else
, c$ y' k& }$ O1 @9 n5 [* a                                @.Destination := assignLObj[1,row];
( k# Y! j! N  P9 h1 q; g$ E" |* g                        end;                        2 `& |! I8 I/ g, b* y
                        newDirection(@);
; F& S( O6 M# t+ X$ ?3 ]5 Q3 M                        @.HasOrder := true;
, a' a2 }2 |+ q5 \  Z' A- Z                end;0 [* k" C2 s4 x& I& [6 J% D: ~! s
        end;
8 ^$ `7 d5 Y3 j: p% |: }  k  J) dend;        -- of the method
- p: k4 D( A/ ]5 Y9 j4 g8 L
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 , x' ]0 S8 l" A5 W" P
* v$ V/ U9 f( d0 B2 K/ X" C
这是AGV_putin中arrive的method。
" A' n9 w4 |/ L* l
. B/ J" ~. J: D+ ^! s当到达物料速度越高时,这个报警更多,5 T$ V  T* p* N
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。; z; B- `, ?/ M
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?' E& z# B  f' f2 L
; @4 |6 X( H. Q4 {
另外一个小建议,就是move,所有的move都可以这样; ~% c/ B0 D. A* j( ]- h5 v
if not move() then debug end9 X/ S& b; n; n; A
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。. d+ [: k% m" ~  X9 U
plant simulation中的free libraries有AGV模板,* V' k4 M3 @* K0 {5 ]( g
里面也有案例。& ~# T, L6 O- Y; q! m0 `9 M% T1 f- T
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
6 a3 ^; u5 b4 k+ {" ~6 ~
/ F  q3 O! W+ o0 W9 L6 [/ {, \- S我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 / F; Q3 [  y; M2 d: h' U4 O# M

" i9 {& `5 b; T- j2 a那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
/ A7 H0 ~, w, ~* ^* Z  n这是AGV_putin中arrive的method。) w5 B9 ], s8 c, u2 a- ~$ }& C9 ?( H

* x/ N# {% w  U: Q当到达物料速度越高时,这个报警更多,

: C8 }2 D7 R+ G, m2 h' P另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-11-21 21:26 , Processed in 0.024549 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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