设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5731|回复: 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'4 N% x0 P9 o( Y2 r4 W# N9 y
*/
# |+ P' w3 h2 F  zis
+ f6 w' T4 Q2 Y7 \        part, GlobalDistObj, assignLObj:object;row,Lan:integer;5 i1 b( r$ T5 W! l0 e) [
do
  W6 ~0 {% ]+ K& L% D- l6 w& x        Lan := rootfolder.Internal.Tools.AOLlanguage;  l' |& d- j, I( M
        if current = @.Destination -- else return, x$ m' F- i0 c& h
        then& x4 u% L0 H. Y" I
                @.Destination := void;8 m9 K5 M: O% r+ }7 Z
                if @.occupied then
. I# `7 D" ?& z) A5 ^0 ?                        part := @.cont;4 X2 U/ ^% `, y4 Q
                        @.transpOrder := void;$ K4 r4 u( h6 @3 N
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,1 m% s$ Z. [& Y% V# |
                                @,root.eventcontroller.simTime);
! T0 o0 Q  G0 e' }7 @/ k                        @.HasOrder := false;
5 l8 e, K, A0 z5 ~3 f                        @.DrivingHome := true;
- q5 j! t( Z1 ]4 o% Q4 |: B2 l0 c6 D                        rgManager.tryToStartTransOrder;# Z4 Z: R/ v6 F2 D. n8 k% f7 u3 A
                        if @.Destination = void" B3 H3 M0 F, G3 d
                        then -- no transport order for vehicle @
' G7 Q6 Q% K: N* U  Z                                @.Destination :=
! ?+ g  p) ^! c" v                                rgManager.nearestFreeStation(@,track.~);0 X8 j. l# I. ^1 e. o
                                newDirection(@);   $ b' V3 h. `/ t/ X: y0 \2 }) ^
                                if @.Destination /= void then
1 ^; x* g5 ^1 I5 o3 m$ M% c                                        @.Destination.NumReservation :=& q7 Q0 J0 K: L
                                        @.Destination.NumReservation + 1;9 ?9 F" U! V9 j5 h/ U
                                end;" W  T' b  C2 M3 |  D
                                @.CurrIcon := "drivingHome";
7 h4 H' [9 Q" v- ?0 w                                @.DrivingHome := true;) a, s9 ^3 W# ^- {) _5 M9 I" }
                        end;' n* W, o8 b/ R8 b3 ]8 }
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station  J- U  h' u( Q, O' k; Y9 N, m
                        part := @.transpOrder;  _: a5 T& D( D0 D
                        part.move(@);-- load part" X4 F1 p" P" }: q1 c1 n
                        @.CurrIcon := "load";
- O1 Y8 s4 N" t! X                        GlobalDistObj := part.globDestination;
* q2 A# U3 q& T% m, m" }                        assignLObj := rgmanager.rgAssignL;
9 G2 N) A' \! q) z( M                        row := assignLObj.getRowNo(GlobalDistObj);
' S- O% S$ k) x9 k" ^8 {6 l$ O" w                        if Row = -1 then -- since 70
+ e+ Z7 Y- |9 B( s4 O, _                                if lan=1 then
8 q. ?9 u  d* N  J/ i' ^                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
& P7 ]( I4 m; }/ S2 }1 ?, v' ~2 t2 p- w                                                to_str("in der Andockstation: \"",?.~.name,"\""));7 X  @. b9 V( U
                                else0 M1 [; `+ ^3 [# M  Y
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),* \, {# i2 M# G' Q5 _" _
                                                to_str("in docking station: \"",?.~.name,"\""));                                + z* k- i' u+ ^1 T& L2 F8 o
                                end;
6 J8 k- C  [3 f8 g% A, H                        else6 K3 s2 G) c0 Z, j, U3 d3 K
                                @.Destination := assignLObj[1,row];: T* `* g, ]. ^$ |; I
                        end;                       
& u. e+ s' c1 U4 U/ @9 F                        newDirection(@);
, S% ?* B4 C; z: b. {                        @.HasOrder := true;
) Q$ ]" @7 f2 {+ Q                end;
% B1 Z* J8 o" z$ ]        end;
! ^- R( X7 \+ i+ {4 a! s* T- z% Eend;        -- of the method* i1 |. I* H- _8 W
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
3 D* d& K+ `6 N( x; G  O4 N& y& o8 \$ n
这是AGV_putin中arrive的method。
, E* H( R2 s- q) B% ]4 n& B5 H9 x6 L' N5 \# q; K
当到达物料速度越高时,这个报警更多,
/ v/ d& B$ @' Q' j可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。" t+ H" I7 J, r
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?7 H* }) m- u3 C( w7 J
) \- g/ y# J1 F; c  R
另外一个小建议,就是move,所有的move都可以这样
0 ^* i* A9 Z5 |& \if not move() then debug end7 ]& f8 Q6 z/ S4 [1 [  J
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。3 |6 D9 D" p! S+ J3 \4 f$ p, |
plant simulation中的free libraries有AGV模板,+ |! x3 P: d4 u5 B* V3 X
里面也有案例。
# Q: ^" y8 {$ C: m9 b2 ?9 p我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。# H5 k2 [/ C! A

: x8 B8 C" I0 |我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
0 ^! e: |' `- l" c7 r+ p5 F% F& w1 z+ t- J# ^+ G6 [
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 0 }+ a& J; z7 c
这是AGV_putin中arrive的method。% D) l2 f/ A* ~

, ]+ c  {( U; x1 y( S5 P当到达物料速度越高时,这个报警更多,

) L1 ]" K2 X2 ^/ z另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-12-15 20:08 , Processed in 0.023933 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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