设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3689|回复: 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'+ B( L) s4 b- @. R
*/
2 v7 T; B" h+ S/ w! _is
& I/ v: H# ~3 e2 ?        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
, {$ R) D3 [" h8 W! T0 fdo
* r+ \* i" y0 `  R, u0 e        Lan := rootfolder.Internal.Tools.AOLlanguage;
2 y6 u3 D7 p/ E6 d        if current = @.Destination -- else return! N' h/ J7 [' F) b4 y* u
        then2 B3 n$ a2 F: J. d9 X" b  T5 G) x
                @.Destination := void;
& a3 w$ Z# d/ r                if @.occupied then4 `, H3 k2 p6 R- h" @' Y
                        part := @.cont;2 }8 b  i" r0 M2 I* c! b" L
                        @.transpOrder := void;' N) L+ r! c  g- b6 o- y8 y
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
- t( y4 F; c* o2 S$ l6 m                                @,root.eventcontroller.simTime);" R$ C( Y& |) G5 Y) ~9 ?& c
                        @.HasOrder := false;
6 E+ G$ o. A; p6 o! J. o                        @.DrivingHome := true;
0 v0 M5 e; V: B                        rgManager.tryToStartTransOrder;; y* ^3 P5 x+ {, Y, e: z" |" I3 i
                        if @.Destination = void# S- p2 Y6 L% F: A# a
                        then -- no transport order for vehicle @
$ ?" f2 o0 i5 d9 b3 Q7 |) ?* o                                @.Destination :=
# I: O, |' @3 x  S- e                                rgManager.nearestFreeStation(@,track.~);
; I5 L% x# E8 n4 l9 P* E1 d                                newDirection(@);   
- X# I) k& H+ C: Q                                if @.Destination /= void then3 t# u/ y" _8 F7 Y+ r2 j0 |; e
                                        @.Destination.NumReservation :=
7 S/ ?3 ?) z6 q; X3 x6 L                                        @.Destination.NumReservation + 1;
/ m) k0 d( H1 @" G; ?                                end;
% ^' z1 R8 {, d* U7 t1 x/ _: e. x  m                                @.CurrIcon := "drivingHome";+ ^- j3 O2 f! |; b1 [
                                @.DrivingHome := true;
* R* S5 U5 K  \0 G5 K  Q                        end;
6 ~' e3 n+ H- R$ D+ N0 V                else -- the vehicle @ is empty, both vehicle and part are in the same dock station! i. d. R: N& ^* |6 x
                        part := @.transpOrder;
% Q6 m! O, W% S4 U' o* e                        part.move(@);-- load part& ]$ _) t) G( p! i4 V
                        @.CurrIcon := "load";
$ `' ?, @8 O5 `& I( A                        GlobalDistObj := part.globDestination;
" A9 O% s' q. S; \5 v                        assignLObj := rgmanager.rgAssignL;
0 Y2 \  {( V3 |3 a5 k                        row := assignLObj.getRowNo(GlobalDistObj);
" }: L% o% f1 I, y) Q                        if Row = -1 then -- since 70
+ t, \, l: z5 q& \$ W                                if lan=1 then
1 ]- T0 ?( }4 l' f, ?, V* K                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
: \8 l3 H5 Q$ l( ~: J- O                                                to_str("in der Andockstation: \"",?.~.name,"\""));9 I$ A: l. P' ~8 {! c
                                else
- c6 W* X9 N% V! Y" o3 Y% y: l9 l                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),/ ]" ^7 a1 H+ e( p' D
                                                to_str("in docking station: \"",?.~.name,"\""));                                ( y, V" J( g# p% p  h2 Y  D! z
                                end;# u9 }* r# s* U  f2 B7 |
                        else( l/ l; A+ _2 V/ |3 D6 }8 i8 P
                                @.Destination := assignLObj[1,row];* O9 t  p$ T- c
                        end;                        ( r& a5 z* H7 ^# u: U
                        newDirection(@);/ k. X0 [. K6 U6 s7 l" W; L' E
                        @.HasOrder := true;
% g) x% ?2 W; V                end;
( g; Y2 ?! _. U1 a& \: h, q/ g        end;
& y* S! ~; a8 w$ ]end;        -- of the method( C' R* t  q2 G$ ]0 s$ A
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 9 N0 D4 k: l: }8 n- v! S7 K& w5 e" s
: G8 G7 o9 D: s
这是AGV_putin中arrive的method。
) B) D% J. s/ W( C8 g6 w0 D- k+ ~! v3 A, @) V
当到达物料速度越高时,这个报警更多,
5 W0 ^0 a4 B8 o) u$ G可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
/ i# I4 h: `; ]- N* L. _0 ^程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
& e/ b; r/ L# G4 t! a; ^  @
) |. _7 B1 `$ T* h8 t: ]另外一个小建议,就是move,所有的move都可以这样
7 b3 x# K# L! T5 Bif not move() then debug end
% Z2 T: R* U: z% _! ?+ A4 [这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。9 y" t7 v7 k, y: F5 o
plant simulation中的free libraries有AGV模板,4 f- x) S) T/ i0 [2 l9 _/ S" H& ^0 G+ B; g
里面也有案例。
3 n3 G/ |( T. {7 y  X我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
5 D$ E/ ^, Z( s( I# p
# C$ \4 i& T- R( G* P6 f我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 7 u0 ?: M4 [0 ?9 }) l8 F: _& F

* w! w6 x5 h8 w( s那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
6 b( j9 A5 f  L7 l6 r这是AGV_putin中arrive的method。
6 `+ c# \& f# v8 m! \9 K5 ~4 G7 L: H. r5 A, H% M% [
当到达物料速度越高时,这个报警更多,
* w* \  w5 m) W2 z; U! F
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-23 15:36 , Processed in 0.015595 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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