设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9141|回复: 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'6 d! t5 P3 z& |; |" i/ h, d
*/4 ]# O0 ?( c; w2 n& q) ]2 ]2 ~
is
  ?  W: R* x4 }) S: K6 `; z) i) A        part, GlobalDistObj, assignLObj:object;row,Lan:integer;3 ^4 q( O) Q# @( b/ J
do
! q: [8 O; o, w# S% l6 B& [        Lan := rootfolder.Internal.Tools.AOLlanguage;8 `$ u) T$ e: U, H
        if current = @.Destination -- else return! V* e: R1 n! o
        then1 {: Q; i. I+ p, S7 [/ G- w( L
                @.Destination := void;
, `2 D3 }. t0 J! v- s$ P                if @.occupied then
0 A' M8 O& E7 Z; ~                        part := @.cont;
0 d) @; E: T. j8 [! x" m                        @.transpOrder := void;* e, Y+ k+ U0 \: x3 y% y$ C( c/ Y
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,+ c+ [- C* B; E% k' Z5 ~7 D
                                @,root.eventcontroller.simTime);
. c* [$ M) h) }, J$ d                        @.HasOrder := false;9 e1 M5 T6 N- ?# |, Y% t" e
                        @.DrivingHome := true;
& [2 H" t( n  D( E. T$ h6 c                        rgManager.tryToStartTransOrder;8 A, e6 a- W, p8 g8 J7 }
                        if @.Destination = void( d) P& _; z' N" y0 _9 `* p
                        then -- no transport order for vehicle @9 E, |+ E, o: r
                                @.Destination :=5 _5 F8 h7 T# Y: _
                                rgManager.nearestFreeStation(@,track.~);7 F, j5 T" A8 N, i
                                newDirection(@);   4 J2 n" a3 g% I& \# O8 b
                                if @.Destination /= void then  P% K* b( T, j1 Y
                                        @.Destination.NumReservation :=: l& C. W) @1 i. D
                                        @.Destination.NumReservation + 1;
. }1 m7 R; x1 x9 A) x                                end;
' i5 b1 v) Z) j                                @.CurrIcon := "drivingHome";6 r: P; F8 o& z5 X/ R2 R; X% H; h
                                @.DrivingHome := true;+ {0 _; q, P' V+ T  k
                        end;
6 U) M; i! Y4 n9 x' L                else -- the vehicle @ is empty, both vehicle and part are in the same dock station4 _$ L9 H) e* x% d, {
                        part := @.transpOrder;5 [. h1 V; b; q8 [: u/ S
                        part.move(@);-- load part
' ^8 Q8 u. Z9 ]! ~8 q: T: G; p                        @.CurrIcon := "load";
0 h7 p3 D. Z1 U0 O3 F                        GlobalDistObj := part.globDestination;
: g" {/ ~% v3 K* k6 c                        assignLObj := rgmanager.rgAssignL;
) ]+ {- e8 r! P" K0 L% {# K                        row := assignLObj.getRowNo(GlobalDistObj);
; p* R* y6 o: [" ]                        if Row = -1 then -- since 70
# L7 x- M% b) l$ }                                if lan=1 then2 n& o! _4 Z- }, ]. V
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),9 T- W$ {3 ^' l  v
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
; y  t# Z6 o+ i6 L9 I                                else
$ w4 l$ \! q, T. M5 l$ D                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
9 B" E2 ~1 |- {" f                                                to_str("in docking station: \"",?.~.name,"\""));                                8 ^  X' c+ t! g/ k
                                end;) J9 R9 Y0 L" ?+ J: R
                        else6 k" K% K2 i; U& P8 J
                                @.Destination := assignLObj[1,row];
/ q" }+ V& L1 s8 A( ^3 d& v' q2 N! v                        end;                        5 K! ^! a+ L! Z
                        newDirection(@);
0 i6 M( G0 Z7 L                        @.HasOrder := true;
/ K( [3 T: |# c7 M                end;
, M$ s! f* f: u0 L9 h        end;
5 Q. F0 T* T( Jend;        -- of the method
. z# z# X1 m1 p- ?  y  y; t
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 4 Y, I4 R5 ^6 s# A( }$ ~
- h. J1 u9 @% g/ @+ L9 Q% f8 o
这是AGV_putin中arrive的method。; P+ e6 s. s4 R( Y8 q: x3 }3 s
5 y: z( j- a% B+ |) R
当到达物料速度越高时,这个报警更多,
, f# M. y1 y: u, Y可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
* _* f& T' Y: v4 a( q. C$ G, u0 D程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
( [! R4 R) o0 g& f
1 _3 {0 P2 p9 I& ?另外一个小建议,就是move,所有的move都可以这样6 U5 x! P2 o2 }* N
if not move() then debug end
1 c) W/ j8 i* c$ v4 F这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。" S  j' s6 F9 w2 R
plant simulation中的free libraries有AGV模板,& f7 V) W3 `6 b1 J' A6 C1 D8 p" L
里面也有案例。
1 F# P! J# O+ Y% }& _我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。# U  Q( P: L7 k, V+ w; X0 {' H
8 J: E! M, y  ]/ _) i
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 ( V6 x4 y0 d+ ^0 ?, L: u# p
' Y9 u! B1 t  g) m& \5 O1 E6 }, I
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
9 Q6 d7 _2 g3 m+ L0 v& X这是AGV_putin中arrive的method。
' G1 Y4 v7 {0 ?' L1 }# E4 i2 d1 T! L9 u7 ?
当到达物料速度越高时,这个报警更多,
' y. m0 }8 Q2 E
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-7-16 05:23 , Processed in 0.015975 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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