设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10218|回复: 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'
( ^" Z. r9 Z  D- z*/
. T# }* u$ W, I2 P" i* Lis
; A2 o, d7 E. R. k* z        part, GlobalDistObj, assignLObj:object;row,Lan:integer;. C- f* q! ~8 N5 A$ Z' ?! ~
do8 {; m+ N5 @# c2 P
        Lan := rootfolder.Internal.Tools.AOLlanguage;
  D* C5 {8 W7 V& `4 h        if current = @.Destination -- else return
* ^' ]% O: [* ?        then
% V2 w: L' |  ]! r' h                @.Destination := void;# w/ I( R! [( a: D  q0 T
                if @.occupied then
7 I4 A0 k$ H0 y3 R6 W$ D+ I% J9 N1 d  n                        part := @.cont;& J) O5 c* f0 F2 Q$ J- W" q
                        @.transpOrder := void;
( G9 Y7 k/ C# s                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,* u; V# ?1 `7 w! M6 G- y: Q
                                @,root.eventcontroller.simTime);: w1 R7 b" P) D  W$ l' p
                        @.HasOrder := false;* P" H+ l& z& V' a* y' h6 R
                        @.DrivingHome := true;
* p9 D: n- ~$ y* M/ v4 e9 _                        rgManager.tryToStartTransOrder;
7 W' _9 g) D4 ]- p                        if @.Destination = void
; w5 m5 _; R5 M+ v                        then -- no transport order for vehicle @9 @4 a% m+ a! q* O* O% }
                                @.Destination :=
* E' I( U: f: h# }) ^+ m$ T# ]                                rgManager.nearestFreeStation(@,track.~);4 H7 J# l; t4 l
                                newDirection(@);   
6 L! W2 o4 ~* a! H+ y/ F                                if @.Destination /= void then' I" d8 G: I. M, Y& D
                                        @.Destination.NumReservation :=
6 E: z6 d$ o8 V& B8 k                                        @.Destination.NumReservation + 1;
% F+ }5 O6 u/ a( X6 g                                end;
# P0 k5 ]: R2 j" A% N% `                                @.CurrIcon := "drivingHome";3 D  J2 m: j8 p* M" O
                                @.DrivingHome := true;
, M+ V: Z. e: I- i  N) }: o6 i                        end;# u( e, m4 S4 {- g9 R- G- N
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
- ]- [8 _! {3 v* A                        part := @.transpOrder;- D" l' A( o9 [' F$ w3 I1 E2 t
                        part.move(@);-- load part
+ U' H9 m+ R8 |5 w9 e                        @.CurrIcon := "load";
1 w0 D! b1 j$ o3 o1 L4 d! [; w/ \6 @                        GlobalDistObj := part.globDestination;
" }- I% E6 e# f5 b                        assignLObj := rgmanager.rgAssignL;( ]( i2 ~9 v* C9 a& Q( w9 ?) |, L
                        row := assignLObj.getRowNo(GlobalDistObj);" J! Q- [  Y9 j# ~
                        if Row = -1 then -- since 70
3 E7 d# a4 w, E* a                                if lan=1 then  o2 x0 d% q* m7 ?* W6 L2 I6 \
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
0 V6 [. Q3 Z+ z  ], P& j8 t                                                to_str("in der Andockstation: \"",?.~.name,"\""));5 @8 n" t( r# F8 b* t
                                else9 Q# d( q: M' d$ ^
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),9 A2 z2 e, ]; S' \0 S  I
                                                to_str("in docking station: \"",?.~.name,"\""));                                : X1 W& W# \2 Y
                                end;
3 J$ O* B/ L. R  {0 y! N" S                        else
8 m4 K+ y5 ~1 P8 H5 Y0 m6 Y                                @.Destination := assignLObj[1,row];
, H5 I$ N+ |, K0 z                        end;                       
; l  Q1 U; ?  k/ f                        newDirection(@);& Y2 W" |0 ^" V( n6 F: I; P
                        @.HasOrder := true;* f4 B9 y" i  k/ b
                end;
6 o7 y) H6 |! b9 I; V# [        end;) b/ _' ]: c7 V5 v7 `
end;        -- of the method! M  L& C" v, X) c8 E: ^$ I' M
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
. b# W) {1 T5 a/ x. |7 G$ X7 w) ?4 Z" }0 U6 W* f9 u( Q
这是AGV_putin中arrive的method。7 A2 a% w$ ]5 K

" u) F1 p2 ]2 f- o# s* \0 r3 h! Z) w当到达物料速度越高时,这个报警更多,
* `6 c& m$ @7 E可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
0 h; A+ o- J4 ]/ X程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
. c: c4 _" Q, Z+ t7 F
  N4 G9 e$ t0 M6 {4 ?另外一个小建议,就是move,所有的move都可以这样
- O5 w) A# a. R$ v1 p+ Z  n2 ~& dif not move() then debug end# V& L: g: d$ K& q/ Z9 Q
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。+ j& X7 F& p9 f5 R2 j3 A5 C
plant simulation中的free libraries有AGV模板,, X+ o# o/ O4 S) _9 S
里面也有案例。* a/ P1 ~4 x! D' g3 u
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。+ A, Z" U' y2 X0 F) t# Q. v

/ m2 `6 x% z, G- Z+ s& w3 P我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 # ^. e  W2 w7 f: n

( U. {7 j  t# j: w; b$ c那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 ; k* E% w& D0 D) E9 I# q
这是AGV_putin中arrive的method。
3 K% o6 |' j. _5 B# G  p& n8 T
2 s8 H5 ~. d" Q- J( z当到达物料速度越高时,这个报警更多,
+ h/ s3 z. ?4 J0 o$ H
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-9-20 22:31 , Processed in 0.016552 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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