设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8080|回复: 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* `) s3 w2 [' v2 x*/4 z+ j; S3 F' Q/ I  u! m
is6 B2 p7 _/ t) H/ o  }: }
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
; E: \3 t8 x% x7 C8 M! Hdo+ a6 a0 A) u" p  n% `* c" g0 c
        Lan := rootfolder.Internal.Tools.AOLlanguage;3 u$ @7 }' \, L- b# z3 @# ]
        if current = @.Destination -- else return
* W8 {! t$ P8 b4 X3 q- e        then+ S. s! c0 q# q4 r/ p5 Z8 u$ T! A
                @.Destination := void;
2 q# D* J9 Y3 q) S, w: d                if @.occupied then
# ^* e2 S, q- o* t0 h                        part := @.cont;
0 T! {0 \+ ~! b8 \6 _! S  U                        @.transpOrder := void;
* g& Z, e4 s+ P7 b; v# ~, r5 v! e                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,$ k4 J& i! p" O  F, y
                                @,root.eventcontroller.simTime);
( ^4 U; ~7 D+ v5 }* J$ w' s2 g                        @.HasOrder := false;
  V+ ^6 Q# C! ~" M* F                        @.DrivingHome := true;
' k1 u1 M( `  _- t+ m                        rgManager.tryToStartTransOrder;
8 A9 n* R/ E# R4 h  _  Q5 Z                        if @.Destination = void- s0 ]. e" s5 y. o
                        then -- no transport order for vehicle @
$ ?3 j5 K: T( E5 D# [9 @                                @.Destination :=
7 a- I: `; F9 L3 a                                rgManager.nearestFreeStation(@,track.~);0 |" F; Q0 J/ L: J& \" p
                                newDirection(@);     i" q1 V. ^' ^3 i- z$ i) U2 h
                                if @.Destination /= void then
& R, I# N6 z: ]0 A" B7 R, A                                        @.Destination.NumReservation :=
$ X* r6 N+ [. O: M& \) e                                        @.Destination.NumReservation + 1;
. e2 W9 |) Z2 y6 R- G2 S                                end;
8 F# r. K# ~$ [% h! b                                @.CurrIcon := "drivingHome";8 s1 r4 z+ c* b( b
                                @.DrivingHome := true;
" k9 _! g, X& [& G% Z1 ^                        end;: n, S* V+ I7 O' f( G0 d
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
( h* H8 L" P3 a3 _# P! }7 @9 C                        part := @.transpOrder;
: \+ y) ~! P$ K6 l' X2 ~; s                        part.move(@);-- load part
. {% l0 C0 A! i" t+ v) g9 M                        @.CurrIcon := "load";
' V6 W  ?7 m& y                        GlobalDistObj := part.globDestination;# G- }% E! O% C5 |0 e( F  F2 p* N; D8 @
                        assignLObj := rgmanager.rgAssignL;
8 E4 e3 |! O# f  F1 M                        row := assignLObj.getRowNo(GlobalDistObj);5 i) f3 \/ k8 C6 w
                        if Row = -1 then -- since 70+ Q& R3 e* l2 ~) p) N; i: k3 u* t
                                if lan=1 then. k3 m+ y; z% J* t
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),: z4 a$ f; S& k( X
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
4 d5 F5 y' P; n) X4 g: p                                else- ?5 S, p- x1 s3 C# U/ U
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
0 m, `; C$ x& P                                                to_str("in docking station: \"",?.~.name,"\""));                                ; K: e- ]  F' [8 ?
                                end;1 ^, ~% h$ o$ i
                        else
/ @4 t6 e* C* u" @4 E6 v  G                                @.Destination := assignLObj[1,row];
* Z0 {) T: A3 q6 h5 ]" K$ u                        end;                       
+ S' ^) n5 A& o. F3 a+ A                        newDirection(@);0 A$ z& `4 ]$ H& K' U
                        @.HasOrder := true;
" W+ E+ X/ N. V; A! t2 ~/ @                end;3 g0 q9 i! T- g0 g& p
        end;
3 h3 E+ w, \7 B; u% ], {; u$ S+ rend;        -- of the method
3 g4 L+ f& Y( v9 l9 D
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
/ @- n$ Q6 A5 d2 H% z  T  C6 G7 l; N1 J8 p; g  \( Z; ^
这是AGV_putin中arrive的method。# d7 d9 O5 o; C1 B; u
/ P& [! N9 B* y% Z" n% t
当到达物料速度越高时,这个报警更多,
! u& `- f2 y) E, W, Z4 Q* d) n可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
: J. E/ D( `% q) j程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
1 W* E- E  x5 z% i% O6 A5 Q8 ~( _; C
另外一个小建议,就是move,所有的move都可以这样
( L# O  V. v/ U8 W# S3 @if not move() then debug end) c- g9 O, \0 U) [9 t
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。; r  I3 e2 ~4 w9 P
plant simulation中的free libraries有AGV模板,
: O6 q& r: u3 c, x: q; D里面也有案例。
" ]4 V8 D! f6 ?8 c* D我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。, T) k8 f& Y+ n2 J% g) L" ^' r

; C& V3 R. N5 A+ E7 C+ ^9 P我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
; @' r5 v0 K1 C8 o* N8 ?. F) L
/ g" Y1 J7 r. o4 _9 W7 l, u2 }; |那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 & x8 \  R" ?- S0 |) x
这是AGV_putin中arrive的method。% d9 T- d8 W* Z+ E* N) P

1 v4 K* l  l, V; f+ ~4 N2 T$ I当到达物料速度越高时,这个报警更多,

% @, C! k+ H9 P* n/ T另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-14 02:56 , Processed in 0.018635 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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