设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9080|回复: 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'& p1 t1 a% K' O% v' B0 e3 [
*/
. u. ]$ j7 T6 h: f. Dis7 K8 x6 s+ |: q. I$ K1 m
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;6 P6 W! y1 T7 A) k  \
do" M+ G+ f7 N/ D, @) J+ `' d
        Lan := rootfolder.Internal.Tools.AOLlanguage;& D2 {4 |9 H/ F+ P
        if current = @.Destination -- else return
( w6 U# H2 w' Y+ _, o3 g        then! k: G1 e7 W! c
                @.Destination := void;
: e  f$ P3 Y4 A# m2 [                if @.occupied then1 K* I% F( E  z+ d) Q/ G
                        part := @.cont;
1 X% f$ N( p2 X. C$ f% L# _  |                        @.transpOrder := void;
# l2 l) @: ]0 f                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
. Q  c4 T. R& q( r" {4 |                                @,root.eventcontroller.simTime);
' _! r/ @; ]/ B# v8 a                        @.HasOrder := false;
1 ~, u4 W( ]" R; U& A% Z" E                        @.DrivingHome := true;# o$ ]6 Y( I& K7 h2 E
                        rgManager.tryToStartTransOrder;
  Y, a9 P2 T9 y                        if @.Destination = void
8 J2 @9 P- o% w7 ^9 _                        then -- no transport order for vehicle @
; c1 v" E. A$ Z0 u+ p% F( B9 `                                @.Destination :=
. p+ o) P' E( L7 c1 j                                rgManager.nearestFreeStation(@,track.~);' `* y5 A2 F/ G3 _6 E) A1 w9 U
                                newDirection(@);   
  ~8 ]6 R' O5 u6 f2 [4 m                                if @.Destination /= void then
! e7 W9 a+ A: l2 v                                        @.Destination.NumReservation :=
* e, P. a5 t# g" S* `                                        @.Destination.NumReservation + 1;
1 m9 }. [! {8 ?                                end;
# X2 a4 w" }. F6 O) p: _& B                                @.CurrIcon := "drivingHome";
. i7 T. l# e# m6 D                                @.DrivingHome := true;* F) [' m* e/ u2 P6 ?6 t3 i6 B
                        end;
7 }: A" g. E: @) P) w                else -- the vehicle @ is empty, both vehicle and part are in the same dock station: m) i0 E. G. N3 W
                        part := @.transpOrder;/ I4 m0 n0 P" I
                        part.move(@);-- load part
! O6 p% J: ?+ y                        @.CurrIcon := "load";1 h" d. i2 k1 V
                        GlobalDistObj := part.globDestination;
+ j; ?# A9 N+ n' q  `                        assignLObj := rgmanager.rgAssignL;0 W" k5 P, V; o5 i8 C" v
                        row := assignLObj.getRowNo(GlobalDistObj);+ i- z7 G# H5 }+ I
                        if Row = -1 then -- since 703 D, r$ U5 q( U  l4 i  j
                                if lan=1 then; S" Y# |1 o4 L6 t; v! T4 F5 W
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),: T! `! A0 d* O) n
                                                to_str("in der Andockstation: \"",?.~.name,"\""));, o+ A1 j* b; D0 n
                                else" B4 o3 g: k- D( y7 J
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
+ K% E* s6 g! t+ |' C8 M                                                to_str("in docking station: \"",?.~.name,"\""));                                " I' A- p+ m0 [
                                end;  H: d: }: a! N% n" F+ L$ {
                        else
- i& F; E/ t8 w" {. h% c                                @.Destination := assignLObj[1,row];/ l+ L: ~' S& o4 z6 B
                        end;                       
/ v/ c/ q' J8 W5 S  x. i/ R% A                        newDirection(@);( Y0 i% f% M. N' r" r
                        @.HasOrder := true;9 d" ^8 V7 ^+ J; T! E
                end;- D( G1 p+ w* W7 z  C9 s
        end;) {( H- L% }0 R9 G) ?# K6 Z
end;        -- of the method4 i8 Z: Y6 B& W+ [* Q2 f( ^
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 1 _# ^/ {/ ]- s( E
/ n0 @6 u( t$ l- _6 X) [5 s
这是AGV_putin中arrive的method。
8 c  l+ c8 F; ]# t$ L( k- Z; u+ V2 X
  r1 [7 A, D; D( A当到达物料速度越高时,这个报警更多,
0 ?0 b' B$ l/ Q, |# m; C& y8 s可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
7 J, `: G, n7 ?+ u' }) G程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?8 }7 p. j; \: T& K0 A# a
" p: n# w: Q0 q
另外一个小建议,就是move,所有的move都可以这样+ ~! Y- u" V: n6 |6 C
if not move() then debug end% R6 _0 C6 h8 J7 z
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。. W. f9 Q3 Z2 Z; ]
plant simulation中的free libraries有AGV模板,
- c+ ~9 l& f  d& q里面也有案例。- j& [9 o, W/ g* W& }4 W( K
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。2 Y- A3 v- t# c/ W

% _4 a) h" o6 w# O9 u( H- q我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
0 P1 o$ b  h' {4 l: K$ z! K2 q; N! z- T+ Y& c
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
- Z8 ?2 p7 L+ O' A7 J这是AGV_putin中arrive的method。
" o, }0 @7 o, r3 F% X( V/ @. I) V: `* |: v& c7 K
当到达物料速度越高时,这个报警更多,

# m% Q% I; K+ H- t另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-7-12 09:20 , Processed in 0.014810 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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