设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7162|回复: 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'
$ |, Z4 s; _8 j*/  Q8 C! w8 w! ^% C1 o7 z" b
is0 X: \8 M9 a8 P- y4 V
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
& @) Q8 N# l* `" r/ X8 Mdo: T  f5 `$ L$ x2 r/ _+ T, ?) P
        Lan := rootfolder.Internal.Tools.AOLlanguage;
* ?* p( E; o) W0 b/ ]2 w7 N        if current = @.Destination -- else return
. Y6 |- z9 l0 C0 ?        then
1 f9 k* Z2 F' d0 ~# _7 J( l7 x                @.Destination := void;
+ C% N3 X  x% F3 `6 J                if @.occupied then
+ x6 r& e, E  b  n( Y$ z; N# z5 \                        part := @.cont;( i" E3 i- X6 m2 j% c$ x
                        @.transpOrder := void;
8 v/ }9 s, ^  ~/ `: t, c3 m8 g0 R6 ?8 S                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
" i  w3 K0 {: g  T, x) ~4 [/ f                                @,root.eventcontroller.simTime);- h& @2 P* s( ^! Q
                        @.HasOrder := false;
8 K9 H% w( ~1 k                        @.DrivingHome := true;! Z6 V* F2 c- y9 U
                        rgManager.tryToStartTransOrder;
9 T1 k; H' T' y                        if @.Destination = void$ h2 G, f* Z8 Q3 b: L* r
                        then -- no transport order for vehicle @9 E0 _6 O. A+ u) R& o* p
                                @.Destination :=# |+ v' G  x3 K1 ~1 f
                                rgManager.nearestFreeStation(@,track.~);, |) A! i7 _9 v/ W8 O3 d& }! ^
                                newDirection(@);   # J) Y1 ~/ m9 W  i4 t/ r
                                if @.Destination /= void then/ f& F, z7 D5 x' S/ o7 ^
                                        @.Destination.NumReservation :=' F% g1 @+ t9 A) V
                                        @.Destination.NumReservation + 1;
. l5 `/ J' K: H) z                                end;/ [* h; ]0 i+ v0 n, R
                                @.CurrIcon := "drivingHome";0 x* e( t8 [2 j+ z5 P% L
                                @.DrivingHome := true;
3 ]3 H" a1 E& C                        end;
$ s4 I3 @9 n7 _1 E/ W3 x                else -- the vehicle @ is empty, both vehicle and part are in the same dock station  k6 v- x  v$ `# W8 b8 V; }
                        part := @.transpOrder;6 e3 x' J  m9 G# ^- R
                        part.move(@);-- load part; O$ j2 l# D3 b5 Q0 r
                        @.CurrIcon := "load";
3 `% B8 `1 X) O* Q+ r3 r                        GlobalDistObj := part.globDestination;
% D# c* x' L6 a' B- ]( l                        assignLObj := rgmanager.rgAssignL;
! G3 S" ~8 G4 w5 M                        row := assignLObj.getRowNo(GlobalDistObj);
* s, [+ r9 S2 ~1 B) c8 i5 b                        if Row = -1 then -- since 70
$ u; _% x* K$ b. w$ i5 P$ F                                if lan=1 then
; C! `( x# o9 g- d                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),: w3 v+ J+ r; {: O: @
                                                to_str("in der Andockstation: \"",?.~.name,"\""));' ~8 z! w+ u2 T; i8 N  K
                                else
5 I) Z7 V2 M% `& \5 I                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),0 T1 q4 x2 ?3 B4 t% ^
                                                to_str("in docking station: \"",?.~.name,"\""));                                . P/ Q" E) q9 l; A8 R" n9 J% s# j
                                end;
' X/ _) k6 x: B9 T2 R* ^7 K                        else
4 ~1 s0 P" ]6 A/ N; a                                @.Destination := assignLObj[1,row];, f( Y3 N+ K% h/ E% t8 m( T
                        end;                       
2 T1 M! B) E+ X* P6 f4 B2 S                        newDirection(@);
' L/ C; Y. p% v0 G3 L( \/ a                        @.HasOrder := true;& Z3 I& c0 g- ]9 A9 l
                end;
. [7 \1 g9 T4 B  k, B1 B        end;8 z0 x% Y' m# l
end;        -- of the method! A# d1 k/ o" O& ~  q% z, K3 D1 x
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
- O, i& V- P% E5 x4 }3 ]5 D0 d: e6 |% X+ X
这是AGV_putin中arrive的method。
) i# R% _7 s* \" `8 _8 Z) L& k* {0 V3 h: p9 W7 Z2 \$ u2 T
当到达物料速度越高时,这个报警更多,5 E1 `% ], M3 j% \( o+ ]
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
8 f  l! t* [& A0 P; \1 u/ U程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
. C; C5 W8 A' _3 g; K8 S( Z5 Z( x2 K
另外一个小建议,就是move,所有的move都可以这样0 N! x1 N7 _) G+ n% \5 B
if not move() then debug end
3 J! z* N$ o" G) D  f1 {, [这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。- C/ C; K3 |  g8 `$ X9 s% u
plant simulation中的free libraries有AGV模板,
- B; L% r+ ^4 @% X, I$ X: T) t里面也有案例。
; R) E1 h- W, E) u! N我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
) E& j% l4 @7 s* V" `7 K% k5 V  s- ~- ^: C* K+ ~) ^6 W
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 ! q- G( V( r- e3 G3 j! k: F& X3 v
) k; X* U* G  |5 N. W4 v6 O
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
$ l- a- j1 C6 R5 k0 g这是AGV_putin中arrive的method。
$ Z" ^- w- W5 E! A1 M
" i% I. L3 O5 D6 t; Y9 M. f& b当到达物料速度越高时,这个报警更多,
1 l: O$ R% L1 b- u- `+ U
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-23 09:48 , Processed in 0.016132 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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