设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8896|回复: 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'
* F  o+ z2 z2 P* ]7 e$ Y( \% D*/
0 I4 Z1 h" \5 c. R. O/ ~1 xis" ~+ T: I7 D2 [' S9 g
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
+ y% |& M- D, j% o! jdo
+ K% d: U9 x* s8 e; S1 H3 |        Lan := rootfolder.Internal.Tools.AOLlanguage;
' H% D5 f# j+ ?2 c; x% d2 |        if current = @.Destination -- else return
* u1 v! d0 @. T        then: B' Y4 j- A' ^' Z
                @.Destination := void;
0 f- L4 u3 g9 @+ Z                if @.occupied then
. c7 Q) K& a( `( R9 q& L                        part := @.cont;
- ~* F' X/ W: l# I+ A$ Z1 G                        @.transpOrder := void;7 A( M: j* J& K- R- P% \/ h7 C" N6 j
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,  D) D! U! k  R# B* I0 g5 h
                                @,root.eventcontroller.simTime);
: O$ {/ |& H3 Z9 r: s& S2 O# }                        @.HasOrder := false;& B: Q3 s2 Y, ~5 e& j* N
                        @.DrivingHome := true;
5 R$ }3 H& z8 U                        rgManager.tryToStartTransOrder;
+ L* P8 H( X8 t4 H' R6 Y" f# e; [) T; M                        if @.Destination = void
9 b2 R. f, g0 _5 u                        then -- no transport order for vehicle @
" Y+ H2 \' Z& d! h4 f0 L. I                                @.Destination :=1 g" Q! s9 V% I3 Z
                                rgManager.nearestFreeStation(@,track.~);
' D1 e; g- {9 u/ V2 C; E+ ~4 s                                newDirection(@);   
/ R! K) P/ D8 c$ l5 K" j                                if @.Destination /= void then
( x7 R- [4 \; A* `                                        @.Destination.NumReservation :=5 w8 [9 r! T, b& M
                                        @.Destination.NumReservation + 1;6 x3 x* B. d5 g2 p
                                end;3 t# L) t: \; d- s; H6 [4 F8 v) P; ?+ ?
                                @.CurrIcon := "drivingHome";
, p9 }3 x& g2 F/ l) {# X8 a                                @.DrivingHome := true;3 m; j, F8 w( ^, M) |0 z+ X6 m
                        end;  v5 M4 F. S& N4 e' i
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station2 r& G2 y8 G8 B* m* s0 l. T; o
                        part := @.transpOrder;
% z" v3 X6 G7 q8 e" S4 n                        part.move(@);-- load part4 u6 T9 d8 `& w* I& o+ {' F
                        @.CurrIcon := "load";
0 m3 s& @0 p  Y( X4 ^                        GlobalDistObj := part.globDestination;
8 j, h5 D+ L1 b: v                        assignLObj := rgmanager.rgAssignL;" `: j7 A7 S! u3 C7 Q
                        row := assignLObj.getRowNo(GlobalDistObj);
7 t, z5 s, f1 }  t+ }/ S  D8 C. }  K                        if Row = -1 then -- since 70! _1 W8 k  t% t. K: ^& G5 U. ]4 t
                                if lan=1 then4 {$ N/ r; K. \) y: E6 o1 x6 u
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
, P8 C; i1 q; N+ k+ w4 T* C) t                                                to_str("in der Andockstation: \"",?.~.name,"\""));
6 T  ^- y/ N8 j! W* L$ I" ^                                else0 m8 T* u& D' O, M- I  B* s. I
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
/ {0 U9 X  n) Z* P7 b                                                to_str("in docking station: \"",?.~.name,"\""));                               
4 X6 F) Q' b* q& o                                end;( @6 J7 p1 j( W8 I; M2 F( E
                        else
  r1 v7 \, }! z; z+ n( Q                                @.Destination := assignLObj[1,row];1 Y- y3 K7 E- N& a: p; @' q' J
                        end;                       
" F* x2 Q0 D) k6 Q                        newDirection(@);
/ L! @6 u4 j& I4 b; E                        @.HasOrder := true;
! T; x# ]7 _+ e3 b: }. P' J+ i                end;
# L( f$ |* P! r: t* N$ U1 V, c        end;
- _$ _. k6 T% X1 w: x: k  w* ^* Bend;        -- of the method1 w# B+ \8 U# |8 |
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 1 S6 A' ^8 [4 r& [, y9 o* O: Y
! U' X0 q" T9 Q- m/ x5 P" o
这是AGV_putin中arrive的method。
, W, e2 R8 M9 ^+ Y
! Z" d  {. C/ H' ^# I# `当到达物料速度越高时,这个报警更多,
# s: U9 G, \1 T# c" f$ ~可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。: N  {# _  t) N$ j, W+ P* p3 Z
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
& ^' v9 ^# y- g5 c$ z  ?. Q7 ]8 b! o" h' b
另外一个小建议,就是move,所有的move都可以这样5 T5 F  `- I) _4 l$ X5 `6 s: Q
if not move() then debug end
" m0 G7 q$ u- ~/ P  S这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
3 [5 G* N; ]4 n) kplant simulation中的free libraries有AGV模板,9 c8 [8 h; n% D" c
里面也有案例。
& c9 G, K9 f6 S; N9 b( i4 }% t我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。. _& O6 J0 [1 L( k5 A1 M

' e% t5 u' P* H我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
$ q# {- j2 N) v% l# t2 L0 C# l% z( ]+ [6 W1 J: n
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 % X: @  G/ O( C' w! Q  o
这是AGV_putin中arrive的method。9 C3 P8 @9 R* d7 L6 N& i/ A
; a& e* u  u! f5 o) F
当到达物料速度越高时,这个报警更多,

4 E8 o3 ~. h! A0 f) l5 k另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-7-3 04:05 , Processed in 0.013936 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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