设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9128|回复: 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'
; ~8 Y$ s; U2 m& e9 q*/
' X4 t% @3 Q" s# ?is
; Z: S. `9 J1 I/ X2 r5 n' h        part, GlobalDistObj, assignLObj:object;row,Lan:integer;5 z& ]: T+ g+ P. E( R3 m+ M, n
do/ P- t2 h) }2 f1 O
        Lan := rootfolder.Internal.Tools.AOLlanguage;' ]" u# ~- O2 S/ |9 V1 t
        if current = @.Destination -- else return9 x% m6 _' I. K0 u) q& E
        then
5 F1 s* ]5 D* a                @.Destination := void;
2 }* m) W- |* D5 w0 V4 j9 }                if @.occupied then
- [* [: q# @" f2 t/ g) P, D                        part := @.cont;1 c% w5 z+ W# X' b
                        @.transpOrder := void;
+ e+ R$ F- i8 n' Q                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
  F4 h' g& u# O- P! j8 M" K- |                                @,root.eventcontroller.simTime);
2 a& ~0 W9 |( m                        @.HasOrder := false;
! }  }4 e/ M: z9 r                        @.DrivingHome := true;! M6 D  i' F6 Y
                        rgManager.tryToStartTransOrder;
7 H8 V4 `$ h1 ?# i/ u                        if @.Destination = void' F* l0 X& ~" p' s7 [" r, {& d& p
                        then -- no transport order for vehicle @
# S% h5 ]  F* T( }, C- m                                @.Destination :=
" \0 I1 D0 a! z4 e                                rgManager.nearestFreeStation(@,track.~);, \6 [* A3 @1 J0 [
                                newDirection(@);   
2 [1 U: z3 D  y: K3 R3 s                                if @.Destination /= void then8 h: U6 z+ Y  w' }0 o0 a1 \: {
                                        @.Destination.NumReservation :=
$ _7 H, j$ L' ]# o0 r                                        @.Destination.NumReservation + 1;) c2 j8 r/ @4 j- \! ?) ?8 O
                                end;9 W% @0 Z. b+ k$ o5 _# k
                                @.CurrIcon := "drivingHome";9 q8 k9 d: x$ ^+ t, N
                                @.DrivingHome := true;( K; h7 ?/ e# A) V
                        end;
5 d3 _! S8 F( q  T0 ]) ]% q                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
1 M) g) @! J9 ^& L1 C/ V                        part := @.transpOrder;
$ s2 b2 l: i) G: E0 r& y) |                        part.move(@);-- load part
4 w1 o. h$ V0 u2 P                        @.CurrIcon := "load";# f' o# E2 o5 [2 s# S) u7 E
                        GlobalDistObj := part.globDestination;4 y6 y- E9 Q$ e4 [+ m8 y# I0 y% k
                        assignLObj := rgmanager.rgAssignL;
# h2 d  S" E- j                        row := assignLObj.getRowNo(GlobalDistObj);6 E# ~/ h  K% s$ u
                        if Row = -1 then -- since 70
! C) v8 T4 I% I. \: l/ a                                if lan=1 then, \2 H2 V" H; [5 c0 i% ]# K
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
8 K- z- p; f& q8 t* o                                                to_str("in der Andockstation: \"",?.~.name,"\""));: y2 a' c4 N3 A; X% l( @0 l5 a
                                else
- E( P+ z5 O; O- {9 ?                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),! v- t& q2 r+ z4 R
                                                to_str("in docking station: \"",?.~.name,"\""));                               
! d8 @  [  y- n% d* u/ s. ~) l                                end;
! M1 P5 L( z- o                        else
. c. L. d' n  `# v* q                                @.Destination := assignLObj[1,row];
8 [' q) _9 ?. X2 N) Q' y4 O  k9 E                        end;                       
1 k* ^6 u0 M0 K' K0 C* m- u                        newDirection(@);! C- p) R6 x# s2 p1 W& D
                        @.HasOrder := true;( W2 Z3 y" E: T5 \0 G+ [
                end;
  ]* S! v, }* b: U* Y/ o        end;
. F4 J+ T4 }- P0 b$ T% Tend;        -- of the method
, ]6 S" Z9 ]# b- A4 Z! P% W
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 # p  W& G: p% z& m1 K0 k5 k
2 T6 O  I  ]0 U- m4 M+ v
这是AGV_putin中arrive的method。
6 J% b9 y$ W( c+ F- e" Q4 @  k3 H
1 \- A6 z3 i. a; t# C, a3 J当到达物料速度越高时,这个报警更多,$ \( V4 n( K0 w+ U& R: I3 ~
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。  i1 I, ^' E2 p$ O  E) S! R
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?, q9 W1 V* S1 c4 H

8 A3 @2 V1 a" B7 G: m5 y$ |: ?! t另外一个小建议,就是move,所有的move都可以这样
2 j2 x. Z# k" [4 p& `) {6 eif not move() then debug end; L( W- U( k& ~0 R* w+ ]
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。5 O" ?9 J8 K( f  Z" d5 q( h! I
plant simulation中的free libraries有AGV模板,
9 O; {9 a& y4 T6 a里面也有案例。  C- V: x1 m: L# Y0 K  C+ h
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。1 t" G  |  {; f6 A9 H

4 B) N  }9 X7 t+ _* `/ @* O我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
6 b; y# e0 p: F! M7 I9 ~# {' N# v% l, u2 w
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
8 G8 c# X5 q7 |6 G0 e' k2 Q! d: T这是AGV_putin中arrive的method。
& h0 X1 {: O/ w- e8 A
6 C4 ?. [# ^+ N) U当到达物料速度越高时,这个报警更多,
, Z% C% \" D$ f) B# ~& k" `
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-7-15 08:51 , Processed in 0.016492 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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