设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8103|回复: 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'* m8 L5 G, h0 y' m2 }
*/
9 R- l5 n  ^1 z4 x! Z1 i1 Eis
2 }) o  F/ c9 w2 d2 I% L1 Y( O% i        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
: R( R6 E2 r* T2 B. l% Hdo' ~/ K( s: Q- @, J" H  A4 o/ B
        Lan := rootfolder.Internal.Tools.AOLlanguage;
; @5 _* u4 [# v# ]2 N        if current = @.Destination -- else return( Q. C9 G, Z, ?1 [* P' ^2 ^6 [
        then" n2 \3 Z( i9 t) [9 a# v& L- B( R
                @.Destination := void;: t* l1 a% W- R: H9 Q7 H8 f
                if @.occupied then+ r* C: z/ p- n% }* @& M
                        part := @.cont;" L8 ?1 c7 a, G% d4 X9 U1 d
                        @.transpOrder := void;8 y2 H; B/ P$ X8 C/ l+ B
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
2 ?# y' M- T" x2 t) B                                @,root.eventcontroller.simTime);  |* e" M7 e5 y1 f
                        @.HasOrder := false;' `- ?9 x" F0 S
                        @.DrivingHome := true;6 J& ]% R7 ?( m
                        rgManager.tryToStartTransOrder;. p4 L) V2 c5 C2 `
                        if @.Destination = void
/ g' k5 d; j8 s. c                        then -- no transport order for vehicle @
7 p- M- [9 G, E" j                                @.Destination :=* P4 j' h& t! V# Q7 b6 r
                                rgManager.nearestFreeStation(@,track.~);
/ Y3 C; k4 [4 |6 ]" |                                newDirection(@);   4 c# H% ^& U6 N% @; z
                                if @.Destination /= void then' G: R0 n( E4 w8 D
                                        @.Destination.NumReservation :=
. I7 w6 m! w* ^& A" x( Y) ~                                        @.Destination.NumReservation + 1;
7 y6 l4 K! q1 P5 I                                end;- T3 o+ Q7 N- x
                                @.CurrIcon := "drivingHome";
) ]- }4 e2 Y' u                                @.DrivingHome := true;
9 I8 O. n  @( O) Z1 Z                        end;
3 ?) p6 U7 O& O. ?) k# B" H7 m                else -- the vehicle @ is empty, both vehicle and part are in the same dock station. d2 n6 v9 T, q, O( j/ e
                        part := @.transpOrder;& p% [( B! c  K9 f
                        part.move(@);-- load part+ I# o& `& W/ I; n+ F
                        @.CurrIcon := "load";: h0 R) Y* S( q1 U
                        GlobalDistObj := part.globDestination;3 ?3 b8 L* A- P7 D* x$ o
                        assignLObj := rgmanager.rgAssignL;) z1 Q; |. Q* e+ R: C# d
                        row := assignLObj.getRowNo(GlobalDistObj);  i4 b: u3 m7 }; z: O- Z# d
                        if Row = -1 then -- since 70, `1 \! c3 u  m# I+ P" P
                                if lan=1 then
2 T! Z. R0 z, o1 |2 Q8 \                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
1 ?, K6 J0 B: ]                                                to_str("in der Andockstation: \"",?.~.name,"\""));5 ?& C4 H2 D% Y. x
                                else
+ v2 u% I! D) D+ h                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),; n. Q$ c1 O) G- b( b* K
                                                to_str("in docking station: \"",?.~.name,"\""));                               
* N$ O% R& n) \4 U0 V, N                                end;! F2 U: X% g$ G) C+ p
                        else
6 Q0 I0 \! o9 F                                @.Destination := assignLObj[1,row];
3 V8 C# b6 H( K8 s% I                        end;                       
* l! K9 H, y0 O  }                        newDirection(@);
: ]0 b& N* y/ B4 p/ S/ Y; r6 n                        @.HasOrder := true;
& ^& T; I% w/ @* p                end;
3 V: n5 i! K% n8 ]& X        end;
/ Q+ q# E% ]- ]8 Q9 Fend;        -- of the method3 P' p6 `( e7 R- D6 \) a" j
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 % N% k( h% P- H2 X* n6 Q
1 ]. H3 o6 x7 X$ d7 p, O3 M
这是AGV_putin中arrive的method。+ ~, ]' |4 x0 A. U; s

3 a: G% [( i) R, J4 r, [; `7 c当到达物料速度越高时,这个报警更多,# S/ o' [8 Q; e- C/ D, K" W
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
% U! S; ]7 [% k& F程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?1 W6 P1 Q6 c# G3 V5 k: j4 |  B0 ^
5 O" M( P$ M) Q
另外一个小建议,就是move,所有的move都可以这样/ J2 `" s3 \) Z( f
if not move() then debug end
0 a' m. E. w" k# W3 T# E% h8 i这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
7 J# O) S! W  @& d$ Y4 A- p. s* ^plant simulation中的free libraries有AGV模板,
! O8 a+ H/ u' s0 R, v里面也有案例。
+ B$ s7 E' x6 ?8 j+ z* h: U我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。3 |  a, C& J+ ~! |# @

- T+ G: E, p, Y5 O4 E我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
# @; z% w" d# `# L( F! _3 c
' y! j. s6 [3 Y4 y4 j那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
& E% i+ m/ Z% b$ _( n: k; K这是AGV_putin中arrive的method。
4 R$ d3 }- b& `! P% O6 N% L3 i% S
) ]4 T* a/ [" D: j( q1 j当到达物料速度越高时,这个报警更多,

0 b* \; l$ _. V另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-14 23:23 , Processed in 0.019837 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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