设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7616|回复: 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'
3 I# ~7 L3 w: I& c5 P% G*/0 R/ U( c1 i  j! p) M
is  l$ m% v* S2 V6 U2 P9 @& @7 G7 L
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
1 S9 L: N0 ]8 C2 a& Ado
: M" u4 X5 b4 h( T        Lan := rootfolder.Internal.Tools.AOLlanguage;
6 m1 `" I! O3 _* U, t6 E" R        if current = @.Destination -- else return
% d0 y# l; e* b( w        then* z' W! @" b- z3 j: d6 `* o
                @.Destination := void;1 p/ o+ s8 N! K( u9 I* B  \( o
                if @.occupied then
* Y% U4 B7 P0 i                        part := @.cont;
+ e* M( L$ h" g( W/ f                        @.transpOrder := void;
) Q/ K$ I5 V, ?2 D) `" N                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,% ]7 x" u& n+ \( Z
                                @,root.eventcontroller.simTime);3 a. ?% Z# B& ?3 z; _
                        @.HasOrder := false;
# d9 V/ H% b# V/ |                        @.DrivingHome := true;; v; T% B3 A; M; z5 v# V2 T
                        rgManager.tryToStartTransOrder;
* |8 r9 S  H  L! m7 e' m: A                        if @.Destination = void
+ Y* F5 p; K, H# J3 a                        then -- no transport order for vehicle @: b6 n$ Y9 J; ?8 M  l3 `0 o0 u
                                @.Destination :=
9 f  G/ s2 \& Q                                rgManager.nearestFreeStation(@,track.~);3 L% b! j' t+ L# m4 W/ E
                                newDirection(@);   ' t* W: l3 c8 k! U) D7 @
                                if @.Destination /= void then
- k" I5 j4 k! n5 c# D8 o$ j                                        @.Destination.NumReservation :=
2 Q2 h0 s- ~; F/ e8 M                                        @.Destination.NumReservation + 1;
( J1 l# V* U4 `1 L                                end;' {( \! D) S$ b/ o% N
                                @.CurrIcon := "drivingHome";$ T7 a* Y7 n; p7 f
                                @.DrivingHome := true;6 u7 _$ M% Q! L$ B2 L2 K9 T* L- r
                        end;- R9 _, _, T- J: I! ], j4 ~
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
7 ~1 v$ ]3 u- ?4 @$ u  z+ r/ M! N                        part := @.transpOrder;/ l% v2 |( G1 f7 a
                        part.move(@);-- load part  y1 K( x! c. T% W8 l/ p( m
                        @.CurrIcon := "load";* j/ f2 B6 G. }0 g- a# \  g8 ]
                        GlobalDistObj := part.globDestination;
5 a7 n& {3 {# q' a) k3 Y- G                        assignLObj := rgmanager.rgAssignL;
2 R. ^) E7 ?5 m2 M                        row := assignLObj.getRowNo(GlobalDistObj);) Z) D' N- ]" L0 m  a4 `
                        if Row = -1 then -- since 70
6 e8 f" b+ U8 [4 U4 ~% a                                if lan=1 then
4 H* ]  i) h2 X- O! w+ B' ]; O: X                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),* k! R' F3 K) r# m' D" W
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
# j& y/ f% c$ x% {( N                                else
; j  z% w" H! Q; N2 Z1 G* {                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
" T" q8 l: N* T  {                                                to_str("in docking station: \"",?.~.name,"\""));                               
9 ?3 k2 e, y( w- H: p3 F                                end;  [; T. t2 G% ?/ c8 t
                        else
9 W4 a! d1 y) }6 g) g                                @.Destination := assignLObj[1,row];
7 ?5 W2 O- [; X- X4 u                        end;                        . U- j/ p' Y! }( u! B
                        newDirection(@);# D0 J8 C' f+ ]
                        @.HasOrder := true;
+ A& z7 }4 h1 P4 h! B0 U& T                end;4 W# c2 J8 Y' M. F
        end;
2 ^' b  d0 r# d5 K5 G8 g3 g% B* Nend;        -- of the method! k/ o6 J) F! Y! L( k# @# @
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
2 \9 i: P6 U9 E. r* L1 W" v
( U. M5 f8 q9 U2 `. C7 m这是AGV_putin中arrive的method。
6 b/ G9 n7 d6 s& I
. J4 W9 z5 {, K+ o当到达物料速度越高时,这个报警更多,7 q$ V9 j2 L$ }' c' ?) W
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。1 V6 c2 h' S3 a
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?/ m- U5 X( J' J  H
6 G3 L5 A* q1 Q
另外一个小建议,就是move,所有的move都可以这样
; r$ F0 ~: @' p2 G8 xif not move() then debug end: a( p1 n" p; S+ r& B
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
  i) m2 W* B0 K! {' p0 O; Tplant simulation中的free libraries有AGV模板,+ |  J- @# z, X, y# y* g2 G
里面也有案例。4 K# B& F$ T& R
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。1 x, Z0 Y' r; H6 I6 j6 \) k

, O3 C# l6 Q+ {9 L1 \我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 ' R0 k2 d: n0 |

$ {; L% P" p9 v& u4 K那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 : ^. i& c' w3 Y" ]) x/ c2 y4 J) _
这是AGV_putin中arrive的method。2 S; N, g0 `6 G: }$ ]
/ Z$ M. a" @0 S6 q2 p8 y/ m7 d6 ^
当到达物料速度越高时,这个报警更多,

) ~8 A$ u0 v, S, ?0 y另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-20 11:04 , Processed in 0.016947 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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