设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8604|回复: 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'
: R/ h, M3 S& A, {2 p*/
+ F& s, p  z* y% ?9 ?- i, b2 Kis
2 z" u4 e* @' M$ _- `        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
1 b# G/ w( ^/ e$ L! r2 k4 ]1 xdo
& ^% r) u  Y6 F- ?. Y- j        Lan := rootfolder.Internal.Tools.AOLlanguage;9 [2 F* _3 u1 h+ E; ^) @% R
        if current = @.Destination -- else return' n, B1 m& v! A6 W
        then
) u+ C$ r# O( Z: K$ p( K) Z7 s* q                @.Destination := void;' X( J: A, r- I# K+ ^7 b: y' b* p
                if @.occupied then! P5 m/ b7 H( N: q
                        part := @.cont;
6 b4 o2 j8 v3 C                        @.transpOrder := void;
: b7 v. Z) T! y0 w$ r- c                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
( w1 v" v( Q3 @, T# |                                @,root.eventcontroller.simTime);
" T' W/ T* N( x. a                        @.HasOrder := false;; W0 g; t- n- Q: B5 v
                        @.DrivingHome := true;; W6 i/ c0 T; j& s6 U5 }
                        rgManager.tryToStartTransOrder;
- {1 y; S" X) H                        if @.Destination = void
( F" q2 I- ^. Q  P8 K2 q' `                        then -- no transport order for vehicle @
# J. Z- s- q# c. a- g                                @.Destination :=6 ?# i6 @2 g; h; S  E- b
                                rgManager.nearestFreeStation(@,track.~);
9 ^6 l! c0 g# Z. S9 t                                newDirection(@);   # _  s5 J: g/ p
                                if @.Destination /= void then
3 C; D. J8 G) X' U* P7 r                                        @.Destination.NumReservation :=" H) O4 x- p: v. T  F/ d
                                        @.Destination.NumReservation + 1;% B4 `0 q/ p; X; _* ?
                                end;
( O( R3 P! G2 I9 `9 j: S! S! z                                @.CurrIcon := "drivingHome";
$ ]( S% C8 z2 V                                @.DrivingHome := true;' J4 w1 K) m/ m- Y8 E# J
                        end;
& u0 P6 u6 z8 s6 h; {+ m$ p' T                else -- the vehicle @ is empty, both vehicle and part are in the same dock station$ O  p( s& ?5 [& k1 f- m
                        part := @.transpOrder;
0 H- |+ b6 o3 x: B3 S% K                        part.move(@);-- load part
4 L/ y" j$ ~; O% V6 W  S                        @.CurrIcon := "load";
" [4 k. U2 w* L2 n8 W8 X                        GlobalDistObj := part.globDestination;
( y: i8 {3 {1 f( L% i                        assignLObj := rgmanager.rgAssignL;; S5 l* ^: u: a" F3 F
                        row := assignLObj.getRowNo(GlobalDistObj);
  Z% r9 D$ k! y2 |                        if Row = -1 then -- since 70
& k# W7 W3 S' w# \                                if lan=1 then
6 {1 G% z% ]' q1 W! g6 p                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),; z6 {* A- w" [, ~) l4 I
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
7 j+ x! ~/ v5 j                                else
: L7 P# C! a2 B0 R                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
$ t' J$ e% t8 \( U* |3 A+ i/ ~                                                to_str("in docking station: \"",?.~.name,"\""));                               
  i. {- {3 W$ a) o                                end;
, x/ q: H% H7 i( U& {* O; v                        else. r2 {& T; f( ?" d) R0 `5 G8 V
                                @.Destination := assignLObj[1,row];
# s# l( |# e& ]2 W6 f                        end;                        0 B! L! s9 H$ k: o
                        newDirection(@);! b/ f9 d9 l5 ^0 C" b, G: z! Z
                        @.HasOrder := true;
; D6 d. g5 G2 @/ U0 K                end;- I, x! V( v7 P  K
        end;
' F2 [( b+ u7 Wend;        -- of the method1 X$ W! z# I" t
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 $ Z9 W, b- W) B$ h7 P$ K
7 q0 H1 l( c( V% j( q+ p
这是AGV_putin中arrive的method。8 y% d2 ~; N- u- }2 `
. ^8 ]: B7 U* Y) ^' c
当到达物料速度越高时,这个报警更多,1 G+ \8 D  ]* O  ~$ |, r9 c* d
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。1 b4 \6 g4 ?2 u1 i/ q9 `( a+ l  b
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
) P( X2 a3 v# @. M& Y
  Q- p- H+ d: @* A& u# q3 I: [( |另外一个小建议,就是move,所有的move都可以这样
* t8 m+ G7 o* K) _: m+ M- Iif not move() then debug end
1 T& q6 ^/ X: N, [# ~+ S这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
( d: v* g! t$ h# Y* R9 Jplant simulation中的free libraries有AGV模板,9 t4 T% D4 c4 g9 K3 |/ d
里面也有案例。
* a  l$ ]' Q8 T) \* D' N) v+ L3 s我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
" A7 O7 d3 Z5 m  q/ v0 v: E5 P6 r6 b# ]
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
% b, w: c. b' q9 i* y6 _1 c7 T. \6 C7 q; z3 ^
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
' s  u3 n1 ~# L0 _: z2 x  j这是AGV_putin中arrive的method。
( E0 A7 C2 ?7 c: L5 y5 a0 ]" H$ ?" d& z8 H3 G  z( h
当到达物料速度越高时,这个报警更多,

7 @5 K; O4 ?  ]( o( Z另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-15 04:30 , Processed in 0.016990 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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