设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6102|回复: 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'' k+ q0 o4 o# `# R5 P
*/
; z# z, }1 t* |% Z0 bis
. G# {3 B3 x/ c# n        part, GlobalDistObj, assignLObj:object;row,Lan:integer;! W% i" O  Q7 ~4 A. A+ Q% n" W
do
! g. c4 ^# P  O/ l5 _+ K$ |        Lan := rootfolder.Internal.Tools.AOLlanguage;5 i* Z$ k3 t9 w4 t* ], `. Q
        if current = @.Destination -- else return
. O9 F; C1 X# O6 C3 S        then" c: t' z) j6 ~" n
                @.Destination := void;
8 ]$ U* A- d6 ?& n$ q  t- p: |3 j# {                if @.occupied then
5 a6 v# x. ]  E# T' c                        part := @.cont;) y% S- Y+ }; y* q& J: B2 G
                        @.transpOrder := void;, B1 R6 W1 L. V, ?9 Z
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,. T& _  B% w% O
                                @,root.eventcontroller.simTime);/ T- o* ~3 w: L5 ?0 f
                        @.HasOrder := false;
& v/ H" A! q' w8 ]9 d+ R. p' W                        @.DrivingHome := true;. n. E- @; H7 m% b
                        rgManager.tryToStartTransOrder;$ J' g+ o  X: M$ r# G
                        if @.Destination = void: T: X1 S8 Z( _+ C. Q
                        then -- no transport order for vehicle @
+ _: Y* B: U/ ~, @: g                                @.Destination :=4 U* Y9 E( j' w( v9 J
                                rgManager.nearestFreeStation(@,track.~);
1 f7 o: P3 ]; y) t7 k                                newDirection(@);   
: A5 T0 ^3 W: `                                if @.Destination /= void then
7 ~) r" V1 D6 G4 G3 W                                        @.Destination.NumReservation :=
( _7 T( L7 F# r  }( L8 C                                        @.Destination.NumReservation + 1;* E# y6 G5 y  e5 N0 d+ O& P! Z
                                end;8 v- n: X9 c5 l: }3 J: A3 E
                                @.CurrIcon := "drivingHome";( K* c, P" D+ Q0 g" Q5 T, w
                                @.DrivingHome := true;3 t! U" K- c/ S2 W3 W# ^! i
                        end;
  M" F: I7 `8 H8 _7 N" g; Z6 L                else -- the vehicle @ is empty, both vehicle and part are in the same dock station6 `$ p0 E- J- J& e! P% G5 z; }
                        part := @.transpOrder;
8 U$ H' V4 ^1 C. t4 |; x& ^                        part.move(@);-- load part1 b- d% V% P* ?% M! F) D4 h
                        @.CurrIcon := "load";
4 E2 V' b, A! r7 o7 m                        GlobalDistObj := part.globDestination;" v9 k3 e9 ?& a( m* p# |
                        assignLObj := rgmanager.rgAssignL;# v+ e/ v. ]* z9 o+ ]1 X+ Z0 i
                        row := assignLObj.getRowNo(GlobalDistObj);
4 ^  e" Y2 q/ T$ u. Z8 N1 {  x* I                        if Row = -1 then -- since 70
/ k! H1 R! O3 k5 m                                if lan=1 then8 Y. ?/ p+ [8 J) P8 a4 E# {
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),& S1 J2 \; A& r3 S# Z- q
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
, Z4 v: I  ]3 t                                else
0 G& O9 h) T, q+ J' R5 D6 f# x                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
& n) N9 x3 e  |. b* i- w- R                                                to_str("in docking station: \"",?.~.name,"\""));                                . n8 i- ~+ W3 `3 E" A1 c7 W
                                end;
/ e0 F* E1 W+ w* k/ F0 h5 E  |                        else7 r) |5 T; t9 I/ w; q4 C
                                @.Destination := assignLObj[1,row];
) Y2 T8 p9 ^9 H0 w: [) U6 u* ^                        end;                        , k6 d% c: R# v7 a; w- a( ~
                        newDirection(@);
, m5 O9 S* O9 l1 {5 H9 D1 Q& r5 U                        @.HasOrder := true;* h7 F4 S$ H" r+ N. n. v, W: O& l
                end;
+ @. y1 A/ I0 H( P) u% ^        end;
# _! U7 F) u* |9 W; N. Jend;        -- of the method
( u  F% Y" y, o8 @
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 ) ?0 e7 ^1 L9 l
; X7 k  V+ m. ]- Q7 W% k
这是AGV_putin中arrive的method。$ X& x1 }9 t$ H2 ], T
* G+ W/ e/ m* k7 ]2 a2 F
当到达物料速度越高时,这个报警更多,: x) T0 o. m& P4 w
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
! o% O1 |( e" O程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
) t' \8 I  L! P( j& Z$ q3 y0 C/ `4 F8 ^  q
另外一个小建议,就是move,所有的move都可以这样
( l9 l* m3 j2 b1 K) Rif not move() then debug end
, m0 ], k+ I# C这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。) c7 W8 a, _& R" ~' Z" y
plant simulation中的free libraries有AGV模板,
3 k( V9 |4 P; K. g里面也有案例。5 A, P8 ^2 O+ W+ e* t
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
0 c6 |6 u+ i* I( c! a3 s! j
* L' h' p& ~# X: P4 f, u我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 $ Z, t6 |4 P3 e$ e' B  I5 t' o
; z/ \5 t+ M3 g8 P
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
# h, x/ p5 ?# y6 V这是AGV_putin中arrive的method。
: b/ z: ~. |/ U6 x1 g9 ^8 ]6 X
! h9 b  Q" Z6 W/ \' n; ?! `+ v" ]当到达物料速度越高时,这个报警更多,

/ O8 @" T9 u. @4 U- k3 k5 C另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-1-18 16:40 , Processed in 0.018037 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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