设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5697|回复: 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'+ A7 ^3 a- E' _5 W" {
*/* t6 Q4 V; p, _. c, h% H) g8 R
is
, V% p; W* E/ g2 a        part, GlobalDistObj, assignLObj:object;row,Lan:integer;, t; D4 v* T& o4 @7 E, B7 u+ k) f
do3 j5 D% \" n- Z0 ]! P
        Lan := rootfolder.Internal.Tools.AOLlanguage;
* ^; [4 l9 |9 t' ~9 {* n- _        if current = @.Destination -- else return
! p  E6 s, s0 K& L# R% v* _        then$ R7 u9 W6 T! H1 z0 j( A2 S; y
                @.Destination := void;  Y, |0 S' A; C- N( j# U
                if @.occupied then
8 ~; R2 z' ^8 M' W                        part := @.cont;
2 m# M0 e/ V9 z2 F' W                        @.transpOrder := void;
& e5 f1 ^* ?9 W9 l  }" z/ h' c                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
0 ?# E6 T3 P4 r0 J7 m5 c                                @,root.eventcontroller.simTime);" }5 E" }# [/ ?" e
                        @.HasOrder := false;! o3 e5 l/ n0 k5 k
                        @.DrivingHome := true;
. u0 @2 P: e9 P0 a( _7 K                        rgManager.tryToStartTransOrder;
$ f. i) u) }* w9 ?, c1 ?+ `                        if @.Destination = void
8 {4 X" `0 y& }                        then -- no transport order for vehicle @; p" I) e: T7 p) b4 G; D7 j' `% F
                                @.Destination :=9 Q0 W8 I" O* J. [. [1 O8 Z
                                rgManager.nearestFreeStation(@,track.~);: e8 A  U/ E; s5 L/ l/ X& O# P
                                newDirection(@);   & h' K. A4 t9 P* u& K
                                if @.Destination /= void then
/ J" Z4 N2 j$ A5 U# I) }! M                                        @.Destination.NumReservation :=
, D6 q2 v+ X  M1 w                                        @.Destination.NumReservation + 1;
  r. Y4 r1 D  [& O# \) M                                end;, ~1 X2 @' ^! L! Q2 G; e0 M9 A
                                @.CurrIcon := "drivingHome";$ C8 l) G# F8 ^" ]
                                @.DrivingHome := true;! ]- y% {4 I+ R' H+ m7 J: `# [
                        end;
+ |1 P9 g6 V& H: M                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
' c9 ?- d* N1 |& p8 |6 a8 D* g  V                        part := @.transpOrder;
( P( ^* F$ Z: }1 d! ?                        part.move(@);-- load part) v/ N& x. q0 Z
                        @.CurrIcon := "load";1 C6 N" k8 o' |; r) \: ]
                        GlobalDistObj := part.globDestination;
0 D4 d0 {8 S2 G# U                        assignLObj := rgmanager.rgAssignL;8 |: o/ p6 ~/ }3 G& K/ d
                        row := assignLObj.getRowNo(GlobalDistObj);
& L* k9 |. v. @, b0 A                        if Row = -1 then -- since 70
# _& U$ u; m' Z1 t. v! W4 G                                if lan=1 then: Y! o' g& k7 q# \. U" X: K
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
1 w. @& W$ v, ?" C4 W                                                to_str("in der Andockstation: \"",?.~.name,"\""));
$ S3 B  e0 O" A2 |9 O                                else
2 s7 ?9 O$ G! z7 N                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
  u# }! {6 G2 N6 c1 a, a                                                to_str("in docking station: \"",?.~.name,"\""));                                * U5 W: H$ g, O. z
                                end;
5 A/ x! ]; a% A/ z9 D                        else" f% G7 }( j: n: P& o% X6 m
                                @.Destination := assignLObj[1,row];* s4 i8 k  \8 o2 z9 A. K
                        end;                        # n. e! K6 _) ]
                        newDirection(@);0 ~! \5 ~7 ~4 J) |8 y
                        @.HasOrder := true;
# O' S2 a8 ?7 H                end;; O2 n, K* O2 z
        end;( O: M4 X  {9 B+ A: Q! W
end;        -- of the method; K/ u9 I3 T7 G# N; I
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 , C  l& I9 u2 c* V) J8 f& h" `/ A

3 x4 j4 ?9 a* b7 F3 |$ I这是AGV_putin中arrive的method。% ~5 W/ b( b+ z

6 ~" E, |+ I% [4 [. ^当到达物料速度越高时,这个报警更多,4 }' O5 i2 X* v8 k, Y
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。1 I# l  ]+ l% D( y  _0 y* ?2 u
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
% n* q7 p7 S6 V8 D# b2 V4 u( G! ?% u- }. A% R. y
另外一个小建议,就是move,所有的move都可以这样2 I( R, |8 L6 o* t
if not move() then debug end
$ o7 Y! d7 `1 {5 M这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
/ O9 `  F. \. cplant simulation中的free libraries有AGV模板,
4 b+ r$ K6 x0 D里面也有案例。
' }" ]/ g' ~: u2 D% H2 k$ A% Y( ]我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
+ p$ L* R. u! ~  V% z! K/ o: z) X3 `9 f6 |# w! `2 l
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 4 {4 }. L7 q3 Q6 n: h
( N% ~$ y  o- |$ k
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 + Q8 O% [" I3 n- @/ o0 c
这是AGV_putin中arrive的method。( a2 \* _( Z6 w) g1 L1 I% y7 i
; A& W  Z" c; N2 z  y
当到达物料速度越高时,这个报警更多,
% e! X* ?: w- ~( F6 V/ H
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-12-14 20:54 , Processed in 0.016789 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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