设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9028|回复: 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'& |- P4 Y- M  s( Q% U8 E/ G
*/+ Y+ \" |3 S# Q  j* K$ I" O  w& o6 E
is
* o% m: F2 d: d$ F, f3 t        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
% l2 k) W/ R0 j: v+ G. F8 wdo. ~0 E  r% V7 d  }$ P( ]5 r
        Lan := rootfolder.Internal.Tools.AOLlanguage;* A7 @. l: V1 Z4 g; X7 T: r+ ]
        if current = @.Destination -- else return6 q/ M3 o. b6 g/ R9 |+ S; s! l
        then
, s( w5 b/ P) z+ U& Q* P6 s                @.Destination := void;
9 e8 m* N% k7 u0 W; ?' D                if @.occupied then
4 S5 Z! d5 v6 D0 a                        part := @.cont;
  F7 ^  x7 l( m9 j* P                        @.transpOrder := void;
9 E% z4 w4 h2 s5 t2 l# R  |                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,+ @, L# p% t7 ~
                                @,root.eventcontroller.simTime);2 L4 }# \9 x  P5 K1 o9 ^
                        @.HasOrder := false;" _+ O9 N. g6 o( ]& }
                        @.DrivingHome := true;) \9 F* ~; E. A- S8 u
                        rgManager.tryToStartTransOrder;
7 _& m/ r/ L; x( ], v- _  B                        if @.Destination = void
% y8 }* t: d6 R6 w' U( E                        then -- no transport order for vehicle @- |, n, f' M* n7 ]" B; R
                                @.Destination :=5 g- n' `1 X# Z5 a7 L
                                rgManager.nearestFreeStation(@,track.~);
% J: [% g: }; y& u3 `* G                                newDirection(@);   6 G! m2 [! ?* j  F3 r' n9 r$ X
                                if @.Destination /= void then2 h1 |" h* H0 p# ]! b
                                        @.Destination.NumReservation :=
. t0 [8 M6 a2 v7 q" ~+ a                                        @.Destination.NumReservation + 1;: W/ {4 F; g9 a9 E- ?* K3 j9 v
                                end;
% x1 Q8 D1 s  D5 g! X9 m                                @.CurrIcon := "drivingHome";
8 c7 O: I* B$ ?+ q: q$ Q8 l                                @.DrivingHome := true;
) z/ c( h0 S+ i1 j% W2 o) D                        end;
' b! _. G, Z/ k/ T: c0 S. q                else -- the vehicle @ is empty, both vehicle and part are in the same dock station3 V8 ^$ C# M( w! \! [; T
                        part := @.transpOrder;
5 `* C: f* C8 C! j                        part.move(@);-- load part
( q+ w1 ^9 U( T                        @.CurrIcon := "load";
+ l- u6 D  t# i; `. s                        GlobalDistObj := part.globDestination;% x5 m7 Y5 z! N8 g$ P, }0 K5 ~
                        assignLObj := rgmanager.rgAssignL;3 y/ z& |% Q' F( C/ H* s
                        row := assignLObj.getRowNo(GlobalDistObj);
6 B6 Z7 [+ Z5 {* u: M                        if Row = -1 then -- since 70
) F  Z  p  J& ]' R# S                                if lan=1 then
8 C  W& Z1 U, c) j) M                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
+ \! l  d' S2 O, e; X2 l                                                to_str("in der Andockstation: \"",?.~.name,"\""));
2 X  S# N  `' y" L& Q                                else
* }6 j3 X" `" Z' Q( d! Y7 T                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
' u1 f, l- a, U) K0 p2 u                                                to_str("in docking station: \"",?.~.name,"\""));                                ( i) \3 H- X; Q  Z  A
                                end;( k" w! n8 I/ P: ?0 U4 U
                        else
* Q; `5 E$ F6 p7 `; ~                                @.Destination := assignLObj[1,row];
. E: n& m) p9 {( p  d8 O8 s                        end;                       
, J8 @( [. A" i. g1 n, h                        newDirection(@);
, W0 ?! ?: [& T% f) \4 O                        @.HasOrder := true;
2 q9 B6 i) `+ K7 q                end;% j# ?$ F" z- w  S
        end;
6 N# O8 H- K8 o: f$ g# Zend;        -- of the method. U  O" K* s$ J% n2 B, k+ R' q
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 / n0 |- ]! Z2 g0 L2 t0 k) M
/ G- R! N3 W6 D3 F4 j, |
这是AGV_putin中arrive的method。
( y% v% M$ h7 A. Q3 `
$ U  r0 H# j3 I+ _1 G* G$ o当到达物料速度越高时,这个报警更多,9 ~# U. D  ^1 o) H
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。$ D1 U1 y. Z% Q! A2 ~7 \
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?% O3 G" Q' U& t, l
+ U! j+ W( X0 R; Q4 `4 ]3 c3 t
另外一个小建议,就是move,所有的move都可以这样
0 O& j3 F. O3 j2 fif not move() then debug end
: k# t; g$ w7 H! P: D  V& p' d& s4 E这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
+ V6 q1 L6 _9 q7 ^, h9 T" zplant simulation中的free libraries有AGV模板,5 E. A) g3 V$ E, w
里面也有案例。
4 n( x+ N$ c( ]8 i5 ]9 Q我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
% p. \, R) c& f* d1 s5 L+ P6 x9 e3 t( K' [& F
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
! v' R7 X. M2 k5 S7 ~3 ]& G1 a' n* D4 b# i% a' W! a; |6 O
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 ) U; }* X3 \" N* L! m
这是AGV_putin中arrive的method。2 t3 y' K) m6 u
: v& o; \4 j' N
当到达物料速度越高时,这个报警更多,

: y- ?" `! g5 h6 ~: d另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-7-9 18:05 , Processed in 0.014021 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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