设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6651|回复: 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'
% t$ O5 }+ w& s8 [2 P! n*/
) g( k  V; y6 I. u% Jis
+ l8 q& N. ]1 n% }        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
, G5 G: @" Y& P; N4 M4 Udo1 i/ K9 G* n4 O. R3 V! P8 Y
        Lan := rootfolder.Internal.Tools.AOLlanguage;
" \1 _4 b2 y" v0 e; u        if current = @.Destination -- else return1 I) F8 i% N1 Q4 l1 T
        then
, ]. D2 F% Z# a                @.Destination := void;1 n2 B* w$ j3 G$ t( W
                if @.occupied then
. v" v% B- N2 F1 O                        part := @.cont;) x  X- k; `6 B
                        @.transpOrder := void;/ D# w! K2 G' W1 c6 C2 ~6 W
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1," r$ h. Y1 Y, ^* C2 B: t
                                @,root.eventcontroller.simTime);. O' t$ m( b: S
                        @.HasOrder := false;
, p2 v' [# O. h1 b8 t4 \/ a                        @.DrivingHome := true;
3 |+ Y! G3 K9 Y7 I                        rgManager.tryToStartTransOrder;" `1 v0 \& e, m0 r# [
                        if @.Destination = void
2 n+ \; L8 q: M) |2 M, U7 k) e+ ?+ t0 L0 H                        then -- no transport order for vehicle @
3 u3 r4 t2 q( M" K9 z. }' @4 e9 t                                @.Destination :=$ ]9 |4 J9 w  S( [2 [
                                rgManager.nearestFreeStation(@,track.~);( k& c& z. o4 w$ ?3 q# ~
                                newDirection(@);   
* T; s( _' n: E. A$ K' ^; h8 O                                if @.Destination /= void then
# |5 v& U8 B- l+ Z2 f* f7 @                                        @.Destination.NumReservation :=
5 v- A7 g+ _9 U3 R                                        @.Destination.NumReservation + 1;
6 k) c8 V5 e6 ^                                end;
/ E( M2 K& Z, s+ a                                @.CurrIcon := "drivingHome";
! V" A/ Q9 F; k  [1 E7 v0 m  Q                                @.DrivingHome := true;; u/ ]* ?0 a( u
                        end;
8 t  C9 B! C  ], P' ~                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
  A' K( ]1 N! k; Y& y4 R                        part := @.transpOrder;
) `+ q# Y* H: X8 `; y* h/ `! L                        part.move(@);-- load part
% E6 F- p4 n# E8 N                        @.CurrIcon := "load";! g! [2 b8 P9 \) g1 b
                        GlobalDistObj := part.globDestination;6 C" K+ p, Z: Z: y1 b, z
                        assignLObj := rgmanager.rgAssignL;
: o1 f# T" Z7 C% X; ~. r8 W4 W- V5 i                        row := assignLObj.getRowNo(GlobalDistObj);
5 b5 D& Z( g( z: I7 c- S                        if Row = -1 then -- since 70
: E- ^, B/ z  M+ t, K! v                                if lan=1 then
/ ~5 @' d7 u0 V& a                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
3 ~' @9 {1 P7 d0 m3 J                                                to_str("in der Andockstation: \"",?.~.name,"\""));$ G- ]; [+ V( {. d
                                else
$ P1 k. z8 o4 F- n4 `1 y                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
# f) s% n) P- e4 e) ]8 l                                                to_str("in docking station: \"",?.~.name,"\""));                               
$ K. f, M7 v" u. c, }6 M1 H                                end;
4 Y9 T- {3 N' T( ~- }7 A                        else
6 Z" m! J6 X) d3 K. D3 R- `                                @.Destination := assignLObj[1,row];2 B, X5 @9 n& C8 |8 m$ i0 @
                        end;                       
7 R# N8 R* w! J6 D: l& y9 k                        newDirection(@);
* M9 f; g5 O7 J8 j. b# u                        @.HasOrder := true;
$ o& N( T: y* Y1 p& ^! ]                end;
3 C" X6 r, y  W3 ~/ n        end;2 L. E, r/ ?: ]# W( D* W
end;        -- of the method+ e: H$ b6 J( s; }  I) [5 i
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑   A* G% d& r' ?: M2 v0 h$ D

( y- a7 {" ]! S这是AGV_putin中arrive的method。
2 b3 m# u% ?7 P- n' d2 L. E
& W; D: p  O" E+ s* f# y7 N当到达物料速度越高时,这个报警更多,
' u3 Y7 F* w* y% a可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。6 ~  h6 L4 W1 ?7 l% w3 U
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?$ m0 q9 M0 U# l* {7 X4 u- x

$ Z+ H& {, T2 U! U& S+ M另外一个小建议,就是move,所有的move都可以这样6 K( A' h" x" ?$ v1 c
if not move() then debug end  V# R9 J: F& a
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
" W' D/ U6 }  Q8 g8 j" T8 hplant simulation中的free libraries有AGV模板,
; w4 F, R8 m4 ?4 \7 M; S里面也有案例。, k% ?$ |6 }8 S2 J
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。- W4 D9 U' N2 X8 T; l

8 L, y( [. O; d1 b9 F我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 / o8 p. l+ p) j- k8 N
! e& C7 I% u9 z2 r; \
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 # e1 n/ u# o! ^; n
这是AGV_putin中arrive的method。* {7 J, O* j% d" X7 p8 c$ y
- g+ l2 R9 Y, S5 l% S5 `
当到达物料速度越高时,这个报警更多,

8 S- g# ]: N5 s2 V' [3 D: R) @4 w另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-18 19:38 , Processed in 0.018713 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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