设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6431|回复: 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'
0 v1 b) X' E4 c' G* z7 K5 k: p& F*/& v) _7 S) M. w* j8 b# ~
is- e+ c( T8 h# P( z. q5 V  k* k
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
: i- R2 t. T& Z0 l: n' @& pdo# y0 s" s7 o- e7 y8 e0 @
        Lan := rootfolder.Internal.Tools.AOLlanguage;6 `* @) V% L" _% j) B1 L) M
        if current = @.Destination -- else return2 Z  \, R0 A. J$ O+ a, f1 G" N8 G, m
        then5 N4 c6 r1 f( Y3 K# P- ^
                @.Destination := void;1 H$ j0 h: m, d( U. o+ D
                if @.occupied then' Q4 E( L3 v  w
                        part := @.cont;
- V/ A) _7 o5 B9 D- N3 b' z3 w                        @.transpOrder := void;
3 ]" g: ~. s% Q- B                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,4 L+ T: H: N& n5 q
                                @,root.eventcontroller.simTime);  l0 f. S( H5 ^' u7 a
                        @.HasOrder := false;( L, i' Q8 n$ [
                        @.DrivingHome := true;
; N4 s. q% d5 Q6 }# h8 E                        rgManager.tryToStartTransOrder;
- g4 h  n" b2 \9 E1 ~( F6 p2 J4 U& J  V                        if @.Destination = void
* u; j; |, g2 W1 [  b+ A                        then -- no transport order for vehicle @9 s5 f+ P$ F: X; M7 j  w- z) z
                                @.Destination :=
6 w4 e" @' {6 W) z5 e                                rgManager.nearestFreeStation(@,track.~);
4 B  ]$ {  a7 Q9 T, q2 Y                                newDirection(@);   
2 N: J/ ~9 \3 s+ f: T0 Q                                if @.Destination /= void then* h* f" Q- P8 a+ Y5 Y0 o
                                        @.Destination.NumReservation :=
2 H0 p( m2 C  K( E& L' e                                        @.Destination.NumReservation + 1;
; o$ ^+ I4 ?1 H( x8 ^& X                                end;/ s/ {2 a* z$ |9 S+ B3 l2 U3 _
                                @.CurrIcon := "drivingHome";
( w" R7 l* a# }. @                                @.DrivingHome := true;  W3 O# B9 j, Z1 I  j9 a
                        end;$ N' z/ C2 j  \2 E8 P
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
6 P, x9 B! [4 i$ b+ L3 {                        part := @.transpOrder;$ e/ L5 g, m* M8 X
                        part.move(@);-- load part' T3 i0 q5 G* }& F# i! c
                        @.CurrIcon := "load";" h( O- a, u5 o6 \" r: m
                        GlobalDistObj := part.globDestination;' D: B5 X- z. a5 P4 J% W* x) P1 R
                        assignLObj := rgmanager.rgAssignL;
/ ^3 |" e4 |2 \" B1 j2 t                        row := assignLObj.getRowNo(GlobalDistObj);7 e' M; E# {* O$ ?' L
                        if Row = -1 then -- since 70
8 \& U6 ]( v+ Z/ o9 i                                if lan=1 then+ N1 P3 S3 ]! ]5 M( Z1 F
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
$ a$ V* n6 _- q0 T) S. G2 ]                                                to_str("in der Andockstation: \"",?.~.name,"\""));1 H7 _: b9 O, y  _
                                else, q+ h+ g+ v" e9 l  O
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),0 B+ N" Y- E" [, s7 Q4 a0 x
                                                to_str("in docking station: \"",?.~.name,"\""));                               
5 \/ p' K9 G8 D                                end;
* P( ^. ?8 [, o( l/ @                        else: T' }+ P1 z! y- Y
                                @.Destination := assignLObj[1,row];+ |- @9 L  |) G6 Q+ h: H0 |
                        end;                        # L% {4 `5 e) t# C& k! e
                        newDirection(@);
: q6 {( w* }0 u6 r                        @.HasOrder := true;5 F. }4 G! y1 Y
                end;+ F1 z' y2 |: E' C
        end;0 H5 t) X  a( n
end;        -- of the method
1 X4 f& T9 x9 }1 u8 w
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
% t; I! @0 ^& [6 |6 d! N2 V4 p" v2 B* K1 H, F  X
这是AGV_putin中arrive的method。
6 N) Y+ o# w4 P; n8 {+ w; ^
# t. `0 z! B* Z9 O' v+ b; z当到达物料速度越高时,这个报警更多,
4 I8 z( S9 ~9 i. E6 n: a6 q可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。4 e5 k- D7 L: ?/ w
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?! O. {  v( S. h5 o! q3 N4 Y( X
( p* ]  p3 e- X
另外一个小建议,就是move,所有的move都可以这样5 N, Z9 L: J% D2 ?; _+ F% v3 _
if not move() then debug end! n0 h( n" N! ]* c) a7 ~. ?4 t6 g
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
3 g8 d8 r' y3 R  q- Y/ [: G4 X, qplant simulation中的free libraries有AGV模板,
: i& f9 v" s0 y里面也有案例。' [9 a% k% ~1 }3 ?4 a
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。+ p+ ?' u4 z3 Y8 z  O. I- p7 @
* T0 g8 I4 w" I
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 . q  ?& C5 y2 L$ M3 H8 ?4 @- H, T3 y
! J( x9 Z! k$ {7 s7 L5 ~
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
$ D3 ]* ~7 N$ |0 b, ^9 M这是AGV_putin中arrive的method。
: Y3 M, A1 [, N5 O2 Q% H3 Z
1 z1 V9 z/ ^+ j1 j: {3 _当到达物料速度越高时,这个报警更多,

# `$ k3 P; z5 b% Z0 ?另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-6 06:35 , Processed in 0.020533 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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