设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10192|回复: 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'( X" u( Q$ x$ N5 k& O0 ]
*/4 q6 R, @+ h% K6 ?/ W
is
4 ?) \- ^8 `; h7 J% _& ~1 a        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
. C2 }# z8 S! D- `5 t* {' Udo# |3 e* g4 W" O8 p- g) Z+ z
        Lan := rootfolder.Internal.Tools.AOLlanguage;' D3 Y1 _" D# N6 g5 I6 x
        if current = @.Destination -- else return  _; V% A, V: `
        then$ i2 }0 k) N- l5 P$ [
                @.Destination := void;6 _8 ]- a4 Q8 o1 _7 ~) t8 _
                if @.occupied then
. R2 m& A* P8 Q* m7 Q' E                        part := @.cont;: e4 g- u' U5 ]. ~
                        @.transpOrder := void;
. r- l3 \2 l& u' P, J                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,8 b, n8 C. D: {9 E1 W( O9 `
                                @,root.eventcontroller.simTime);# ]% a* s2 K* r2 w* [
                        @.HasOrder := false;
* V% c3 r( W  T! p                        @.DrivingHome := true;, Q* q$ m, R# m
                        rgManager.tryToStartTransOrder;
% k' i+ R6 i2 L) Z' _5 `3 T# T                        if @.Destination = void/ B* v$ ?0 w# K0 M, ?) u
                        then -- no transport order for vehicle @2 f' T* M- {7 H( d
                                @.Destination :=- u- l2 a' t  a( f3 m
                                rgManager.nearestFreeStation(@,track.~);% r& C+ F/ ^3 ^2 {2 B
                                newDirection(@);   2 B+ C$ g5 {2 _1 s8 o
                                if @.Destination /= void then
* @5 @: D' w% H6 z/ `6 W) l( T  @                                        @.Destination.NumReservation :=# b% ^5 L; P. ]5 R( Z, M! C
                                        @.Destination.NumReservation + 1;
( U3 x$ V2 Q+ j9 H) g2 P! ~' M                                end;$ X* B- p3 A2 M: q- B" L
                                @.CurrIcon := "drivingHome";
- Z3 S6 P$ J3 S0 F# a                                @.DrivingHome := true;7 X/ L! m; P) \, ^
                        end;! ^2 Z: M# }6 g/ z8 ?
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station0 J* o; E/ Y/ n5 z$ K0 K
                        part := @.transpOrder;8 A* ?+ @  {9 z/ w0 J% P  Z
                        part.move(@);-- load part; k" ?! c) |* i: A
                        @.CurrIcon := "load";$ a; g+ r  I) m; M
                        GlobalDistObj := part.globDestination;& E+ `% |' S. J  K2 N+ z' ?  I' J4 }
                        assignLObj := rgmanager.rgAssignL;2 X5 N1 @; e; R4 _
                        row := assignLObj.getRowNo(GlobalDistObj);5 }2 m/ D+ F1 [* b
                        if Row = -1 then -- since 70
7 n( H* K6 c$ R8 E5 e, A0 D                                if lan=1 then
5 L6 \8 p4 Z5 U: C# y                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
6 U/ j0 n- J. {  a( Q% _                                                to_str("in der Andockstation: \"",?.~.name,"\""));
) I1 h( k1 w' C4 p; ?                                else0 O4 F6 s' `* g( W* Y
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),. l7 C- `8 C- I) R$ g
                                                to_str("in docking station: \"",?.~.name,"\""));                               
8 X, i& Z  @) s3 d# f# @' B                                end;/ b1 L3 Y- C1 T* L- z
                        else4 f4 F1 \- r+ b; u6 h9 q
                                @.Destination := assignLObj[1,row];
' I' N* C3 ^# M; X1 Y/ E! a                        end;                       
+ ~3 R( C7 n* N2 ~                        newDirection(@);# ~9 `7 A$ c0 b! \6 L
                        @.HasOrder := true;
% v4 i# i8 [$ r                end;
" u0 s" p' @- M) H$ v        end;9 {/ N. |# o) l' V2 Z
end;        -- of the method# a6 F& H% T1 E( }
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 $ R6 @" ?* i* n$ v0 S
- t3 c6 q' j7 v0 D) R
这是AGV_putin中arrive的method。' u: r# r; [( d' R
$ w$ e& M& i5 W: r& ?8 F( g6 n) @
当到达物料速度越高时,这个报警更多,
% y( U# N, o$ K可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
9 p" I5 j0 d! U1 v) `. }; K程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
. N0 o/ K" {. v2 b  d6 S, p* j% g4 T& j" T& ]4 D2 y
另外一个小建议,就是move,所有的move都可以这样
% O5 P, D) r4 w. @2 _if not move() then debug end
/ ~! \+ T2 I& h# d. K. e' `这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
- A( n6 f: N8 A. wplant simulation中的free libraries有AGV模板,& W. q4 d, D5 D: {  Y4 F8 }
里面也有案例。
% |; n$ k; x' ^  R) R  w我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
- c* H& A7 }# R# {, \0 |. ]+ _% D( ^4 z; r" R( X
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 / n- k1 T! {% L# a+ t) Q4 Y& Y

! T# @0 Z5 H# [那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
# f% r" q9 p" \& _4 P- W: M$ `这是AGV_putin中arrive的method。
5 @. E2 F# T/ T: S4 s) K' Y2 n5 W; s/ D: V2 n( h
当到达物料速度越高时,这个报警更多,
2 p( [% e" b' E+ T; _. g  W2 _% J8 e8 k
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-9-19 09:25 , Processed in 0.022565 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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