设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9907|回复: 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': v6 v6 A7 C, q
*/
& i8 e0 N9 b. N$ J& kis
8 _6 O1 E+ f/ y2 t        part, GlobalDistObj, assignLObj:object;row,Lan:integer;% Z/ ~2 O" L" T- c
do/ {& Y% M5 }7 E- f! A5 u; k+ H
        Lan := rootfolder.Internal.Tools.AOLlanguage;
, M/ F, U7 l$ ?) f4 o6 Q        if current = @.Destination -- else return/ e* K+ x2 a, o1 J7 p8 y2 P: E
        then7 q& ^% p0 Z  ?
                @.Destination := void;3 @( O% ^( U! a8 c- r& Q6 F: E
                if @.occupied then
! ~7 f% d2 |; B  E8 V/ C                        part := @.cont;/ h* O/ G) q' C5 A; X
                        @.transpOrder := void;
- h( j0 n" A; Z+ |. E, u+ _/ \                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
" R2 ]7 Z) ]( p/ j4 o; h) ~                                @,root.eventcontroller.simTime);$ ~0 e% A' i$ v2 \, P7 ]9 b2 a
                        @.HasOrder := false;
; l! v  Q4 d3 C# Q" E/ u                        @.DrivingHome := true;/ l7 }6 j3 t) w! E& i- u
                        rgManager.tryToStartTransOrder;  H8 Y3 K+ ^3 P
                        if @.Destination = void
5 V+ ^/ Q" b& w2 ]0 m. A6 S                        then -- no transport order for vehicle @
+ v) z3 P7 H" h" U8 G3 w                                @.Destination :=
! D8 l1 }# J# y6 k* H                                rgManager.nearestFreeStation(@,track.~);" u& |" @6 v8 |
                                newDirection(@);   1 {: b" c! p/ W7 S# h3 @# Q5 l
                                if @.Destination /= void then
+ f+ G1 R1 x+ W! h4 A4 t9 P                                        @.Destination.NumReservation :=
% B! D8 [$ G6 P% u8 ~                                        @.Destination.NumReservation + 1;
! i# p  @6 i6 ~& E$ f                                end;- t( r5 W0 i/ \" w+ |: U% r. b3 S1 Y
                                @.CurrIcon := "drivingHome";
+ U6 ?- m# n. G0 [" \                                @.DrivingHome := true;
2 v9 v' e" @$ _* t) R9 P                        end;
- _# W! ^- p5 Q4 I                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
/ N$ B: k, i8 H                        part := @.transpOrder;* P9 F, `& n! Q: g
                        part.move(@);-- load part
6 A& l" R. U8 K4 B  B                        @.CurrIcon := "load";
0 r1 [5 T5 }1 n6 S4 @( X                        GlobalDistObj := part.globDestination;6 w" ?) b' m- L( F8 H; S
                        assignLObj := rgmanager.rgAssignL;
* P' c  B; E/ b' J4 H                        row := assignLObj.getRowNo(GlobalDistObj);
; P* M, m. m! j! A/ _                        if Row = -1 then -- since 70
; y" [# W! w8 p( q$ X' D4 G                                if lan=1 then/ `* d* N( H1 h) i4 k/ N- d' F" t
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),9 k! W3 Y7 H1 v! B
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
$ F/ t: {6 y  N  H( A                                else
: ~. }! j5 w8 F- i- V. }0 U! h                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
8 R" Z8 S! t5 b3 x                                                to_str("in docking station: \"",?.~.name,"\""));                               
; S' D7 l" B2 ~/ _                                end;
4 `% I2 `$ W& ]1 F8 N                        else
8 Q$ N# T& k- G% J/ S$ z. ^- C                                @.Destination := assignLObj[1,row];$ L+ _# N7 [8 \0 Y! R" L
                        end;                        , Z" S9 e- Y0 A* E. M1 X
                        newDirection(@);3 V8 ]$ w6 O0 J( p7 _" ]7 r
                        @.HasOrder := true;, F4 [/ g: y9 I8 b$ R& L& z+ V
                end;/ {! H4 T( O1 n4 v
        end;
$ J8 H3 Y5 }* t' d- I6 V3 O( Aend;        -- of the method  s3 q* \3 k: v/ }% z
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 8 e5 U1 V- ~4 V2 d& f

! a: K4 k$ V4 U. t  |+ h8 p. y这是AGV_putin中arrive的method。
1 W0 k8 t4 b7 l% B% v
" X8 V* f0 {$ s+ ?" |7 I当到达物料速度越高时,这个报警更多,
% a( x' P$ F3 P* E/ l! W2 L可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
, e5 c& U+ Y2 M: P, p9 d9 x' k- K* p程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?. ]* O1 v! n8 q' {! a) ]0 K
; K% V7 [6 N' R7 f
另外一个小建议,就是move,所有的move都可以这样/ M$ \$ ^1 _  i! [- G. ]
if not move() then debug end
0 |3 E  h* a' H2 `这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。; {( }) s- q7 s+ |) n/ V3 _
plant simulation中的free libraries有AGV模板,3 c# Q  C; K9 [4 @! e2 r
里面也有案例。3 J0 }; r, g& ^8 D" t- l
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。/ n/ D* Z4 Z! r( u4 B5 N7 U
  t; m+ @9 K& [8 A8 N, ]
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 & w! S: Q% N# y9 j1 L
- R3 V! y* G, ^) k0 @, Q
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
$ x# w) @" j: n# @$ G: ?0 L! @这是AGV_putin中arrive的method。9 T1 K0 u. y' t: y2 |! I& f; S
* E! ~' ^( |7 i8 V. [
当到达物料速度越高时,这个报警更多,
  |$ T- h+ n0 g. m
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-9-1 21:46 , Processed in 0.021304 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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