设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8190|回复: 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'
- E7 w6 ?. a/ ?) [0 v*/2 \: |2 Q/ B& o' `7 T6 p2 ^
is" H' R; G" r3 Z% {$ C7 x7 i3 k
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
& Y! V7 N0 K7 s5 `- odo  p8 c5 n! t/ k( _7 d
        Lan := rootfolder.Internal.Tools.AOLlanguage;$ x5 r1 G5 {  |- D: g5 t
        if current = @.Destination -- else return1 S. T$ x! [/ g! V# C# b1 C/ ?7 y
        then0 w; _" ^  Y5 }" i5 |. J& h
                @.Destination := void;3 j) `: @1 Z+ H2 {; d
                if @.occupied then
9 u2 U) f* k4 F8 [  d" t/ B                        part := @.cont;
3 I  k" s* c% s2 _; ^                        @.transpOrder := void;
; l$ r" d/ v! N6 ~$ B' e$ y7 D                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,5 B2 O5 p% H3 {# \/ `1 H
                                @,root.eventcontroller.simTime);
$ |  V6 n5 x3 x$ I4 l3 w# V/ B                        @.HasOrder := false;2 [( X* s" u: x8 K8 f
                        @.DrivingHome := true;
5 J2 N. r! Z/ D6 i8 K1 k% {4 D6 p                        rgManager.tryToStartTransOrder;
5 _) S7 e+ W, V( L) _) Y                        if @.Destination = void4 o+ \$ F6 f& ^& `
                        then -- no transport order for vehicle @
* H$ x" U2 r$ V1 X8 Y+ T                                @.Destination :=
9 F; Z1 ]2 F. i& C4 U. u                                rgManager.nearestFreeStation(@,track.~);
) |0 z, @, R- I8 c                                newDirection(@);   # Z3 f, ?: m  E! Q7 v) A/ u
                                if @.Destination /= void then
6 j( a/ M1 O# Y) Z2 D' K) C                                        @.Destination.NumReservation :=
8 W4 A$ Y" k8 [" S& B1 l; U- _                                        @.Destination.NumReservation + 1;
4 V. p& \; U/ [                                end;4 q0 l+ N. y" q3 a
                                @.CurrIcon := "drivingHome";9 M( c. ^& n% ~* z& p) j, F) s
                                @.DrivingHome := true;
! y4 x7 g5 P9 r+ N# `7 v                        end;! ?" }/ D4 o' `5 g3 j0 k8 a
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station: |) r! D( B: }, `. X5 a" q" h, b
                        part := @.transpOrder;1 r2 Q8 E1 H9 C" Z" W, {
                        part.move(@);-- load part
! V2 d# |. t( J4 ]5 R/ r7 W                        @.CurrIcon := "load";
* n+ c* I' Z3 {2 w" i8 h: b/ c                        GlobalDistObj := part.globDestination;4 x: O3 Y9 E( B$ u8 q
                        assignLObj := rgmanager.rgAssignL;
, o+ V, k0 G8 C) S                        row := assignLObj.getRowNo(GlobalDistObj);
* F& t& J3 W# w                        if Row = -1 then -- since 701 Q/ k+ r, {3 J0 G1 V# \
                                if lan=1 then2 X7 _: |4 u' Z, M9 W
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
: A7 T9 l" [. y2 m; @! T' c                                                to_str("in der Andockstation: \"",?.~.name,"\""));2 C* e' y; |' B/ d- X
                                else& b/ ^, \) G. ]  i/ d; Q. I8 E3 V$ A
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\"")," j: O9 w" N+ U, G
                                                to_str("in docking station: \"",?.~.name,"\""));                               
9 \' {& {" V5 p0 ^3 a                                end;
$ @8 M9 W( E! _                        else
/ C; w, u3 v0 R/ A! `. p! K                                @.Destination := assignLObj[1,row];* F$ X2 i/ j; i9 w
                        end;                        & P0 N7 Q; ^( c
                        newDirection(@);) U% J: [8 N- u! S& _9 |
                        @.HasOrder := true;
. R3 m7 R4 z! `2 ?2 N( S                end;/ X' x* {3 z9 O# |  L
        end;! A* v: E( g& J; N% J7 a7 a
end;        -- of the method" E5 t$ f4 I$ b: g- S2 H, F
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 6 _8 d4 `' e+ J5 L# U) u; g0 m
! k) s; L) c. \8 b# i
这是AGV_putin中arrive的method。
' t% ~! a: X% w7 F) i+ g5 T3 V/ s
9 y/ A' Y8 H# Q0 R2 w当到达物料速度越高时,这个报警更多,3 A4 F& P+ j- ~8 t# E
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。* r8 p0 e( o/ D- u7 x1 ?' \; G
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
1 U' ?5 X  _  D' d$ W- S: Q9 n% |, T: u8 ?9 |7 L1 B. W
另外一个小建议,就是move,所有的move都可以这样# W  B( d" L: H% u
if not move() then debug end' l0 Q) {/ R; X3 |# f' l! R
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
7 g8 H( i6 Y' |3 Y' gplant simulation中的free libraries有AGV模板,0 a6 M" E4 |% J' n4 b# A
里面也有案例。, Q% ]0 O: P2 p0 p7 R! X( G& u
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
2 E# d7 L+ S- v2 ]: Y2 m4 c7 @' b3 [, C: b+ u7 ^7 d
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
5 d4 y; h) e+ G, w) r; b  G0 D2 M2 T( z& q* p+ s* c8 w
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 % P, x: R& U# o0 w  Y
这是AGV_putin中arrive的method。5 o, A; T: s! n$ Y+ ~' t6 e( d
! h& j$ @1 ?. ]: r+ R7 y
当到达物料速度越高时,这个报警更多,
8 D1 ~; ^6 H9 q; g: D; l" q
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-19 23:09 , Processed in 0.013644 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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