设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6477|回复: 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'
$ p2 h, q7 V: O  X) ~*/
& y* ^+ x9 f' a% bis
/ P9 `$ n; }5 h* N" _( O& Z  x        part, GlobalDistObj, assignLObj:object;row,Lan:integer;( g/ J" Z- F7 A! f7 R& x
do
3 z- H  R! j, G- ]8 e  Q7 q" \        Lan := rootfolder.Internal.Tools.AOLlanguage;. v. J; l  {$ c: W2 r
        if current = @.Destination -- else return
. y7 l' r2 A$ T        then
6 b4 T# ?3 ]  F( D7 r* ^2 x) @                @.Destination := void;
9 Q8 R7 g0 C, `3 C                if @.occupied then9 _+ \7 G$ L6 [, U9 N5 n" T- D# |
                        part := @.cont;0 w" c6 y# [' k$ o) Y7 U
                        @.transpOrder := void;4 R* h; @0 E! i  A( M
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,# r$ k7 z  B% L- ~9 ~, y
                                @,root.eventcontroller.simTime);
" V# U& H* I, y/ O+ x8 s7 l: L# ~                        @.HasOrder := false;( [* l, g( t" R% q' z8 s
                        @.DrivingHome := true;% j# W$ S( G, b" N# M$ G7 Z" c
                        rgManager.tryToStartTransOrder;+ e# e+ M  y8 z: {+ E% ^
                        if @.Destination = void' W2 I0 P6 d  X0 Z0 q. G
                        then -- no transport order for vehicle @4 K! q& k6 P7 q- F$ r/ ~0 Y0 b" q
                                @.Destination :=
  G: z; k$ G/ B7 y                                rgManager.nearestFreeStation(@,track.~);
' _8 q# L) y6 h- _% Y% z9 e                                newDirection(@);   
* K& j+ M' G: n  D# [. `( ~                                if @.Destination /= void then5 Y* b0 w5 H; h; `, i( Q: [5 Z$ }/ {2 Z
                                        @.Destination.NumReservation :=; ~5 H6 V, D9 g  X
                                        @.Destination.NumReservation + 1;
. g: u" B4 q: e4 Z! W. ?# w                                end;
  `1 i# i' |2 L+ W3 Z* C                                @.CurrIcon := "drivingHome";
3 K: H# O( p; C2 @" e                                @.DrivingHome := true;
" o1 ]2 a1 |; ]# y                        end;# N6 T) [" U4 m9 h
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station, T# u* y5 `5 r% ^2 t4 g
                        part := @.transpOrder;; O4 Y4 ^6 T/ N7 Z  }& d
                        part.move(@);-- load part% v3 }3 m/ @) f* f
                        @.CurrIcon := "load";$ h, z. g) c( D. S5 }3 z
                        GlobalDistObj := part.globDestination;
* ]$ V+ ?8 A6 ?6 I( e                        assignLObj := rgmanager.rgAssignL;
8 ^8 t( O) d4 x) r8 R9 Z6 C                        row := assignLObj.getRowNo(GlobalDistObj);: O% n. x" F$ E+ W2 K  w1 ?
                        if Row = -1 then -- since 70
$ y- k0 {3 G+ b) u8 Q                                if lan=1 then
2 L! c) ]/ S8 j4 S8 a& v                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),; a/ f4 i2 j5 ^: w# y- w+ j
                                                to_str("in der Andockstation: \"",?.~.name,"\""));# ^5 k. B. \  p  E! i+ I6 V6 F
                                else
* f, Q1 h& I- ~- ]5 r% q9 ~                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),; h+ T& M0 R7 p7 B7 J
                                                to_str("in docking station: \"",?.~.name,"\""));                               
: V9 ?. I! D# R# {/ ]! r                                end;
7 Q2 B" F6 h' t                        else0 `( W2 }. Q; H8 g1 y4 L4 e# p: C. H
                                @.Destination := assignLObj[1,row];
6 ~& _+ f0 i, T9 H- r3 O" `                        end;                       
/ ?/ d+ B( e) y$ r                        newDirection(@);
( ]( v4 w$ e7 V" x                        @.HasOrder := true;
3 |1 d1 e; h; z- a- O: V( E                end;
6 _4 }- ~! o! M" n3 j+ [; Y- Y        end;" H/ v6 B# o- v
end;        -- of the method
& z1 \1 h8 l3 u' `
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 9 Q7 f/ B" j$ i& d3 K3 X

% n* c) \  v* S8 Z, q# \( u( ^这是AGV_putin中arrive的method。" W- i/ @/ g. G
5 \/ Q: P" l1 l8 S
当到达物料速度越高时,这个报警更多,
. ~( k1 I% ?+ V3 N" Y$ @可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
" z' F$ H9 B) t程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?+ n; N' x) c! T' _6 K

, R' {/ T0 ^* O. \: F/ K# Y" s另外一个小建议,就是move,所有的move都可以这样
! Q0 Z6 b. z5 p& `+ xif not move() then debug end" ?. J) p! ]  Q- p5 n  T9 a
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
% U% [# F" ]+ @4 s; [plant simulation中的free libraries有AGV模板,
: U" D' x6 Z. ]" ?5 W* q里面也有案例。/ j/ B+ V/ k9 \  L6 f& P
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。! S/ G9 e) X5 x, Y' i

" \* }& ?$ ^7 k5 S: B" X8 t我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
) \" V" l) ]+ G& z$ W% W7 S  i/ y2 }( x0 g' ?* ?
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08   l/ G2 F  V. f) M/ I
这是AGV_putin中arrive的method。0 `  }3 P0 \. y7 O

0 g8 x- j/ k) k3 w: m; u当到达物料速度越高时,这个报警更多,
% j" I3 j; l- k: @* T6 d9 Q
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-9 00:24 , Processed in 0.014946 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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