设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6751|回复: 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'
' e/ @( c: z4 s+ c*/
9 w/ y1 k. x6 h( J! Ris6 N7 n% Q: v( s5 A; ?
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
+ R) H8 d" q, S- j' L( |do$ |$ |0 U% H0 b) S( B
        Lan := rootfolder.Internal.Tools.AOLlanguage;
7 i. @+ S) C. L1 |: a        if current = @.Destination -- else return$ `# R# Y9 ?& B4 {8 C
        then
. G/ o5 T. P& A: A                @.Destination := void;
1 \& h/ w9 c3 R% b6 e/ e' M6 {; F                if @.occupied then
3 V6 Q/ ]6 l! S( q                        part := @.cont;
6 p3 L6 H. R6 c* v7 ?# b                        @.transpOrder := void;
( \8 N' U4 f3 w3 {3 @, C" }' A& X1 M4 Y                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
/ \; N+ K; ]! z5 V4 a                                @,root.eventcontroller.simTime);4 C- u8 W7 K0 K
                        @.HasOrder := false;; u; S- i2 d9 A4 f& J0 k+ m7 M$ s4 S6 j
                        @.DrivingHome := true;9 s2 |2 E$ P8 \
                        rgManager.tryToStartTransOrder;
8 Z8 u7 N8 |; o3 g& D                        if @.Destination = void
! _5 `1 e# P$ ^, V) P( }                        then -- no transport order for vehicle @
& n1 k1 `( o. q4 I, b1 T  i7 D+ C                                @.Destination :=
8 M8 n. @/ p) {) b                                rgManager.nearestFreeStation(@,track.~);  [5 ]0 ~/ l$ J+ l, ?
                                newDirection(@);   & F. n2 z9 {: A' k5 Q; u$ W2 n
                                if @.Destination /= void then$ X7 o/ C% X* O, R
                                        @.Destination.NumReservation :=
; I3 O. f9 u1 l( ]                                        @.Destination.NumReservation + 1;
1 X+ B) Q7 p2 [# ^" q                                end;+ B' h5 ]& _# V0 `4 p
                                @.CurrIcon := "drivingHome";, h! j7 Y- r% C+ E
                                @.DrivingHome := true;; v7 F! j7 O7 I1 b" j
                        end;
) c6 U9 D$ Q! }! D1 _8 ~9 _                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
6 O/ J& J8 v% k2 i                        part := @.transpOrder;, ~- i; i, k2 D& q% t, J  M
                        part.move(@);-- load part
/ N: V" R% V: x" s                        @.CurrIcon := "load";' o: h7 r) |- n- z4 z, D
                        GlobalDistObj := part.globDestination;
- T, v/ H, }; Y/ G# h                        assignLObj := rgmanager.rgAssignL;
" c: B1 s+ h3 l; Y0 R3 R                        row := assignLObj.getRowNo(GlobalDistObj);+ ]# Y0 {1 f3 W5 W
                        if Row = -1 then -- since 706 R1 O8 N) L( I/ \5 o
                                if lan=1 then+ R+ A5 x/ Y- V6 R) a0 E0 t8 U! U
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),( p# I& A4 J2 ^, n2 k7 a' I- \* }
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
% \) Q2 j) E$ z, h                                else' y+ d& E( R% Z4 l0 \- E
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),. ~4 l: E; y' P4 D0 \/ k5 m- p* m# j
                                                to_str("in docking station: \"",?.~.name,"\""));                                  s& Y) K  H) s6 R( g: ]0 ?: z
                                end;
9 {; _8 @5 A# M0 Z' a                        else
* a1 J: U: v7 G* f  P4 Z) [% x                                @.Destination := assignLObj[1,row];
& q# l" E7 s. i                        end;                       
9 z+ |! @# c5 a+ v                        newDirection(@);3 L1 r: o" W7 x
                        @.HasOrder := true;
5 ]3 ]- G+ I; `  E5 A0 l% T* A% A                end;" j- R% |6 ]7 k
        end;7 ?( l+ }  z& q6 u
end;        -- of the method& R2 k6 U( H9 K( Y1 X
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 6 n7 R1 ?& s9 A/ |; |2 q

, g" k9 A0 b4 K这是AGV_putin中arrive的method。
% Q- [, P% D! s* H% N: B
3 E/ w3 V5 J' X$ s0 m当到达物料速度越高时,这个报警更多,
2 K' R4 I7 S- \& I可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
; @+ p+ L2 b% R9 T程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?* V. a5 `5 U9 Z. s3 W, W2 {; S+ G

7 h" }) |. v! x另外一个小建议,就是move,所有的move都可以这样
( E3 d( j: k, Q1 R8 ?# t; ^if not move() then debug end
& J$ ~7 R! _3 m, ^3 N; G2 l$ C8 K这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。+ C; X  V/ @4 j& T* d/ Z! t
plant simulation中的free libraries有AGV模板,9 V$ ?9 k" H& Q/ v$ W) x/ j
里面也有案例。
0 u, |: f* X% m2 U: M我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
+ Y; G, c/ }: T+ t
: r0 z5 J/ }7 a! s我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 6 P1 ^, {  |4 u" t

0 j1 t1 D' ]7 Z, u0 K  m. T7 q9 x7 t那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 ! {. ?  ^5 }: f1 j/ w
这是AGV_putin中arrive的method。/ z2 e. i# m' @8 U0 ~7 C

! z- Z5 F9 r* ]' A  y3 F当到达物料速度越高时,这个报警更多,
& q& r) h) v; Q
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-24 12:18 , Processed in 0.027897 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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