设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9236|回复: 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'" v6 N5 H' G7 O! o9 Y
*/
9 Y+ C* s, v2 [' i0 N2 His
" Y% d- p# q* [1 x. [        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
5 G( [7 `& S5 V# \do
7 {; D) F$ ~; W4 S$ H' z        Lan := rootfolder.Internal.Tools.AOLlanguage;
" @9 K+ G2 I. I% J5 Y4 R% _        if current = @.Destination -- else return
9 L( v1 A% }" v' i4 R9 |1 e9 w3 Z7 X        then
8 B: e" Y3 ?4 ]                @.Destination := void;
8 y6 Q8 E* r, Y- w3 F  T" T' g                if @.occupied then+ Y, T! v( b# b/ E8 M3 R' u- }
                        part := @.cont;* n: e6 L: G, _# F7 \  p8 ^
                        @.transpOrder := void;4 p( k$ K% n) H
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
8 v0 Y( O4 O0 G: I                                @,root.eventcontroller.simTime);! |2 I  `7 i! ~5 _9 A) y6 q
                        @.HasOrder := false;
; s- m$ p/ u4 E$ l, X                        @.DrivingHome := true;
1 q3 c3 D, ~# ?' V  o6 [                        rgManager.tryToStartTransOrder;/ {5 }6 u( }5 p
                        if @.Destination = void
# ^" p4 Y6 R! c9 w; y+ I                        then -- no transport order for vehicle @
. B, y) b3 i; A  R! J                                @.Destination :=
/ k4 T6 m8 d5 V$ J+ t! X! M1 G                                rgManager.nearestFreeStation(@,track.~);
# [# K* [, [+ I9 P  @0 w                                newDirection(@);   - q* W" c0 ~* B# v, m8 e
                                if @.Destination /= void then
. r4 @. Y0 q2 h+ a( k: L                                        @.Destination.NumReservation :=) V1 e1 G1 F/ |7 A/ t/ x6 e
                                        @.Destination.NumReservation + 1;" ~8 {* H) ^- d( B8 S
                                end;
5 Y7 ^" S/ s7 i$ j  g                                @.CurrIcon := "drivingHome";" X( h9 b. j( d# l0 l
                                @.DrivingHome := true;
4 \3 r( ^# U# @3 d                        end;% r- B& J; f, I/ H8 R9 g5 e
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station8 P6 W+ _, K/ y
                        part := @.transpOrder;# i3 Y! h: _; E7 ^* e
                        part.move(@);-- load part  K% P/ q% a& Z+ w: g9 N- s
                        @.CurrIcon := "load";
% |8 |. h/ j7 \                        GlobalDistObj := part.globDestination;5 N& d- U+ w7 B/ e
                        assignLObj := rgmanager.rgAssignL;/ L2 B0 g: U: ~- e- X$ x
                        row := assignLObj.getRowNo(GlobalDistObj);2 p3 o) K+ H3 ?; N% b/ x5 A
                        if Row = -1 then -- since 70
3 j6 B. E# C; y8 @' p: L                                if lan=1 then+ _6 P) \; R/ _0 u% k" X
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
; @7 X& e% D. D% _, D. `                                                to_str("in der Andockstation: \"",?.~.name,"\""));& ?6 V* F2 R: h8 M& x4 ~# v2 [
                                else
6 p+ t% M  L  Z5 ]7 B                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
  Z: t: v* n0 ?- A" s                                                to_str("in docking station: \"",?.~.name,"\""));                               
" Q0 Q4 L' J+ D                                end;
6 @( j1 T7 E$ H; [1 F9 i                        else! d& ^# P' J% f6 _1 n. m; o
                                @.Destination := assignLObj[1,row];+ `6 n0 n8 W9 T8 [; P9 V% k
                        end;                        1 R7 @, r; W  T5 ^5 c, s
                        newDirection(@);* s7 a; l; q' ~
                        @.HasOrder := true;
0 F& y' u# J+ I6 [+ Y' k( ]! N                end;* s% g. x! X# I( n/ b+ u8 e
        end;
" e5 s  O3 M$ J$ V8 ]end;        -- of the method6 x3 o, Y7 {- G6 y2 v! ]  j0 D
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 * D; o7 T& b: v( E% R/ _9 Y( y

! G8 ^5 D# S3 d5 j这是AGV_putin中arrive的method。
8 m# w  g( H7 b* `/ J! g% M' q! B/ m- R" d% c( D
当到达物料速度越高时,这个报警更多,$ c" i  I% v$ `6 W) F
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
2 V+ H0 }( T9 q3 A程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
  P/ X/ }' g' r) w& c* Q, ^# M, m4 j4 V' ?' g* V1 k
另外一个小建议,就是move,所有的move都可以这样& J, _3 E3 E% b1 B
if not move() then debug end# E5 p! U, R' j1 ]/ \# H
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。+ }: E! H" Z( c3 r- ]8 j6 v3 {
plant simulation中的free libraries有AGV模板,2 L6 O: ~' D- b: t! a, `0 H
里面也有案例。
/ F7 h; W' Y% ?2 Q8 j我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
: n$ \3 q' p; `+ \' A  G: C( }  D4 R1 k
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 , P7 O1 X/ Y/ p1 q  Q+ A

* _5 e1 P) ~  w- L+ k1 ]那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
8 Q) {! i6 I& R9 M7 G这是AGV_putin中arrive的method。- D- `" r: X8 S9 K) p" ^! d. l

: X  u6 b8 F- j' M  E) [2 _当到达物料速度越高时,这个报警更多,
: y  j* p  L; z; G( O$ l% J
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-7-20 16:48 , Processed in 0.014900 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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