设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7606|回复: 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'' _8 Z9 m# p( f+ x- t+ p8 m# g8 N
*/
! Z, {* d5 A1 V5 L8 c" ~is
$ D  ?, Z3 m" t9 @        part, GlobalDistObj, assignLObj:object;row,Lan:integer;+ u% y8 v+ _# I, ?2 R
do
& `3 N' P1 O) ~        Lan := rootfolder.Internal.Tools.AOLlanguage;9 B: ~& ~+ R9 l' R; o0 {
        if current = @.Destination -- else return3 p% M0 W8 J6 }1 i
        then
8 M( b* P3 f& S8 L, r: C, g! \                @.Destination := void;
. ~! T: y  R. @                if @.occupied then
5 R2 O$ K3 l6 H6 `                        part := @.cont;
$ R; T- d$ ^8 p" @8 D/ Q/ Y                        @.transpOrder := void;
- ]" U" m, K% S: E                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
; n, Q4 ~0 {  |                                @,root.eventcontroller.simTime);% Y4 g% y9 b8 n2 m) T0 i9 L: s
                        @.HasOrder := false;
4 t' V: U  v) z7 r6 }% ]1 w                        @.DrivingHome := true;
6 |* c: G8 M; [6 A2 x+ f$ r                        rgManager.tryToStartTransOrder;
# h4 O) c9 j0 Z( _0 T                        if @.Destination = void: b5 \0 C& d; L& P8 g% K( q2 Y" ~
                        then -- no transport order for vehicle @
0 {( T1 b+ ]/ ?! F& I' B& ~  S5 L                                @.Destination :=4 i# Y8 g( w4 d; k' v! O. q. O
                                rgManager.nearestFreeStation(@,track.~);
, }6 n% C" o: ?0 B; m8 ~. V' [( D                                newDirection(@);   : A9 u: r! R6 }% |* O
                                if @.Destination /= void then
) t1 A* I* z* K  Q                                        @.Destination.NumReservation :=
& q' v- C0 q% _! ~; k$ I                                        @.Destination.NumReservation + 1;. j# p. _. q; {, `
                                end;
0 {0 ]% U+ j& D$ x2 I                                @.CurrIcon := "drivingHome";
$ r* c) m" c  l                                @.DrivingHome := true;
4 g5 \* [- D/ [& C& M                        end;2 p) O) @5 l: W5 h2 h* f
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station: K" N1 I# E( ~
                        part := @.transpOrder;$ I9 Y' {7 ?  W) b
                        part.move(@);-- load part
8 B$ X4 Q% \! \+ M* O- @9 o- o                        @.CurrIcon := "load";- }# B/ s# s4 N3 `7 w# `
                        GlobalDistObj := part.globDestination;* Q* K4 C$ C1 J/ \' s$ w. I0 B0 i3 j# J
                        assignLObj := rgmanager.rgAssignL;9 \% K9 b5 }, \( Y9 q
                        row := assignLObj.getRowNo(GlobalDistObj);
5 G9 o6 B/ R% s5 ?# e                        if Row = -1 then -- since 706 a8 l. F, a$ }" h- g! W
                                if lan=1 then, e1 C( q3 Y& H
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),. e$ ~# Y& I, r9 _
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
4 v2 f3 j" a3 N, k: s% G4 e                                else
0 ?* C& Q) b# ^  Z* y6 Y# X                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
  i) G! J2 o$ V3 f7 M1 c, ]% r                                                to_str("in docking station: \"",?.~.name,"\""));                                4 \" _# s3 P9 U; O
                                end;5 K) I3 B5 S" i% _; W
                        else1 M% Y& D& O: l
                                @.Destination := assignLObj[1,row];9 U* `* P: F. q8 F
                        end;                       
7 `$ L2 U' N# ]# [                        newDirection(@);) R9 Y3 j: T$ f" M2 k2 w- V
                        @.HasOrder := true;2 n/ @2 d2 f! j( X2 r5 J3 U
                end;
0 v: \4 [2 N- f. s5 O5 }. z        end;& q$ ~7 |% u  M7 F- K
end;        -- of the method2 K4 x4 B3 J; B2 G
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 2 |/ g1 I% V  t% ^9 }1 u

1 Z0 ?3 W2 `$ x' h0 m& o) r9 N9 M6 }这是AGV_putin中arrive的method。$ {7 G1 D6 Q) f
7 K! F! C: m: R
当到达物料速度越高时,这个报警更多,
; q2 U  q/ J& v, R' l9 J3 X; J可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
) M* v+ K2 J+ [8 {( c% a- K程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
  I. D* S9 ^' z5 C7 ]5 I7 L8 C) r* u4 M! c! J/ c5 q" p8 u7 Q
另外一个小建议,就是move,所有的move都可以这样0 K" h5 G1 I% @, ]
if not move() then debug end9 y- Z. a) b  C- c
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。  e0 n( ?. [) D
plant simulation中的free libraries有AGV模板,
3 I5 ]9 o+ q5 ~" f  d( `里面也有案例。! n" S3 v8 l; e. a6 e
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
$ g9 [0 Y. \6 g
& o" m. P- s0 \# s4 `  r1 @( l我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 ! I! L4 v$ E# n

  J6 V& ^+ t$ J  U6 L那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
# `. z- [. s1 x6 U! ~这是AGV_putin中arrive的method。3 T4 E, o9 R. R3 X: w9 _& _1 U+ Z
! h9 k$ X! `7 v* |( ?- B5 n
当到达物料速度越高时,这个报警更多,

" O9 m% B) Y8 J0 k/ x* \5 _; ]另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-19 19:35 , Processed in 0.022585 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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