设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9738|回复: 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'; v4 s, B* ?' q5 v. ?0 m  T
*/, f" `6 j- L; }; Q, U$ y( ]
is4 p, q, @9 N2 r3 ~; I
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;) a7 u; B2 c1 }1 a2 E1 }1 L
do6 w+ F8 r) c" ?
        Lan := rootfolder.Internal.Tools.AOLlanguage;; c7 V$ {; D/ {
        if current = @.Destination -- else return
$ [- \5 X! C7 W        then
9 M9 z" _/ l6 R9 W: ?+ T                @.Destination := void;
/ E+ W6 V$ @& L2 L) v                if @.occupied then' U7 l( `5 Z. ~' N( B- u8 L
                        part := @.cont;% ]  A/ Q: q  k; r4 g$ s; p
                        @.transpOrder := void;* }# E7 {+ v" Z. `! ?
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
7 j0 n1 f! b$ w2 n) I% N4 T                                @,root.eventcontroller.simTime);
- h3 G' j0 c- D# T% j0 F  x                        @.HasOrder := false;. g. C4 `8 b& E% H' Z% Z
                        @.DrivingHome := true;
, u; P( y: [% d6 N, y/ R                        rgManager.tryToStartTransOrder;
) A7 d, m% m2 X' o                        if @.Destination = void/ H' e2 S7 X4 S1 s" [5 l9 j
                        then -- no transport order for vehicle @4 J, B9 r2 B+ Y) ~+ s
                                @.Destination :=# o# N: F, Q: N" d
                                rgManager.nearestFreeStation(@,track.~);$ d2 r, S' @$ J# Y* a8 O
                                newDirection(@);   * r+ W) }' M" Q( K+ Z
                                if @.Destination /= void then6 Y* V' M# p" _5 f
                                        @.Destination.NumReservation :=0 t: f! l1 h5 L& C: I
                                        @.Destination.NumReservation + 1;
3 N. M) B, M2 F7 f                                end;( T& Z, K) h& ?7 ^1 n; e; b) S- B
                                @.CurrIcon := "drivingHome";  h# [2 p1 E! M: h
                                @.DrivingHome := true;$ D3 o/ Z% C; F; G! g
                        end;5 ^( K3 W2 M; ]9 J4 ^# a% g- S8 F) h
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
: M: _' c6 Y& t$ S  n4 c                        part := @.transpOrder;7 v# N) E1 i- d) N8 G
                        part.move(@);-- load part% [3 g, q; i7 \; b6 }
                        @.CurrIcon := "load";
  a9 e5 k8 M1 H- j4 e5 Q- O# W                        GlobalDistObj := part.globDestination;
: N7 T$ f$ z7 Q2 V* k                        assignLObj := rgmanager.rgAssignL;
3 B" w! k2 }. U/ R                        row := assignLObj.getRowNo(GlobalDistObj);  y, l$ N) c8 z  ?* h
                        if Row = -1 then -- since 701 X7 R) R+ @+ H. }& \* V
                                if lan=1 then2 d" g3 q4 S: [% [
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),$ y0 ^; U1 \" p. O) F& b1 l
                                                to_str("in der Andockstation: \"",?.~.name,"\""));1 ^/ X& r  {9 {3 b% h. s
                                else2 L' L5 o1 M4 u) `+ Q) X
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
3 i( R2 @% W: K9 S7 D( G                                                to_str("in docking station: \"",?.~.name,"\""));                                / m, @9 W+ M0 E$ b" n+ ]3 B  y
                                end;
( A" T7 U* t4 F8 h                        else
9 _! U# U& ?; u1 T/ G4 l' h                                @.Destination := assignLObj[1,row];
, [" x5 N6 x& h0 v( O. P                        end;                       
0 Z1 L% r1 j' U- h                        newDirection(@);; ?* L3 J" m/ B  F' O2 E
                        @.HasOrder := true;; _7 P$ _; T* s4 h
                end;1 X" A9 Z$ g1 @- N0 Z
        end;4 f: s# n7 c' @. F
end;        -- of the method
0 m2 }/ w7 O" T
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 * z) b2 E( d1 v  `
2 w. i( `& V& ]) M* q7 v
这是AGV_putin中arrive的method。* J! y2 Q! h* f! F+ W9 P

+ r' @& |* H9 b% M9 s当到达物料速度越高时,这个报警更多,0 c, d( w- Y% Q9 K8 ?& P/ x
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
5 E' E9 ^+ u& g- Q- y程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?2 k; d) N+ _" Z" _8 |$ \; W

& `8 \/ n7 x/ m8 G5 c, N另外一个小建议,就是move,所有的move都可以这样, Y) W5 z$ d' s' U1 f) d3 K
if not move() then debug end
, `* v- K$ S- Q1 T# g这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
1 a7 i( [  {  B. yplant simulation中的free libraries有AGV模板,
' _' r7 }' _6 q9 S8 |& v里面也有案例。* }9 v9 ^  S" c; x3 h& `9 f
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
' m4 _- T  ]) e0 n& i1 u4 X9 ^7 H: G" }  n7 p" X5 F
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
/ [  C. ?- z7 O( i: |6 T; n/ W, Y, g) h" Z2 D: Z! z$ G* u
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 - ^( x" J' J; {( Y: ^3 l  R
这是AGV_putin中arrive的method。; Y+ m+ y( p$ I  W
! l* ?: Y  n0 G" w
当到达物料速度越高时,这个报警更多,

$ f: S# ^& \) Y8 y另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-21 07:11 , Processed in 0.027203 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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