设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7984|回复: 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'
/ O2 i4 M9 @- N*/
, B2 \' c  X" G$ D* V; X& T9 g9 }is6 X7 Q# t' c( g2 A. t! L: r
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
6 B$ \5 D& P  D' j$ O, |: Jdo
" @3 i2 E. |; s; \        Lan := rootfolder.Internal.Tools.AOLlanguage;+ C; t( V* P& C; J- T: r% X
        if current = @.Destination -- else return
( T( P+ R) \4 B' c; C        then" p, m$ P# y# X+ ^; `1 F, v* l
                @.Destination := void;/ t8 h! I; e  e' n6 c2 f
                if @.occupied then- v+ C6 b; ^9 \' u+ S  |
                        part := @.cont;
( `; U  c, e0 G$ m8 i                        @.transpOrder := void;1 h" @, f0 [! K  s* [
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,4 U9 B3 k! X* u
                                @,root.eventcontroller.simTime);
- Y, K) m9 Q6 r) n, w$ x" y7 V                        @.HasOrder := false;
- ?! U, p2 O/ e/ Y8 ~: u8 g                        @.DrivingHome := true;
4 q. L$ o2 @; Y                        rgManager.tryToStartTransOrder;8 _3 P: }* V" f! q
                        if @.Destination = void  V. H) I" D* m
                        then -- no transport order for vehicle @/ }* |/ R4 V% S% O
                                @.Destination :=
6 T$ ~* p; S) x; S2 S2 O1 r                                rgManager.nearestFreeStation(@,track.~);& z; e5 k0 r# i6 z8 `
                                newDirection(@);   0 E+ f+ ?0 J; h0 I0 H
                                if @.Destination /= void then
+ H/ }- A/ {. L6 p& x. X/ d                                        @.Destination.NumReservation :=
/ D" j/ X" _! p+ z                                        @.Destination.NumReservation + 1;' E- Z0 ~1 x3 g$ U+ b
                                end;2 B* V+ N8 E* X8 ]! _1 T$ y  I
                                @.CurrIcon := "drivingHome";0 l8 k/ V8 S( {! }$ u8 L1 ?" }
                                @.DrivingHome := true;- l( P$ {7 r; ~/ j: M
                        end;
* M# V* D1 }0 E) ~3 t                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
) v5 o8 r9 Q. d7 E8 H) S                        part := @.transpOrder;$ L; ~0 Y8 s/ y+ {5 k  Z3 o
                        part.move(@);-- load part" a% x# D& \% ^& T# K$ E/ H+ L' F
                        @.CurrIcon := "load";$ u- V2 p& H* ~& L& i
                        GlobalDistObj := part.globDestination;
' a) m' g' U5 e                        assignLObj := rgmanager.rgAssignL;
# s; i" |  _2 J; u, y' b6 |  m5 a                        row := assignLObj.getRowNo(GlobalDistObj);) Y* h2 f+ j7 o) _$ n9 H
                        if Row = -1 then -- since 70
: ?* ]+ z5 k- ?$ K                                if lan=1 then: e! I7 @  N- O: a5 H: a: }/ Z- V
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),7 W- t- \; G! P' v5 t
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
( ~0 E$ ^3 i! s/ e$ e+ s# E                                else
3 v, _& p, ?  y! @                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
% f9 m+ T+ e: R6 M2 D                                                to_str("in docking station: \"",?.~.name,"\""));                               
8 v; Y5 w- y  E2 \9 ~- J' k                                end;
( j0 e4 D: X7 O: ]* N$ n! h2 Y7 G                        else1 ~. R1 F' C4 m; j% o0 S
                                @.Destination := assignLObj[1,row];
' I9 g0 I  M; m1 S, w5 ^0 W                        end;                       
% m, r: y4 I  o                        newDirection(@);
7 E  x% y2 N( N- d$ n& [                        @.HasOrder := true;5 o! l' A, B1 P% a; {7 y& w
                end;' f" l/ v: D2 e/ |: e  k
        end;( B/ x9 ^" R5 C
end;        -- of the method
* t8 L  z) b: a7 j8 m
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
+ r* S4 }! n: ?  |* T5 d8 }; Q6 z& X8 w8 a, V$ C7 ^( i8 o. A
这是AGV_putin中arrive的method。
/ m' J8 H4 L. ]1 d- Z0 j/ Z
: n, z. m1 S& w% w% j8 |( I当到达物料速度越高时,这个报警更多,4 J9 x; p- X; e  \
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
% D/ Z7 t& `' Y; N9 Y1 A程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
. H% G/ t8 y  u
- T  Q' O5 i' Z另外一个小建议,就是move,所有的move都可以这样
2 d2 N2 i- L7 s8 V! j( ]if not move() then debug end# o) l  d* ~. M8 l# H
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。, r6 S( F' B' c! _4 ~! u/ T
plant simulation中的free libraries有AGV模板,
* s0 c) j0 ]4 t! @! @/ h里面也有案例。. Q' `0 f. O7 ~: G. W
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。% @" n5 I3 D) U
. S' i* P! [' _5 |
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 5 v6 l3 d, e# N  V0 v! W" ?1 `4 O
" a1 P* @. q7 N  t1 }4 b) q
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 - ~" E6 _& k: n0 V* I2 ~* _
这是AGV_putin中arrive的method。
. M8 p  I8 `$ g1 U/ j! o# Y8 P$ T  z- F0 V& @3 R$ Z# h6 u
当到达物料速度越高时,这个报警更多,
+ ]4 a7 R9 q) G! W+ R. N
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-9 01:03 , Processed in 0.018023 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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