设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5758|回复: 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' f* w: j+ _3 ?*/
: y, A, l, Y/ N* [3 a* B+ S1 Eis
! B; Y  e. D  o( Z0 O5 |8 r        part, GlobalDistObj, assignLObj:object;row,Lan:integer;( O+ O8 S+ C0 y
do# _9 V7 E4 K5 R: k" u2 }
        Lan := rootfolder.Internal.Tools.AOLlanguage;
+ W" g6 \/ m: ]9 i        if current = @.Destination -- else return
% m7 C2 }1 I+ f        then+ ?2 M& }. w, }" O9 q0 Q6 f7 Y
                @.Destination := void;. ~5 F3 r$ h* l
                if @.occupied then
* B& b* I- o2 n2 ]8 |! K                        part := @.cont;: @( Q+ h4 e0 t3 M! q$ w
                        @.transpOrder := void;
% o- Y/ Z9 B# b$ ^; y, l5 {" }                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
/ g, I/ e8 L. T; o- \                                @,root.eventcontroller.simTime);( p, _% l$ X- f: @! Z* p! u
                        @.HasOrder := false;' K- i& g- n" I* S+ w
                        @.DrivingHome := true;3 l' M! W2 P$ m1 R# U
                        rgManager.tryToStartTransOrder;
! e- V8 V: i0 b0 p& D                        if @.Destination = void
, E+ ?2 j, M# ]4 O6 n7 }                        then -- no transport order for vehicle @
+ I% `+ {9 i- \8 e- L                                @.Destination :=# z0 }. l+ H: k. p
                                rgManager.nearestFreeStation(@,track.~);
' R$ l+ d5 Z% }                                newDirection(@);   
4 }7 H9 q! Q/ l/ c; u( H                                if @.Destination /= void then
5 O  Z  f. }4 ^/ p                                        @.Destination.NumReservation :=2 i6 ]- v8 G6 M$ g5 ^2 n+ M
                                        @.Destination.NumReservation + 1;
% \, ?" Y% e- p                                end;$ v7 o( m1 O2 G2 J# w
                                @.CurrIcon := "drivingHome";# x% H; N! f8 K& }+ V0 l
                                @.DrivingHome := true;
! m# e2 K# M9 Y/ n& A8 s( [8 x                        end;
% J2 `9 w2 f3 f6 D( n$ O1 i                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
- ^0 m8 K: R  _                        part := @.transpOrder;! k9 I1 {3 _& q- S# N
                        part.move(@);-- load part
( s: j: y# c3 m5 r2 V4 w8 |                        @.CurrIcon := "load";
. |0 `/ e: w. P$ E+ X2 K" Z7 F                        GlobalDistObj := part.globDestination;* {/ a. f2 l5 W5 e9 }# N
                        assignLObj := rgmanager.rgAssignL;+ q* d- s; Z9 m3 `
                        row := assignLObj.getRowNo(GlobalDistObj);) }0 i; g2 w1 t  T5 Y9 n$ U
                        if Row = -1 then -- since 70: q  }, l  T# g% z
                                if lan=1 then; L* b9 Z$ n6 d$ u& \; t/ f- j% k( F2 a
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),) A  i) |# l" v- @- x5 E
                                                to_str("in der Andockstation: \"",?.~.name,"\""));4 ?) j' G* J6 E5 Y6 m- W5 I
                                else0 a! c9 \7 s3 D/ \$ c. X7 I
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),0 o: [3 Z7 f: X: H( U$ i
                                                to_str("in docking station: \"",?.~.name,"\""));                               
% m/ o$ ]/ r' x: i! P/ ^                                end;
6 \: j0 ?: t5 K                        else* t" m& c4 g) e* N9 G& B
                                @.Destination := assignLObj[1,row];
( i+ I$ X' k- n                        end;                        6 P( k1 E7 z% I+ w2 o2 ^
                        newDirection(@);
* B4 s9 y1 ?4 _1 R! a& Y                        @.HasOrder := true;! ~( Q! N- M7 s3 Y- S; s8 ~
                end;
* \0 U& F( a8 S5 Q  [  A        end;% D; n4 |6 Q7 @  j2 S
end;        -- of the method1 y7 d* H' r% o& Z4 f
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 2 o' Z+ F) D4 C0 g

3 `/ h  k! {7 A9 x: Y  Y: R3 q. u这是AGV_putin中arrive的method。
0 Y  y5 S# C' v( N2 q* @
8 a/ P" D& X! w* t当到达物料速度越高时,这个报警更多,. y. A8 q* O( V
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。9 r! S7 U1 J2 L, U- K7 T( A; e
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
4 C0 ?0 r' a* C0 g; n
4 [# U' ]) b' p' G2 Q6 ]另外一个小建议,就是move,所有的move都可以这样
* D3 f) W1 }4 ?, Pif not move() then debug end/ M, {9 V0 M0 H7 {7 A1 J
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
% q, t9 p" H' k9 l8 d" `* Nplant simulation中的free libraries有AGV模板,) q0 T4 W5 v4 V% Y
里面也有案例。
, Y7 E/ {+ i) N( m; B0 ^我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。3 q# a2 L% Z- i  e
# F6 y/ [7 `1 w; p* S" y
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 " u# S1 g0 d& s2 o

* K5 Z  \$ O/ v1 K0 D那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
% |4 e/ k6 X4 p* Q, v. K+ X$ ]4 R9 S  Q这是AGV_putin中arrive的method。: U8 q) J* C4 c
/ i% H. b) U$ d8 M
当到达物料速度越高时,这个报警更多,

/ \( w" Y1 m& |+ }& N0 }另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-12-17 19:32 , Processed in 0.018142 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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