设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7591|回复: 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'9 N/ `4 B- n4 f2 f$ Q! m
*/( J; e2 R  I* m. f2 Y
is
0 y  Q, O& ~# a" e8 N5 k        part, GlobalDistObj, assignLObj:object;row,Lan:integer;4 m3 ]3 @. {! ?9 s5 L! I
do$ O2 H5 \6 e7 p+ O4 J9 l& r
        Lan := rootfolder.Internal.Tools.AOLlanguage;
+ e; l* T/ L" u2 t7 A! n        if current = @.Destination -- else return
3 D* H( z: {: g: O" p, l        then" V' B4 P  R1 _+ ~* j& x  F
                @.Destination := void;# j: L! l  h$ K
                if @.occupied then
4 f3 f3 G( T( l1 _, I                        part := @.cont;
8 I( }0 r' A! M$ o0 w* m                        @.transpOrder := void;4 s" [6 G$ h" W! E: d" ]
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,6 }3 U' `( b3 R1 p
                                @,root.eventcontroller.simTime);. r% Q/ Y+ n4 q1 b6 V$ _
                        @.HasOrder := false;
# `3 t5 K7 w( [  n9 B8 o1 |1 F                        @.DrivingHome := true;. }* C9 j7 v) }) I3 J, v
                        rgManager.tryToStartTransOrder;
: U4 u3 b- F! C. F: y) P1 e                        if @.Destination = void
/ x$ d9 ~* e. _" w2 i! G8 c                        then -- no transport order for vehicle @
- v( h. `: c' N  {                                @.Destination :=& @; F/ B3 N8 }, j, s+ K
                                rgManager.nearestFreeStation(@,track.~);
6 j: `0 K8 d9 o* r- }! s2 M6 C                                newDirection(@);   $ R3 ?6 A4 c1 C. f% F
                                if @.Destination /= void then
% m; F+ i# N$ |% J                                        @.Destination.NumReservation :=
2 Q3 B! t8 }6 K8 o                                        @.Destination.NumReservation + 1;1 r5 T1 v  m9 C! U* R- S
                                end;
% y6 S- j; t7 u                                @.CurrIcon := "drivingHome";
7 l: W3 J' e& R3 I' h! [- Y; m+ r$ C                                @.DrivingHome := true;! q* a5 z( s) e+ x" y, ?# o* |% [
                        end;# W2 z5 g# x+ R; I' [
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
. S" y: y: z* S! i9 e: R                        part := @.transpOrder;7 i0 P5 v! W8 V
                        part.move(@);-- load part4 U! l0 H$ O! q% V0 i$ k: ?
                        @.CurrIcon := "load";
5 w4 n* f/ E1 p+ B! q                        GlobalDistObj := part.globDestination;# k6 f7 O) ?, e7 [3 F1 g
                        assignLObj := rgmanager.rgAssignL;
% L: s/ `" z5 X% D                        row := assignLObj.getRowNo(GlobalDistObj);, f/ o! ~: h+ f6 P6 a) v/ V
                        if Row = -1 then -- since 70
3 q& Y: @" D4 K& N                                if lan=1 then, m4 O' C0 Z: F0 j& ]. Q/ ?
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),) J) t) X9 I4 z  {- V, m
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
0 o% W4 ]4 r7 c3 I/ ~6 V3 K                                else
; i7 M$ ?6 Q5 @& n! w) L( L3 q1 L6 X; a                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),4 w& ?/ [$ T1 b5 P( i
                                                to_str("in docking station: \"",?.~.name,"\""));                               
6 r6 Z6 V6 d* N% w; D8 t5 Z, o                                end;$ W" U5 N- ^' M9 y/ \$ U, c: z
                        else
  B. K+ I+ c" R8 j* X                                @.Destination := assignLObj[1,row];
5 o4 O% w) T! D' F9 T                        end;                       
/ R8 T: A* ]8 o  ~5 z                        newDirection(@);6 H6 g  s: A% y; x3 c8 m$ C' v
                        @.HasOrder := true;. H8 V$ F5 k1 d- B- @
                end;9 v7 y( @" B# w  K
        end;' c& l* a" [: D5 T1 `
end;        -- of the method9 P7 `7 F& G) ^$ D; B
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 6 d" b+ L( D; t! @4 R  p
5 s$ \" e  r8 k
这是AGV_putin中arrive的method。
% j4 S3 H3 T9 C/ D' y
, F- I( {) Y+ K; V" D- }6 u$ |  s- P当到达物料速度越高时,这个报警更多,
* \$ I5 a# P; S- m8 s) _可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。* m) B: J+ u" D( f
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?# f- Q: ^/ H0 s5 t

2 l" s- S! D- k3 @7 F- q* ?另外一个小建议,就是move,所有的move都可以这样2 n8 F$ g# A" t4 j  \$ J
if not move() then debug end$ \* \( n8 b8 _* t6 d) z- D
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。* t* i) H9 F: w
plant simulation中的free libraries有AGV模板,+ J1 v$ O, l8 S+ ]) z
里面也有案例。* v! }' _# a3 k5 g! k, S2 Q, d% g
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。  D! ?$ D6 a0 E) N  K+ y- a1 c
* Q( s7 w/ j/ ~( K6 y
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
) G  g7 @9 u4 L9 A+ q1 m( o+ e1 v- [2 u
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
) K* ~1 C$ c* ?这是AGV_putin中arrive的method。9 e. p. D' R) ]7 N% t& i8 L5 ]2 c3 s
; j; x4 s$ H- B& ^
当到达物料速度越高时,这个报警更多,

3 S. q2 M. g$ e8 t4 I9 i) W4 o4 j" q另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-19 07:03 , Processed in 0.017209 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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