设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9618|回复: 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'6 W% {6 e, s0 x
*/
7 E5 ~- a( t" _* X- w( tis
2 T3 B$ C3 N& w* Y0 x        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
6 D  z0 v4 z0 _2 o; N0 j' }, q* f1 \do6 n0 t# ~$ e2 h# F- n
        Lan := rootfolder.Internal.Tools.AOLlanguage;; }% Z4 U+ @# y6 C  b' x
        if current = @.Destination -- else return
" O% C7 q0 @& i( G- {# A# ?        then
  z1 W+ r1 `# J                @.Destination := void;6 P* o& c* g6 ?& f' v9 u
                if @.occupied then8 @$ ~# E! }* c" r: F. n! _
                        part := @.cont;
, f' N6 j( Z* X7 @( Y                        @.transpOrder := void;
% A' T% Q0 w5 q                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
  Q! P& ~, H( o: \; Q                                @,root.eventcontroller.simTime);& k9 J+ x7 P/ Q
                        @.HasOrder := false;
# b2 |5 N0 M' O/ c% V+ |3 [# {                        @.DrivingHome := true;
9 d) [* h1 m! C% [$ F4 k                        rgManager.tryToStartTransOrder;
+ ?% m& p- Y/ s4 Z$ \1 O                        if @.Destination = void+ |! h. x  n" R- z  w$ h
                        then -- no transport order for vehicle @! N6 Y$ C1 D8 F0 K% E& ?" T0 E
                                @.Destination :=; P; K* K* `9 X6 G0 O/ z5 p9 v
                                rgManager.nearestFreeStation(@,track.~);2 I1 L$ \. @$ s) |$ R
                                newDirection(@);   * Q4 f4 y1 R4 L, i
                                if @.Destination /= void then
* R% r! ^( ?9 K( U* T                                        @.Destination.NumReservation :=) x  [, o2 f4 E: k8 A
                                        @.Destination.NumReservation + 1;3 G6 S; X6 k1 ^! x1 O
                                end;
; J  H* C5 S2 l' L& o/ C                                @.CurrIcon := "drivingHome";
9 `$ X  P, e9 c4 H3 A: t$ B                                @.DrivingHome := true;
" m/ S% H' `: k- Y# Y' q' o                        end;
' V! e9 `* m9 `( J8 H                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
; K2 b! D$ t' A. P: U- O                        part := @.transpOrder;  i+ v0 D$ _% ]: `( x2 R
                        part.move(@);-- load part
" b) _# w0 Q' z! J9 i2 d  |                        @.CurrIcon := "load";) u1 u+ K6 @* R  \: b8 u9 C
                        GlobalDistObj := part.globDestination;+ `3 G$ F0 Y0 H) v0 T
                        assignLObj := rgmanager.rgAssignL;; g$ ?# L2 E/ H( H2 j" L
                        row := assignLObj.getRowNo(GlobalDistObj);
( J3 @9 T7 v0 U                        if Row = -1 then -- since 70, ~2 c8 o( D0 N" B# P  r
                                if lan=1 then1 x% F& _4 S4 z' `7 z2 k
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),8 e) t6 w% ?6 h  E+ t+ E0 O4 e
                                                to_str("in der Andockstation: \"",?.~.name,"\""));: |* ~. H4 u; A( G
                                else7 I* U2 ^6 }% z) c% k/ F% k, `! l$ ^
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),3 {5 i4 ?) O9 i
                                                to_str("in docking station: \"",?.~.name,"\""));                               
8 ?( ?" y: v! _3 J: m) K) A                                end;
, c* _  G+ _. J8 T+ g; }                        else7 {) L# P! Q9 Q; |
                                @.Destination := assignLObj[1,row];. t& ^2 \& C7 D/ k/ g( A- b! B  K
                        end;                       
* o& g. k  ^$ M3 X% c1 |                        newDirection(@);5 {2 H5 x3 ?! _) l* B. A
                        @.HasOrder := true;; I) L5 w$ X& y3 X
                end;
' q1 S  S! X; E2 P6 x( U/ D' r        end;- f( F; {. R+ N/ g, d4 A6 x
end;        -- of the method
7 E4 J# ]( C7 i) {- ~0 L$ H
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 3 x5 f! T9 m- I
  |& z( H1 h3 ?) [
这是AGV_putin中arrive的method。$ \5 `/ q: u7 N0 M6 Z; I
$ v: }9 j* h7 g& k9 p% i) d
当到达物料速度越高时,这个报警更多,/ F* f$ Y% H6 A6 X  V1 s1 P9 g  z
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。8 M7 g+ \; m- N2 E8 H
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?+ F; Y  `4 G2 L7 @+ Q" z5 b

+ t6 G! T, r5 I; ]" F9 I1 Y$ d另外一个小建议,就是move,所有的move都可以这样
( ]' @3 _0 R' W- Oif not move() then debug end
$ t- q% e/ @- i  o这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。) ^4 _2 {5 X  e; [: g
plant simulation中的free libraries有AGV模板,0 e) E" ?/ }3 K7 l% R
里面也有案例。& x1 }3 X0 E% Z% x: N5 y
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。# \( C" U0 P7 y
' U( k4 Y5 j+ _$ }: Z: S5 s
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑   H9 I+ i6 K* v+ M  S2 l# i

5 v6 l4 @, V0 H, u. g那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
: f2 _7 p# R# s( @2 p! s& z这是AGV_putin中arrive的method。
. ]- X. I: P6 Q8 }* ?7 F( y+ t* F
- Q/ ]+ M- `6 g# ~当到达物料速度越高时,这个报警更多,

- A# |5 B* C3 ^另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-12 04:07 , Processed in 0.018880 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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