设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8732|回复: 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'
1 [1 z, q( \7 j, {& t8 a# @3 y- S*/8 U3 H; k: Y+ A# z* R+ h( H# v/ C
is
; T$ \6 ?. O/ h1 V        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
# O; Y0 z# \3 U- ndo! M4 y! D( u5 z" k) W
        Lan := rootfolder.Internal.Tools.AOLlanguage;
' {7 M: Z* Y, p1 I        if current = @.Destination -- else return( J0 @/ u! N: i! v$ T! O  g
        then' }! i  _- e; \
                @.Destination := void;
! L6 v9 ^* F' }, Y: X                if @.occupied then
1 T  x' E$ u, {, y                        part := @.cont;: |5 W# d2 M1 M6 w6 E( r) {
                        @.transpOrder := void;
7 T4 {0 b9 Y. a& Q  d1 v7 x/ K( s                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,& ~  @7 P+ V+ ^6 L( o9 c
                                @,root.eventcontroller.simTime);. S7 L# s; W- K. M2 Y8 W+ J3 J
                        @.HasOrder := false;
& u0 C9 s& B) i0 r' b                        @.DrivingHome := true;- T- i$ g% _6 r6 z$ x, A
                        rgManager.tryToStartTransOrder;  d1 @, F2 W/ k$ s) @( }
                        if @.Destination = void3 j( j% D0 R4 w& Y& [
                        then -- no transport order for vehicle @
7 R! W. K) M. v                                @.Destination :=7 e7 m, X, ~; W" \) R) p$ E8 m! z
                                rgManager.nearestFreeStation(@,track.~);: L& m2 A  O1 g
                                newDirection(@);   ! l% }, S6 _9 m
                                if @.Destination /= void then, q" {) I& _$ m9 K9 g1 P
                                        @.Destination.NumReservation :=
% [& O# v9 k8 O" O2 P5 A, p9 T                                        @.Destination.NumReservation + 1;
) Y( \( }2 J; z3 M                                end;$ m  x6 L$ u: l2 p! O
                                @.CurrIcon := "drivingHome";
: |! u+ u5 z2 m, b/ [                                @.DrivingHome := true;
& f, T! \1 P% }3 U7 d+ Y7 Z                        end;
" Y5 T# Z( r4 b! H" b0 o$ [% }                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
2 X* }+ H$ b9 b# a                        part := @.transpOrder;
0 U5 E8 {  Y- [# r0 Z& v0 ~                        part.move(@);-- load part
' C+ L$ v  J' j3 p. i  v                        @.CurrIcon := "load";" |6 K" a& ~: ]2 S5 x8 U0 w
                        GlobalDistObj := part.globDestination;' [1 d( ]% n4 z: l. Q- J7 \) k
                        assignLObj := rgmanager.rgAssignL;# Y  X( `! ~! Q+ i
                        row := assignLObj.getRowNo(GlobalDistObj);4 j; v( |! \7 P, x% W: @$ X
                        if Row = -1 then -- since 70  S/ l1 |7 j! m1 |( T2 Z
                                if lan=1 then
3 K/ {9 w/ x! s                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),$ _; J* B; v, ^' f6 s, E; ?# ]8 _* ]- |
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
2 ]( C% r$ z" V! V- ]2 p                                else
+ R( b1 P* h, N; W! i                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
2 c; l! Z: J( n4 C4 K                                                to_str("in docking station: \"",?.~.name,"\""));                               
8 F* P- F5 W2 m4 X4 _                                end;
5 h' h1 U% S7 w2 z0 F8 q$ K6 d( R                        else
" j. K- k% {0 f3 t                                @.Destination := assignLObj[1,row];; @& h# b! L7 x& c
                        end;                        $ a  u2 V6 |9 p+ T- G7 R6 g' f" h
                        newDirection(@);: R8 j7 L- ~0 i6 {& w" I  N
                        @.HasOrder := true;
' G0 ?* K) v3 T1 Y6 D( P; m1 i0 }                end;, e( v* N) w, A5 X  N
        end;6 E% l  k! y$ f$ f
end;        -- of the method
2 B- V# G+ Z, b  V3 w& k
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 3 y% s" g" [( l
/ f3 b$ M$ {0 G' D# N
这是AGV_putin中arrive的method。
( x" i% _4 C' c, d/ w* V2 D. G6 v
7 C8 E  ]$ N. W9 M" d/ x当到达物料速度越高时,这个报警更多,
8 d7 L( ?+ r, s: E  e0 [! L可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
2 v2 T  \' H/ l! @6 W8 ^. U程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?5 r' e1 ^, I& \& G) p: v7 M" N

$ r3 i) Y: z# q( z* T4 F3 a# n另外一个小建议,就是move,所有的move都可以这样2 Y/ [/ o( G5 `8 K
if not move() then debug end
2 L& i3 W9 p9 G# f这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
3 y1 b# T1 x/ P7 H! n) F: tplant simulation中的free libraries有AGV模板,
4 X! S; {3 l/ N8 Y里面也有案例。
3 n' X' R. S1 K! X" \( n5 \9 d' f我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。9 s% D* [5 G* b- T

  I; j' m3 j$ p" g# x7 ?我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
* e, u7 K1 b# k& n- t$ ]% h4 I$ K/ S( m
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
+ Z, p# C: Z! y7 S, V这是AGV_putin中arrive的method。
: p9 b. g" B  E/ J
: }% B8 }3 H5 k: t$ V0 c当到达物料速度越高时,这个报警更多,

, c" M% u1 u  f/ c4 O  S) k5 d另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-23 02:57 , Processed in 0.016096 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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