设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7014|回复: 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'
) ~. K. b9 Q# a6 _7 d*/
# a4 v4 C/ o# l: ]  {is
, f, Q4 c- s. Z) t/ S- s( n4 A2 t        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
$ o4 J4 V+ f; b+ n) s/ m" U# Zdo
0 e# n! S/ Y/ t& U8 U& g: d        Lan := rootfolder.Internal.Tools.AOLlanguage;0 T' }# r8 l8 \# [6 W. {2 }7 O& |
        if current = @.Destination -- else return. b5 v6 \% E' J
        then6 j' \; f: R- h( E, z, {, |
                @.Destination := void;8 J: W# _3 ]; r" t* w( Q0 X- S
                if @.occupied then2 L3 F3 ^1 y2 K% m
                        part := @.cont;$ B; y4 N2 R% u$ u
                        @.transpOrder := void;1 z, L' G& t0 L
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,' A* z% c; z$ d/ S, _# Z8 V* J) S
                                @,root.eventcontroller.simTime);
5 u, u- N; `/ J5 W                        @.HasOrder := false;. D- {2 x" \( k% N2 {1 Y( k
                        @.DrivingHome := true;
% w6 _5 T9 {: ~( P- }& z+ U                        rgManager.tryToStartTransOrder;
: o# s. g! g: K                        if @.Destination = void
3 T) J/ c7 |6 Z' h                        then -- no transport order for vehicle @5 {0 ]5 \* [+ @/ N. o- g
                                @.Destination :=( E/ A" G4 M  F1 x. k5 w& h# U
                                rgManager.nearestFreeStation(@,track.~);
$ K: Q: U% C1 ]0 Z% f                                newDirection(@);   $ \. B/ U  c0 S! g) Y
                                if @.Destination /= void then
* F$ }2 U5 j4 I3 U) A- Q                                        @.Destination.NumReservation :=
; _# C& B- J' D) r4 N1 v  D                                        @.Destination.NumReservation + 1;; x7 Y7 M% @: x& V7 Z' P% p
                                end;& ^( n3 z' V' a9 s7 {( f6 I
                                @.CurrIcon := "drivingHome";' R  W* \4 v- d' Y6 a6 A* ]. `
                                @.DrivingHome := true;
0 z( i+ m3 s: L# ]+ R& k8 F                        end;
" p% v" J# w! w: i' ^8 m  S                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
# y  e) ?# ?: Z3 e9 \                        part := @.transpOrder;
8 F; j3 R7 z) P# s                        part.move(@);-- load part6 a7 N" ~, F6 Q% ^
                        @.CurrIcon := "load";
: M! p5 E! ?5 ]6 `                        GlobalDistObj := part.globDestination;1 t2 @; ]% T* }0 a
                        assignLObj := rgmanager.rgAssignL;
8 j8 ]" }2 k" q                        row := assignLObj.getRowNo(GlobalDistObj);
! I" {3 R1 K, n" e% ^) v                        if Row = -1 then -- since 70( k. q9 L9 q& h8 V$ x( \
                                if lan=1 then3 Y$ h; m) L9 r3 Z1 d4 M
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),% Y6 E. }6 U) s5 M8 h
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
/ L5 l1 o5 t6 F+ c% {7 Q' Z% k                                else5 B' F. x* x( h/ i- j& R
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
  i* ^9 L. E8 v* Q                                                to_str("in docking station: \"",?.~.name,"\""));                               
  I  l: C3 F5 |                                end;
: }# m: r6 f) v* X                        else
5 P  R- f8 I) H. V                                @.Destination := assignLObj[1,row];
* f5 H# P# z4 w; Q  B: ~                        end;                        8 ~+ `+ ~% n$ T4 Q5 J* l# L
                        newDirection(@);
/ f0 I  P3 i4 n& T                        @.HasOrder := true;
" V0 M* Q1 O$ w0 F0 k: q                end;# J& @5 }; L% l7 L) W; [- H
        end;
& k6 t" w6 d9 |2 gend;        -- of the method
4 h' A' Y; I) W" i  O3 j( \( u
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 5 S5 @" L8 e7 k
& ?: E8 D5 ?6 d  b' x
这是AGV_putin中arrive的method。
3 @& M4 e) O& M6 K6 Q/ @
% R0 v8 K' |& b. Q) H6 J当到达物料速度越高时,这个报警更多,
5 v9 G& h! K. K% Q) E. e" L: V; `可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
5 G0 x% N/ ^2 F( V7 m4 Y) a程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?5 g: @/ _+ o2 Y4 M/ G% _
! W2 e! [( |9 W" e2 A
另外一个小建议,就是move,所有的move都可以这样
2 n- L8 C: V+ `( N8 |7 V& J3 ~if not move() then debug end
  o; y8 E2 f% T: a这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。0 Y( O- `4 D& N( s/ t
plant simulation中的free libraries有AGV模板,
: t, S2 e" f) l! p; J里面也有案例。( a& h- n3 `& s, |3 B9 q
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
) {$ I( G3 T* r6 w7 @/ [) y0 ?( h! O: v2 Z2 b( ]& T
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 # \2 E+ \5 J2 _/ ]1 @  b

5 W9 G" P, K  |5 n. W3 Y那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
& ^: ]- w; L1 T7 ~这是AGV_putin中arrive的method。
2 F: r5 X5 Y' N7 G! |$ C, U1 {. S4 A2 d( W* t
当到达物料速度越高时,这个报警更多,
: ]1 ^; G# S2 X8 G8 U; w/ H
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-11 06:51 , Processed in 0.021635 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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