设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6822|回复: 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; v, z0 I( S* A1 Z" V( w*/
5 t/ Y' ]0 R# n- A& p' zis
" ?* N) i1 [" n" ~        part, GlobalDistObj, assignLObj:object;row,Lan:integer;- E# T# b4 n4 K3 _5 t# ?
do
, N. D3 n" T9 W) |4 g6 U1 ~8 t0 P4 o        Lan := rootfolder.Internal.Tools.AOLlanguage;
2 [, _- w- Y+ v/ h" ?7 C" m4 T; V        if current = @.Destination -- else return
) ]. |6 k9 A" ?- j" K        then% f& C1 {8 x1 P& ^/ s
                @.Destination := void;, `2 u! ?3 }* z; z0 m* P
                if @.occupied then
/ u  G% P5 t5 y: X1 x" j+ G                        part := @.cont;2 [8 t( o8 C6 F% y7 u" N5 _
                        @.transpOrder := void;
9 a& V( X4 D4 ^( Q+ S$ Z                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,! A% z+ ?2 X7 g6 U% m
                                @,root.eventcontroller.simTime);7 D4 L. x. Z+ x; t  J
                        @.HasOrder := false;
# l" X# L  M. P: K) H" l                        @.DrivingHome := true;  K6 X  ]  `; N/ a
                        rgManager.tryToStartTransOrder;
3 i1 o9 y0 H5 t) a- J                        if @.Destination = void5 `! E- ?, b' R1 M6 |
                        then -- no transport order for vehicle @
' X3 q8 z- H7 s* `4 [                                @.Destination :=
/ Z5 N9 {) C" ]5 Y( |  x                                rgManager.nearestFreeStation(@,track.~);
; A' `% P* R& [9 ~0 ^" R                                newDirection(@);   " C( A4 }  U& q5 f( X* t) J! l
                                if @.Destination /= void then  g, E8 C  V2 g0 K  h' V" _# ?5 @
                                        @.Destination.NumReservation :=
2 _+ k$ g3 c* E4 A  t' o% A; U                                        @.Destination.NumReservation + 1;. S6 \  Y4 l* G% f& A  W: ?, Z% f
                                end;
% L8 l& l; K: w+ J                                @.CurrIcon := "drivingHome";  q+ w2 a8 y& e
                                @.DrivingHome := true;9 G! r  U5 m, a# w
                        end;" L+ i; O% o9 @0 A( m/ Z
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
/ F" H! W! r: M6 F                        part := @.transpOrder;
% c. _5 v3 ?+ p: n  N, e+ }# z& c) C                        part.move(@);-- load part
, G( S5 @4 ]1 M                        @.CurrIcon := "load";
" q3 p3 B6 T  X                        GlobalDistObj := part.globDestination;
' s7 k+ S% e( y( A5 M% e                        assignLObj := rgmanager.rgAssignL;
, ]! ~* n1 c9 P# L! [                        row := assignLObj.getRowNo(GlobalDistObj);
2 R: I$ @% }0 {+ t7 M  k8 i8 C0 D                        if Row = -1 then -- since 70% }1 x! {) v" F8 e
                                if lan=1 then( a. Z7 u5 I$ T
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
$ d. z: e# x- k" M* o3 e                                                to_str("in der Andockstation: \"",?.~.name,"\""));
* Q! m0 v( y1 ?. o9 F                                else
& [8 ^6 Q% g! Y2 l                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
7 W- T2 E% o* P; R. |) T3 T7 I4 }" {2 N                                                to_str("in docking station: \"",?.~.name,"\""));                               
, u2 M: d9 ^4 g4 B# ]                                end;
( ?+ W, `. {: t( y4 }$ P5 Q4 f                        else
6 J1 K& ^2 F0 H8 i, U                                @.Destination := assignLObj[1,row];
8 Z7 R* h+ x' }* e) W0 \                        end;                       
, h$ u1 N1 p0 j7 V6 ^                        newDirection(@);
+ v- E: W0 p: Y! b% }                        @.HasOrder := true;
1 L0 J" L6 P0 Q% S  r7 d+ m# c9 i                end;9 _' T8 ?6 O" `+ t& |
        end;) J7 O8 r4 |# D5 M/ u/ O
end;        -- of the method( ]% @) n8 S: y
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
+ `! q% i( J& ]6 J8 e$ E
; M! v' f( X* B+ D/ \这是AGV_putin中arrive的method。
6 h  P, e, ^3 V) a
( K+ j4 T% [6 D当到达物料速度越高时,这个报警更多,$ w( U4 b( v) K
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
, u2 l3 N9 O( ?- C. W程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?' w. p; K4 ]3 |5 b! f7 I/ {

7 O' m% q* ~2 g3 F2 j另外一个小建议,就是move,所有的move都可以这样  l* O) F6 v2 |
if not move() then debug end
6 X7 M" H9 e0 w6 a这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。& Y1 t/ ?) E( c: R
plant simulation中的free libraries有AGV模板,' i2 {  [2 m' m4 b! r6 \9 s
里面也有案例。1 Q; Y8 g4 |; x2 q
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。$ Q/ k* i9 ]+ u9 x, ~5 J) l
/ a2 c0 W/ {4 w
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
- d9 k' H  k+ q) `
3 T6 `, W8 a! N- M1 s那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 ' |8 X& O) \$ v  P4 ]9 T
这是AGV_putin中arrive的method。
6 P$ ~& K% m: H* k( _  Y  u- Z, A/ H, V0 Q
当到达物料速度越高时,这个报警更多,

3 u1 G% C$ h7 f, i另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-28 16:51 , Processed in 0.027481 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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