设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9812|回复: 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'# A/ J; \  r7 K$ u( _: S6 }1 d
*/
# S# x7 \: _; P" d" V% Ris$ }: h0 a4 o3 I4 B& y* N
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;' e  S  K  y  s
do) b! \( E' B6 E
        Lan := rootfolder.Internal.Tools.AOLlanguage;; i* R* J# P- F8 \1 z! k1 i
        if current = @.Destination -- else return
6 j; f2 P; E* b# k: W% B9 L# o, q        then
& v! G0 S+ ?& b3 M                @.Destination := void;& n: H. ^8 L) ~6 `
                if @.occupied then$ H( R0 C. C* B# q5 P
                        part := @.cont;
2 s( A. E" y- \) A                        @.transpOrder := void;
" Z9 b4 d8 _7 K/ g) y                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,3 B2 T) |5 Y5 m% k" M. I: F! T
                                @,root.eventcontroller.simTime);. ]0 V+ k  L9 m- ?$ y7 b2 ?
                        @.HasOrder := false;* I& z; N& [$ z. \: K8 N
                        @.DrivingHome := true;
$ e( R( x$ B  N- O5 ^/ m3 U                        rgManager.tryToStartTransOrder;: [7 {4 U4 A  z/ L: Z+ l9 c; A
                        if @.Destination = void
; L, a5 r$ A1 L. e5 T                        then -- no transport order for vehicle @
, h+ D, V& c! Z                                @.Destination :=) y5 K! O1 Q' _' \7 E& |7 d! G9 L, d
                                rgManager.nearestFreeStation(@,track.~);7 C; |& {' i& k6 B$ A; Y3 b4 h
                                newDirection(@);   
& Z0 \2 p. f: Y                                if @.Destination /= void then
7 ]1 o% M! r: x% p                                        @.Destination.NumReservation :=" Y6 i8 X9 l/ i0 H$ c' U
                                        @.Destination.NumReservation + 1;& }6 I8 q4 o/ o
                                end;" C! d3 J* ?) v" j& m: p1 I
                                @.CurrIcon := "drivingHome";: l2 n( k+ v7 A+ ~* j
                                @.DrivingHome := true;
1 ^  [7 d: W4 P' ?' O                        end;
) e/ {4 U) a# c) p0 B  l                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
& z# h  P" o* G5 h) {                        part := @.transpOrder;
9 l! Q+ F1 J/ c4 I& M3 e9 l8 [                        part.move(@);-- load part) O3 S" J7 k: M
                        @.CurrIcon := "load";
/ v% c+ g( i* O  \( E$ @6 N$ y                        GlobalDistObj := part.globDestination;
% r' Q* I- p( m  S8 x2 c                        assignLObj := rgmanager.rgAssignL;
: U- M& k2 j9 a' n) {4 r9 Z                        row := assignLObj.getRowNo(GlobalDistObj);
. r3 U  D4 J8 u9 c- S                        if Row = -1 then -- since 700 J. w) k& p$ b( V6 Y
                                if lan=1 then0 U. J( Q8 f& b5 [3 t( S
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
( [, a5 L, |- }% M) a0 a                                                to_str("in der Andockstation: \"",?.~.name,"\""));2 e# R9 h- E4 i. r4 m' p( \
                                else+ M$ |% `& N( y3 q+ r( ?4 w
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
/ \  v5 a/ }% p- z* h5 g5 [                                                to_str("in docking station: \"",?.~.name,"\""));                                7 r0 Q; {0 E: }1 j$ |4 k
                                end;
% E  \0 ?: I& B/ Q& F; v6 H                        else6 n  ~) F; T( d- Q; D6 Y
                                @.Destination := assignLObj[1,row];" K1 S# E( \7 g8 F9 g! V0 F6 Z0 H4 T
                        end;                        6 b4 `2 u! L" E# Q- N1 \; L- w- Y
                        newDirection(@);
& s) i6 E- j9 ~* h( G. |" H                        @.HasOrder := true;
* W  w9 |. \' [/ L* f                end;
! B+ |6 u- u! H; d! z5 F. ]# G        end;1 {4 _# z, B# T' W- Q& O# A
end;        -- of the method; X1 A4 X4 k. e$ X0 U) F
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
0 Q# o- s5 C7 Z6 r5 z4 s( S: S
" X( x) m; s+ S( i! f这是AGV_putin中arrive的method。
$ w, j3 z3 @: ?
/ z. j( m% y9 T4 t当到达物料速度越高时,这个报警更多,
& u: N2 Z( {) p  m: H可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。/ n: r% N" A1 U- l& |. \
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?( ^% ~+ U" t% J7 u: N% Q
1 d! h+ v$ n& G1 D9 N) u
另外一个小建议,就是move,所有的move都可以这样
: O7 r1 w2 \/ V1 Vif not move() then debug end
: Q; L* S9 H5 f这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。* @' L6 S+ f. m
plant simulation中的free libraries有AGV模板,
/ [% C- `! z3 ?里面也有案例。
/ v6 u4 g( ?9 i. Q+ z: J# U我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。$ p& _  x+ p! X* B) Q$ f

9 O. M( o& C; G1 c- _+ U" j我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 5 t2 [- k7 r5 y  t1 i% p

0 h% L* e9 r& c" w' M0 R6 B- R% C那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
2 {* J7 C( \# a) ?这是AGV_putin中arrive的method。
& m9 |+ J$ `0 K2 `
( i. y5 U# ^3 ^; M$ A+ R: R当到达物料速度越高时,这个报警更多,
& E; ^9 v. L- F" W4 m" i; \+ x
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-26 21:32 , Processed in 0.015119 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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