设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7641|回复: 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'
7 I2 x2 E- \- ~3 Y*/
% U: |! ~# H3 T7 Iis
: E7 Y6 N+ [) ?. ^4 G6 [9 b        part, GlobalDistObj, assignLObj:object;row,Lan:integer;0 b7 r7 {  l3 w* h
do
% r0 d5 u5 J' ~) E( S5 j+ U5 y        Lan := rootfolder.Internal.Tools.AOLlanguage;  o* L  s! |; Q* Q. h
        if current = @.Destination -- else return
8 H4 A& F$ D8 K" X' e" O, l9 \: v        then3 v2 \3 Q  t$ ]" w# t) o
                @.Destination := void;& Y, O( I# Z' }, I3 p% @/ J7 J
                if @.occupied then
0 u3 |8 V2 J6 d, X                        part := @.cont;
7 t1 m' Y1 Z+ R/ {+ D5 v                        @.transpOrder := void;6 ~2 b3 |* |1 G) O6 `
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
) J* d' g# l. A, r8 e                                @,root.eventcontroller.simTime);- `7 ^: A2 r3 S$ B6 J7 }, _0 F9 m
                        @.HasOrder := false;
% b/ g  |8 |) g, q                        @.DrivingHome := true;5 M0 u* S7 B4 J
                        rgManager.tryToStartTransOrder;+ E# y8 g6 g; T8 {
                        if @.Destination = void$ o; r/ H. _$ C
                        then -- no transport order for vehicle @
6 u0 s! o$ O4 X0 |8 e8 f5 b9 J5 y                                @.Destination :=( `: d. V) @2 }2 M* T
                                rgManager.nearestFreeStation(@,track.~);" f) l: q' _! y# S' d, L' t
                                newDirection(@);   
9 |% I9 b- }, G$ N; T! [  k                                if @.Destination /= void then% ?2 D% l: U: s1 C
                                        @.Destination.NumReservation :=: N8 J  s  }" T$ J
                                        @.Destination.NumReservation + 1;  e8 b" |* J( M
                                end;3 \& V5 C+ v5 c9 b: j4 q
                                @.CurrIcon := "drivingHome";
( _' Y( {$ _& e- U+ H/ T& J5 Z1 n                                @.DrivingHome := true;; c# A6 P" J2 m( a/ s; h; b
                        end;5 J8 D& `* t$ \' U8 |: u$ v' C
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station3 t" x# ^' V5 F, ?
                        part := @.transpOrder;: Q1 R% Q4 \. p: X# d' I/ G
                        part.move(@);-- load part
: k9 p/ d7 R$ S4 O* n/ V: T                        @.CurrIcon := "load";  L. G; c5 k% o* n. {% b
                        GlobalDistObj := part.globDestination;
' j/ J7 K) e* r  h* a                        assignLObj := rgmanager.rgAssignL;9 y& [, Z4 I7 W! G- i* \" X' @
                        row := assignLObj.getRowNo(GlobalDistObj);
& {: n+ o8 K) i0 h1 X6 m' `4 @( n                        if Row = -1 then -- since 70
/ z$ G6 k% G, X+ o" |                                if lan=1 then
- z9 `$ }8 P% k7 d2 I                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
& j: J- Z( r" ~: O                                                to_str("in der Andockstation: \"",?.~.name,"\""));
* E8 }* L$ u7 m# u; o                                else, \+ j* d' b5 ?' I
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),+ v4 u. j9 g+ S
                                                to_str("in docking station: \"",?.~.name,"\""));                               
# t: d0 j2 F- o* Q6 |                                end;0 H6 T5 z" K5 ]
                        else5 G, `2 ?5 w( W
                                @.Destination := assignLObj[1,row];
) A7 f" P: d( g5 _, K+ f7 C3 c. R. y( Y                        end;                        9 Y+ \  t1 C- w  o* K3 p; e# x
                        newDirection(@);) s, o4 M+ b4 M$ ]) Z
                        @.HasOrder := true;  M/ \6 R7 r9 ]
                end;
! d, y  R4 @3 y: h8 ~1 C1 m% a. [        end;
2 L  S& j) ^* {8 j4 qend;        -- of the method: t/ g6 U3 V3 g. Y
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
! D2 d& Z, ]! H* w# C8 B7 u# ?5 Z/ n# L" u
这是AGV_putin中arrive的method。
$ }" z& J' p8 J% w, |( q
9 F7 B4 z& H$ S" Z% g! b当到达物料速度越高时,这个报警更多,6 Z- l8 v; N5 B1 F
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。. i+ w" N) y9 @. O9 @
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
6 x. P" z  z2 q0 i' k5 ]. v  _  X2 I. ~8 m- O# d
另外一个小建议,就是move,所有的move都可以这样
  b  R( n% i& Rif not move() then debug end# h. e. e3 Y2 g7 B
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。0 u( E2 }4 _* R6 T
plant simulation中的free libraries有AGV模板,2 J6 ~0 Q& p- D9 p# }
里面也有案例。4 M% c; N. T( c" j: V
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。' r! g$ X/ o' Y1 W% F

+ E/ ]0 Z7 F0 J; v8 h0 b我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 $ x: K( A6 P) E2 g

; f' s1 s% B0 e0 M3 I2 ]; v1 C那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
- K. l- n4 H! l8 D' V6 s6 I这是AGV_putin中arrive的method。9 `8 T( L& C! p1 H* E9 g0 V

7 [+ D" f8 `7 v2 u7 m3 G当到达物料速度越高时,这个报警更多,

9 O, e# l4 Z; P! S另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-21 20:54 , Processed in 0.021536 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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