设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10059|回复: 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'" y! o$ r9 R7 Q" h$ U3 q' L
*/
' V2 A1 J% h3 H' Z+ Iis+ ]5 q/ W' y+ m7 |: N+ U6 a
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;3 \3 g; b( {& P* \8 r
do
: C* N& P$ ?# r; a* o        Lan := rootfolder.Internal.Tools.AOLlanguage;6 q, ]7 T: ?/ J
        if current = @.Destination -- else return) W. Q! l# w7 P, |0 {' o
        then
" z* x+ {; y/ q7 Z# g8 j0 |. C                @.Destination := void;
: X: J" l! T3 U                if @.occupied then
$ C& n2 Z6 Z; F                        part := @.cont;
- M. O  d; y7 ?                        @.transpOrder := void;
( K0 o" M4 B3 d! |' T4 Y, g4 v& \                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,* V" A5 f6 c; F! j: h3 g
                                @,root.eventcontroller.simTime);* D; X2 s% U' ~% E5 y! H
                        @.HasOrder := false;
' P. h# f1 i4 F) ?8 a) h                        @.DrivingHome := true;
* r' c, [) m' \( U0 e1 v                        rgManager.tryToStartTransOrder;
$ m0 k. N4 s2 h- Y* G8 F+ c" S" M$ H' e                        if @.Destination = void+ g+ k% b6 j/ P8 i
                        then -- no transport order for vehicle @' B4 M: W3 u1 w6 }' ^3 G
                                @.Destination :=- O% s$ S1 o: Q" F* o7 X8 ]
                                rgManager.nearestFreeStation(@,track.~);/ N+ P+ i' f" A9 `
                                newDirection(@);   ! t+ }; e  h7 G. D/ c
                                if @.Destination /= void then( J2 }0 M8 L4 c6 O6 Y
                                        @.Destination.NumReservation :=3 j6 u4 q% [' Y. ?/ f
                                        @.Destination.NumReservation + 1;
" k2 t5 h6 z# c                                end;* u! |6 @( F7 r: b
                                @.CurrIcon := "drivingHome";. ^, g0 |0 |; n4 B7 D) A8 j1 D
                                @.DrivingHome := true;/ V: }5 G; E6 O& i% M6 l; G
                        end;
4 w0 T/ P& b4 R* Y) @                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
6 o2 |. c2 @- p) C- F                        part := @.transpOrder;% K* {( i% A. t: p' l
                        part.move(@);-- load part
% h% ?/ l# h5 `                        @.CurrIcon := "load";; T( W6 f6 w. w) @7 _* S$ ~+ [
                        GlobalDistObj := part.globDestination;* ~9 z7 K" S+ G$ x/ S4 N7 n. {# T
                        assignLObj := rgmanager.rgAssignL;
( [) N! l6 @$ E+ [  t/ w; }                        row := assignLObj.getRowNo(GlobalDistObj);6 x9 o0 E+ ~2 i
                        if Row = -1 then -- since 707 P1 H3 F# C9 s' p6 M4 k2 A0 \% _
                                if lan=1 then
9 g9 ~) F- N5 v5 z                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
" X0 c' {  _+ |. e$ `) F+ ?                                                to_str("in der Andockstation: \"",?.~.name,"\""));
/ r5 p- w# b" O  u' I                                else
" P, n7 o. H0 D, M  j" ^" x                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),. W8 b) |1 C7 P7 o% r" U2 t
                                                to_str("in docking station: \"",?.~.name,"\""));                               
( D' |% b: x' B) M8 n. K8 n                                end;0 Q  Y8 t3 n( ]6 F* q2 a
                        else! K0 L2 |' L) _  j% _9 x: F1 V
                                @.Destination := assignLObj[1,row];
1 ]# A" `$ S4 H+ n. S5 `+ w# v                        end;                       
4 p: T' i# A5 c0 l! l                        newDirection(@);
) \4 N2 W* ~% J5 Z6 p                        @.HasOrder := true;
, H3 d1 v2 J: Q% @                end;
& Q) O* M& i- B& q0 o8 o        end;
7 R2 b! A7 w% q6 M" Rend;        -- of the method( E; \! r* b% V, B, T
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 ) ~1 t6 A1 E, q, [( b. s7 S

5 I3 c+ Y5 S* W) _8 d这是AGV_putin中arrive的method。/ m% Y) U6 p. C& U0 `+ K

9 @. h. v# B/ \0 t. _& l当到达物料速度越高时,这个报警更多,
  v% c- i0 Y  X% ], ]' M" h可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
& `! q9 n" b7 G" }程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?0 T  o2 K5 _. l6 s9 i, r
! v, C" R$ B" S' A  E; q2 a
另外一个小建议,就是move,所有的move都可以这样
' {3 J+ L& x9 n9 h' j1 I5 a& x0 P- @if not move() then debug end5 v/ B) Q' m& `1 _+ T$ T+ s
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。. x" f4 t8 o( z9 H; @. U
plant simulation中的free libraries有AGV模板,
2 j8 A3 U: z/ B! D2 l% }' W! c里面也有案例。" s% u0 \0 |& @/ E" I
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。8 x) t* V2 k4 @  L, Q. q* _
% H1 i8 C; V1 @+ _% Y
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
* g1 I1 B& `5 a) x" P! I6 w0 a
" e% D# [- t* r* y那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
9 B* A* b3 T9 g这是AGV_putin中arrive的method。
5 B, @' C. S% F4 B! j2 E6 |% Q/ y: ]# Y$ k2 q- h7 F
当到达物料速度越高时,这个报警更多,

8 {6 y+ S+ H# k6 N另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-9-10 23:30 , Processed in 0.025899 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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