设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8401|回复: 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'! S2 c. b* q4 _4 j  l7 _# g% C, ]
*/
* U8 I- u) Q* c) ^0 Z$ uis3 N7 g& @- u4 q" [
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;/ a7 I( d: C" Q2 g  d* C, Y; ?" N
do! [$ @1 |3 t% e' N" N; w
        Lan := rootfolder.Internal.Tools.AOLlanguage;! G, c6 d; `/ X  `7 h" y2 |) v
        if current = @.Destination -- else return
/ x, B: k, u  p$ m& V        then
, j! U  ]1 T( d( A2 o                @.Destination := void;
; ?8 s* F$ J1 x/ a/ g) L. C                if @.occupied then4 ~' x5 \0 I8 T
                        part := @.cont;
/ h: w. j6 D. p# i7 r3 H                        @.transpOrder := void;4 j  }5 I. m$ S# S
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,* F6 @: i8 ]3 P0 K1 {+ w+ c$ a  `
                                @,root.eventcontroller.simTime);
; |/ f: w) w& t) c9 @2 o  M. M8 U                        @.HasOrder := false;* f1 t; @7 f* l1 v3 Y1 Y1 ~. e
                        @.DrivingHome := true;9 |  `& a1 h) |9 a* C) Q  Z
                        rgManager.tryToStartTransOrder;1 f2 i0 r$ F3 ?. Q& T6 c. h! @
                        if @.Destination = void) Y0 Y& F0 G" i
                        then -- no transport order for vehicle @
/ ~  b+ T* o* ]" ~                                @.Destination :=! i9 u9 s  ~. ^3 Y1 L2 T, e
                                rgManager.nearestFreeStation(@,track.~);& u, l2 u: l# i  s
                                newDirection(@);   
) ~1 _3 ?3 |; q  P# L) v+ Q                                if @.Destination /= void then
( \+ W/ `- Z# j- T& y                                        @.Destination.NumReservation :=. e( H; o% y- {0 o# g/ Z- q0 t
                                        @.Destination.NumReservation + 1;
3 Z# K4 v+ E' o3 ]7 \% u3 [5 D                                end;& H7 N. u* O" f- w
                                @.CurrIcon := "drivingHome";" m! W* o0 e% ^1 `( `, `
                                @.DrivingHome := true;( G2 A$ u, Q2 S# H/ c3 H# p4 ^" S
                        end;
: t7 o1 m7 b7 P, T7 h) L                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
. u, Y: N+ ^+ g                        part := @.transpOrder;6 M2 J2 R3 o' }# y% S
                        part.move(@);-- load part. @3 O" T% u) ]/ N
                        @.CurrIcon := "load";( o% a* n+ C. G8 C. u2 f* Y
                        GlobalDistObj := part.globDestination;
+ ?5 h  B" k. P2 k4 P' _; o) F                        assignLObj := rgmanager.rgAssignL;
. `% x6 B- C, N# k                        row := assignLObj.getRowNo(GlobalDistObj);5 y' e; d# m1 M" z
                        if Row = -1 then -- since 70
/ H& u2 ^6 r  z( [6 Y5 }* J                                if lan=1 then5 _. v- F; d" u2 T  f" N3 k; Z4 A
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),% F% K8 L9 |6 E9 K& t  E
                                                to_str("in der Andockstation: \"",?.~.name,"\""));! E% X1 M/ h. \% e9 ?% P& Y: P4 j
                                else
3 d& \$ c! q; d. e/ j* W8 k                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),2 \4 E. M, U/ k5 d
                                                to_str("in docking station: \"",?.~.name,"\""));                                , y! T# C+ p: k5 U
                                end;* J8 q5 S5 {, `: X
                        else6 k6 D. n8 V% f! J! J: ^! V/ }
                                @.Destination := assignLObj[1,row];9 o; N0 ^# R% L$ I) u5 T1 R
                        end;                       
1 V& Z5 w# I! d$ M                        newDirection(@);( @% [* I9 W! s' z, ^+ U* n& B
                        @.HasOrder := true;
, F/ n2 }4 I& w7 N- _; X2 H: z6 \                end;
) C% i& j% {: y% A+ C7 z+ o        end;
& w0 X) b# B) S0 Fend;        -- of the method
' B8 {4 u; M% {' O
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
" N5 _6 ^3 c" o! w6 V: J1 N4 U$ D: u
这是AGV_putin中arrive的method。$ s- ~/ g! X3 [! H! n! i
8 Z. {7 c$ C; z+ P# m/ g
当到达物料速度越高时,这个报警更多,* x9 n% F; J; g- q
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
$ `9 F( T/ |3 h" R1 @程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?- n) X! X3 `2 d) q! B5 f
+ ^4 K8 g; M4 O7 S0 s$ ]# H, Z
另外一个小建议,就是move,所有的move都可以这样, m- k' n4 e. M, O
if not move() then debug end. w9 R: V9 G& X7 A% u* T9 t/ X
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
& {0 E# r. s2 t. y) Y2 rplant simulation中的free libraries有AGV模板,8 ]8 d6 j! j1 ?3 _
里面也有案例。6 r. A- }4 [4 U( @  _. v. |8 x
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
7 h( Z: B6 U5 ]
" Y+ X7 u+ t2 m5 m6 s我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 7 G% J" ]: L8 H5 m9 c/ n+ j! I- ?
* v4 S; G' Y0 J
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 ' x1 t3 f% d! O- `. H
这是AGV_putin中arrive的method。: I+ x/ {' ~$ Z% `9 k

- P6 x7 D4 ]. b当到达物料速度越高时,这个报警更多,

8 p6 C7 ~0 C# j. w4 |另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-1 21:58 , Processed in 0.015774 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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