设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6900|回复: 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'
- q; g) k+ C0 v' ~, O1 S1 X: j*/, l' d% ^2 X) U, J- G
is
4 k, w" F7 U6 r7 x        part, GlobalDistObj, assignLObj:object;row,Lan:integer;/ r3 a: O- J2 X& c( W8 f  O2 g
do. L5 C2 O. O7 C1 ^& Y
        Lan := rootfolder.Internal.Tools.AOLlanguage;
. Y" D, i) I: @4 T; ~; Y! F        if current = @.Destination -- else return
( G" h0 Y# ]- |9 D7 Z# a        then
' H5 J# Z/ L  C6 _# h                @.Destination := void;
* U5 T( C9 R3 T                if @.occupied then
/ r4 w% H5 O6 Y/ y                        part := @.cont;6 G- u; W" _6 t, k8 t0 S) S- e  Q. A
                        @.transpOrder := void;0 P" R, ~9 v5 x0 U
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
6 W( g" D9 E+ g  ]                                @,root.eventcontroller.simTime);' A3 G2 T: z; G# W
                        @.HasOrder := false;
* z. J4 k* L# O( L; c9 v                        @.DrivingHome := true;( l; m. _; o* e4 }5 u& V
                        rgManager.tryToStartTransOrder;* Z6 k1 R: O  t
                        if @.Destination = void
) x& @7 o, @( D3 G$ x                        then -- no transport order for vehicle @# |! ^% ?4 b: c4 @
                                @.Destination :=
2 k+ e: K4 A' h9 J. B( M                                rgManager.nearestFreeStation(@,track.~);4 r8 Z- k: U) d, L- |$ n! a3 {5 i
                                newDirection(@);   
8 b" v( k# ~4 p$ M8 v                                if @.Destination /= void then0 N9 |* w2 @* K6 h
                                        @.Destination.NumReservation :=  D5 q4 y0 h# m/ }: K- |
                                        @.Destination.NumReservation + 1;
4 n/ L" \, x2 d                                end;
- c' y9 C3 M! `$ v+ o% U, j2 o$ k                                @.CurrIcon := "drivingHome";0 v$ N. w+ B: R0 [
                                @.DrivingHome := true;; J' X4 j* V/ n) \6 @
                        end;& p- L" g6 o) D1 j/ S
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station2 u6 A4 j9 R9 I! R+ K
                        part := @.transpOrder;
5 D2 K3 W5 ^3 ]0 S0 y                        part.move(@);-- load part7 B( e% w* q: U$ K
                        @.CurrIcon := "load";
# J! f$ j- c1 o5 H  {4 e- G: N: M                        GlobalDistObj := part.globDestination;  g- y7 A1 @$ _; E8 r$ B
                        assignLObj := rgmanager.rgAssignL;
! W  I; T8 [, W  Q5 u5 d7 y                        row := assignLObj.getRowNo(GlobalDistObj);
  Y5 K# ?8 L: b) X( C( x% b' x0 f                        if Row = -1 then -- since 70
9 V: R0 S8 N/ ?+ y7 @9 }2 j                                if lan=1 then
' i% P, e' ^  M  N                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),( A$ P# q8 {, c5 t
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
; z3 t2 }# P( Z0 g: X% W$ Y4 W                                else6 i& d9 ]! |# F" c
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
3 T- Z7 a; ^8 _                                                to_str("in docking station: \"",?.~.name,"\""));                                2 `) p  }# L) H7 G* D; @' s
                                end;% f- W3 z  [$ R
                        else# {& k2 ]% z) K3 \( N, x7 }
                                @.Destination := assignLObj[1,row];
% g1 S3 J* v$ `2 X0 o+ N7 R% s                        end;                        + F$ [+ @2 W1 O7 ^  J- J) C
                        newDirection(@);- [" |# x+ i' c* S$ F" I) S* q& a
                        @.HasOrder := true;
$ h* D: k2 F1 }                end;0 h: }& X" n9 Q+ _1 @9 R  F9 K
        end;
' Z# Z) Q6 o0 J5 a/ Send;        -- of the method
2 s+ ?$ L1 S$ ]  v
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
- c8 f- l/ d) k" t7 j. i. s# r6 }8 J
这是AGV_putin中arrive的method。2 v) Q- I4 z8 p3 @, c7 o: w

% s. z0 v# B. I5 m& M8 B9 o# G当到达物料速度越高时,这个报警更多,
- R" U3 ~8 e) F$ R+ L; j' d可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
' ^: @& L8 u2 D3 |* W5 g1 M程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
* y/ m0 s, F, L- }
) \  e0 I+ y5 U$ R" |5 X- T另外一个小建议,就是move,所有的move都可以这样/ t0 I, F+ z- ^% ^/ N
if not move() then debug end
" v  Q' _0 M; q" q9 N; Q. ]这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
! q; c4 F) J3 p. g$ {* r* D2 mplant simulation中的free libraries有AGV模板,
) |3 P$ S$ \6 W6 ]; T6 d里面也有案例。: L% H1 M" j$ |) l. f7 V1 |
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。" f) q- M( c: C# l6 `  A0 U

# E2 m5 r4 h. z: R0 I) O/ U我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
1 V& M* m% V: q" m' K% H  t
+ Y! T' q( C: }4 Q5 O. S那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 - Y7 {( O1 c) ^% e
这是AGV_putin中arrive的method。
0 Z8 C+ P; r% z
4 o) x  H% A; a' _3 B- V9 H当到达物料速度越高时,这个报警更多,
  a8 R$ ?/ a- P! ~  \) q- C& s
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-5 17:07 , Processed in 0.029322 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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