设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9308|回复: 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'
- ]' T4 [) l* N; y& ?9 G*/
0 g  D9 q, d6 `! Iis& u7 y; U+ g# P( J
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
0 l$ M& F' w8 Vdo
6 o6 }3 K( M# D% Y  W1 b$ y$ @        Lan := rootfolder.Internal.Tools.AOLlanguage;4 _" a# N  k. W# m, w+ M
        if current = @.Destination -- else return
& X8 ~8 F6 Z6 i$ f6 _: f        then
- \0 `# T5 \9 Y8 U6 P/ S. ~6 a1 \                @.Destination := void;8 {. ?- g) Y! l6 E' m2 R
                if @.occupied then7 w" g/ z. z; q4 @$ t  U
                        part := @.cont;
% }3 _. W1 c$ C# [                        @.transpOrder := void;, x3 f0 K) k- @9 W
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,) U9 u8 B6 E+ m% l' q5 b3 r+ ^
                                @,root.eventcontroller.simTime);
. [2 J: y* t) l                        @.HasOrder := false;
# B" c  G5 x2 A, I# X) K                        @.DrivingHome := true;$ J9 C3 V3 {: i
                        rgManager.tryToStartTransOrder;! S/ c% b- P' k; f$ A; X
                        if @.Destination = void
7 |0 S# y7 r- p' d                        then -- no transport order for vehicle @
: ?- K+ M9 {' l/ G* _                                @.Destination :=
* M! B8 o$ v& N# A6 \$ ^                                rgManager.nearestFreeStation(@,track.~);1 h! u( f- I  ^" P
                                newDirection(@);   
. e* Q# [* V9 d  p- A  \                                if @.Destination /= void then% I; Q) s5 |4 N8 ^- F: G! q
                                        @.Destination.NumReservation :=& h% Y7 \: D* ?) b" Q0 h/ u1 K5 i& p
                                        @.Destination.NumReservation + 1;
. n  M, t+ t6 X                                end;
; Y5 B7 B  {; L5 }$ ?                                @.CurrIcon := "drivingHome";9 `, W% ]% O( ^/ b
                                @.DrivingHome := true;4 H' H& }5 }3 _0 U3 d( i
                        end;! A' v7 h8 f0 A1 J, @
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
7 m# o& s% q' H: q& @# G                        part := @.transpOrder;
. o. X* b2 P5 S( \9 [                        part.move(@);-- load part
! `' J9 p% `% C3 a" g8 x                        @.CurrIcon := "load";
2 p- e" o6 W- O& i                        GlobalDistObj := part.globDestination;7 z+ r& Y2 w- K  s
                        assignLObj := rgmanager.rgAssignL;
6 Q/ M4 e! M; D- Y% }) i+ M8 a& ~: }# D. |                        row := assignLObj.getRowNo(GlobalDistObj);: k! Z8 M$ x# o
                        if Row = -1 then -- since 70% h% f* H  s% b# v& z4 J
                                if lan=1 then
/ ?* O' ]. @# h                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),1 ]' v$ D& K. A. `. M
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
5 V6 e# X( J$ A5 I                                else
) h3 o) o8 [0 X+ y$ |! W                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
$ h6 B; k: x  w/ G. }2 U                                                to_str("in docking station: \"",?.~.name,"\""));                                , k, H/ N1 ?' B& y0 F
                                end;" G4 ]* Y( c  i7 A6 ]$ T
                        else
+ f- Y7 D) p9 H  R6 k8 q4 l( k                                @.Destination := assignLObj[1,row];! B6 w& F5 @3 v6 e. D  b0 D
                        end;                       
. p& R' _7 p& a. {, Q; c* Y                        newDirection(@);
1 J$ S* t+ M, L                        @.HasOrder := true;
5 F  r+ V1 F3 G! z( h5 ~                end;3 O7 ]4 Y! k9 {/ K# O5 W
        end;' Q& t- A# x% q* O
end;        -- of the method
( T+ O! m( E( V- y0 Z0 F4 X- k/ g
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
; x5 q! ]' X! y: K/ N% n2 b7 @3 S4 E, v3 o! m# B  z, b
这是AGV_putin中arrive的method。/ \, T* r0 U0 K2 J6 x" T7 Z
6 Z/ w# @, j" X) d' _4 O
当到达物料速度越高时,这个报警更多,& y) M! m) }  W3 D7 L
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。* |+ M7 E5 V9 X5 J; l& I) o( M
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?, }/ n& ]/ Z/ |  G# L9 B' ~% A7 t

& h% t. E* ~4 L另外一个小建议,就是move,所有的move都可以这样
; H1 g" W/ t! h  Jif not move() then debug end
( }2 v1 U( D- p/ u, V4 q这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
% d# X% v6 F  u$ m! W. n. Tplant simulation中的free libraries有AGV模板,8 l, ~2 u2 l6 d% M# @
里面也有案例。
6 d% V5 ?9 Z' a3 f9 ^1 e我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
$ \# ?6 @9 t* ?  I% }* j/ Q6 t# V* z6 ^6 \* Y, U3 d
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 : P8 W: d: O- l, O) g
4 s4 P! |5 l$ n& ~1 {3 w2 ?4 m2 K+ n9 {
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 4 n2 }# _' R: f$ D
这是AGV_putin中arrive的method。
+ U( R2 U- M, [9 d0 S- o# O2 f: {! n- S- Y; ~( I' ^
当到达物料速度越高时,这个报警更多,
6 y$ N( X9 n* U3 c6 n" E) W1 i
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-7-24 12:18 , Processed in 0.016417 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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