设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6290|回复: 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'
# z$ ]; ~6 D. Q5 t5 O$ E+ E/ k*/" n/ t. _6 X5 `/ L1 u
is
/ X/ t2 N+ q: X7 J0 d        part, GlobalDistObj, assignLObj:object;row,Lan:integer;  _3 }! w- \. t: K/ q% _. D& _& J8 e
do: H" F# }" |8 r5 H7 v- j, n6 l
        Lan := rootfolder.Internal.Tools.AOLlanguage;3 n. ?! J* P% s- A2 I# T% r
        if current = @.Destination -- else return
: e9 X9 X9 k6 u. \        then
0 o; ~0 g3 P7 e$ Y2 a                @.Destination := void;& |3 f0 K' u4 j8 i' o' p! A9 K
                if @.occupied then% C/ ~9 K, X+ u, J$ g
                        part := @.cont;! v! J7 h' s2 [, h# F9 Z
                        @.transpOrder := void;( N2 i! T& J- a( x6 v/ ?( b
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
9 M; I  _: B/ P; Q! C. j                                @,root.eventcontroller.simTime);
5 B' i" g4 t% G' R                        @.HasOrder := false;
% o7 N2 V9 C* Q/ z' U% o6 i( ]: L                        @.DrivingHome := true;
( M; a2 S8 r7 C8 @                        rgManager.tryToStartTransOrder;
5 o' E1 ^. q" [% \% W2 c! y, ^$ q                        if @.Destination = void
9 C/ o' E0 ^  |8 p" `5 m                        then -- no transport order for vehicle @$ i, V: B& h# A3 g5 e+ q
                                @.Destination :=
6 Y) ~5 K* ?- |0 D+ k                                rgManager.nearestFreeStation(@,track.~);& I  N7 |2 h5 ?' U! @- \
                                newDirection(@);   . D8 c/ s  Z* y! S1 D! s4 u
                                if @.Destination /= void then
9 X) ~, X" M& ?5 s( i) u: _                                        @.Destination.NumReservation :=. {& N! t$ i/ A* f* D; k
                                        @.Destination.NumReservation + 1;
4 O( O% T- j: c: s; Q                                end;3 x' U' _3 y* u  v
                                @.CurrIcon := "drivingHome";
2 o0 @" ?# y: l( x2 Q) T6 K                                @.DrivingHome := true;
& A* {+ g& a& t4 T8 n" Y                        end;# n( A8 U* G) @" F
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
$ H# G/ X  B/ u5 H                        part := @.transpOrder;! }: h" l, T+ C. p) p- S" [
                        part.move(@);-- load part# t7 P8 G2 H9 N
                        @.CurrIcon := "load";9 e& l$ i4 E. u! p1 f
                        GlobalDistObj := part.globDestination;
0 \! b7 u. s' N                        assignLObj := rgmanager.rgAssignL;# i4 t/ K4 M) q3 e( q) Q, k! Y8 E  `% s
                        row := assignLObj.getRowNo(GlobalDistObj);0 M/ U, E4 n- F# G
                        if Row = -1 then -- since 70# u" n! W' h+ c. X5 \+ H
                                if lan=1 then
* B, g! Q& Q5 h# D6 ~" ]: c                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),2 m& E& H+ s3 u/ o5 s
                                                to_str("in der Andockstation: \"",?.~.name,"\""));& s3 K0 Q, M( B+ o0 w
                                else
' w. M8 J7 I1 A& A8 W! r5 ]% J                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
+ s$ i+ t8 W  B                                                to_str("in docking station: \"",?.~.name,"\""));                                # x  ~; {& a1 k3 H$ d
                                end;
$ y6 n5 o: b) i# g; s+ c5 ?                        else
" z  e# `2 Y8 D* j                                @.Destination := assignLObj[1,row];
- H6 i7 B5 ]6 F1 f                        end;                       
- B4 G! E( Y$ H                        newDirection(@);  K  I8 W2 o' W/ F6 t/ g% F4 e
                        @.HasOrder := true;/ C3 y; [2 J, ^3 N% f
                end;
0 q; _6 w9 g' L& `- k        end;
& g* q, k7 ^/ t/ h. I* [5 Fend;        -- of the method
$ z8 J5 [8 E! |9 \2 W
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
9 S. h$ F- R. {" ]+ u6 D' `  u2 E% {; V7 n$ e: ^, H
这是AGV_putin中arrive的method。7 j) N7 p; x6 R0 ~

, Y- C7 x8 L3 ~- M$ @' o当到达物料速度越高时,这个报警更多,- h/ ]4 O1 a* J% g; H6 B  f9 |
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
# K. ?6 ]5 O; U$ v* K: O程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?' ?* M# j5 E5 V

  Z9 O- \. M1 E- Z4 k2 B+ r另外一个小建议,就是move,所有的move都可以这样" c. ~" o( q/ z' Q' ]  J" N
if not move() then debug end  s* j+ E, a7 a- H' Z
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。2 E# \& u2 W. Q9 m* l1 g
plant simulation中的free libraries有AGV模板,2 n, ?6 V1 y% P- K; w
里面也有案例。
4 x0 [5 ]& |8 {) P4 r' W8 E我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。2 k" I6 m1 E: k( j1 J7 Y  p! e
' A# y1 M0 Q+ q
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
+ N5 J. H" q+ C) y9 A
7 p) |/ p" H  V- X% Z1 O: Z- j0 p; P2 B那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 3 Z! O+ ?, `& r, T4 i' c
这是AGV_putin中arrive的method。
; X! P4 P3 H, K& f$ I! K
% A8 ^0 c; X, s" o当到达物料速度越高时,这个报警更多,
; I+ s* ^! M. j; G# ?& x! S
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-1-29 01:11 , Processed in 0.023687 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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