设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9957|回复: 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'
  y# x: {1 j6 C*/
2 n7 C* j* y7 V; ?" c9 L8 {& {is
) R+ U1 _& `" o( u8 a        part, GlobalDistObj, assignLObj:object;row,Lan:integer;8 U! y4 t" L2 `! M
do
: y* s( i9 B2 I        Lan := rootfolder.Internal.Tools.AOLlanguage;* t6 g; X$ `8 v- }3 b0 _
        if current = @.Destination -- else return$ I  ]) c: w0 L' F+ T$ t& i
        then7 D6 x3 d8 r+ R6 ]5 R; n
                @.Destination := void;
' f5 @3 g* u. o, J0 I. l                if @.occupied then- s, k% H% O- o3 J. _. ~
                        part := @.cont;0 r/ z5 r0 P/ W) y
                        @.transpOrder := void;
: }9 {; Y9 B+ Z2 K1 U) _' V' o                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
. R; M5 H' g/ Z; Z* U% G                                @,root.eventcontroller.simTime);
/ m! I4 D& B6 [                        @.HasOrder := false;1 H3 s& V, ^6 Z2 A0 f9 |
                        @.DrivingHome := true;2 C* N# Y4 Z' l8 Y# n4 ~
                        rgManager.tryToStartTransOrder;
: K- @+ i: C0 N                        if @.Destination = void
  R2 o8 x& Q7 M5 t                        then -- no transport order for vehicle @: V; N- T! d( w; e8 }% T
                                @.Destination :=
9 B* h% v( [2 J5 g7 [* I                                rgManager.nearestFreeStation(@,track.~);6 U9 h( w( S9 U# t% Y
                                newDirection(@);   3 \; Q9 u8 @% X0 ~) I" d4 `
                                if @.Destination /= void then
; Z- E: v( ~" c' J1 L! V- y; w                                        @.Destination.NumReservation :=! l/ M- H" p5 q& q. h  C
                                        @.Destination.NumReservation + 1;
: m. u6 e- `+ c                                end;/ A# N$ e6 |: g) a9 x0 \0 @
                                @.CurrIcon := "drivingHome";2 g3 P0 w5 E' Q+ p5 z- a7 H
                                @.DrivingHome := true;3 H* C& v% d0 p& J* \: `
                        end;
4 D6 g2 I" c) s                else -- the vehicle @ is empty, both vehicle and part are in the same dock station$ v8 D1 q0 V1 k0 A/ {
                        part := @.transpOrder;
$ \" `5 l, A9 D2 {" c+ }+ j. H- ~                        part.move(@);-- load part
" i2 H* w' Q7 c/ ~2 Y# O; o                        @.CurrIcon := "load";/ v* O* |5 ]" @( Q  T* V- c
                        GlobalDistObj := part.globDestination;
, R& A/ R. j9 K4 D  @3 ^+ e1 m8 L                        assignLObj := rgmanager.rgAssignL;
8 v1 ]0 a% w- w; |5 b; J                        row := assignLObj.getRowNo(GlobalDistObj);! Q* f8 M% s; S& k3 N( T! _
                        if Row = -1 then -- since 70
& u0 ?$ Z# f4 H3 h' H0 L! J                                if lan=1 then
+ F5 C  \% q. Y: i5 K( _                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),  [* v' k/ m; ~3 w( @
                                                to_str("in der Andockstation: \"",?.~.name,"\""));) D& L$ \! `6 P# ^& }
                                else. s4 o2 R! H7 ~( I) T7 m
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
! R) }' O: R8 P; y                                                to_str("in docking station: \"",?.~.name,"\""));                                " D. [5 s  d2 U0 b
                                end;0 t5 N1 A$ s" o- t; U% U$ L% j$ b# Q
                        else' D! z8 H' d; w. U! [
                                @.Destination := assignLObj[1,row];
* X; A* i9 g6 D' n' u( e( s                        end;                        ) t& k$ I0 P7 c5 z* S; B
                        newDirection(@);
! H% z/ k3 g+ M0 o0 j; x+ ?                        @.HasOrder := true;
- U* c: d- k$ `. q; z                end;. x) {( t6 _5 R, E+ k, W, Z% C
        end;" p& a3 A1 _( Q, j$ f
end;        -- of the method+ a& A  \1 M( f0 L* B% M6 o
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
! n: l1 ]  N$ {6 k8 g, U
$ t4 c3 {& [$ l1 N) A: |- N这是AGV_putin中arrive的method。
8 G/ o  V% j: {" O4 z6 z  I( X7 P$ B: ^$ P, i5 z
当到达物料速度越高时,这个报警更多,& a. Z4 P; B6 {( R. a. {
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。6 K3 i6 a6 t" ~( T6 o
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
0 b) s5 N, n7 \( l  K
3 Q; A% C4 @2 C/ G$ h另外一个小建议,就是move,所有的move都可以这样
9 m: w( r2 K6 J5 Y/ K* A6 i& Aif not move() then debug end" Q4 r! l: k9 f5 F2 ~
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
% e% D5 K7 S' B5 x* g. eplant simulation中的free libraries有AGV模板,/ O" U; o! g& ?, Y
里面也有案例。
9 l) ^: a: q/ ?+ Q: n我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。- k) K# ]) S7 z
" a, r2 X* @) K' I+ ]  ~7 b
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 ! R$ c  I9 U8 J8 F

" A6 B2 ~6 E7 x7 v那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 $ X/ q3 K4 x$ s, T" `  Y2 x
这是AGV_putin中arrive的method。* `# n3 H" v- t# X4 N) K% z. y
6 J+ _. Q' F+ U
当到达物料速度越高时,这个报警更多,

/ k4 ?! \! T9 w- T' [另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-9-4 12:57 , Processed in 0.017388 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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