设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8893|回复: 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'
- P$ P) k* \* |5 W  n& V& _*/
4 ^* D: @1 O0 o: ais' m  w. [9 ~' h4 n/ o
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
3 r: ?5 I1 Y3 F5 }6 ~do2 U! [2 E3 Y+ V* }
        Lan := rootfolder.Internal.Tools.AOLlanguage;5 e+ X4 v0 \7 \6 x% F) s& a: `
        if current = @.Destination -- else return
- F! s; s5 m/ ?( r: _8 }8 V        then
' N) j1 {. g* p0 A& A9 m" K                @.Destination := void;: O* f) k" P$ K& Z" \: ~3 j. o
                if @.occupied then( U: x1 u1 E% |, y! U5 n
                        part := @.cont;
( E6 q( H& J  C* N                        @.transpOrder := void;! U8 b. j7 |! J7 ~, F) z5 \: I
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
. Y" E0 ]( D3 O* _% R- Y                                @,root.eventcontroller.simTime);4 S$ L1 ?: @  g. f6 |# B
                        @.HasOrder := false;: A2 l: w6 X0 d' x4 ?
                        @.DrivingHome := true;" Y1 G! H* T& N
                        rgManager.tryToStartTransOrder;
4 `6 r0 j" o/ g  U7 G+ A& q" v                        if @.Destination = void- b4 g3 e1 a1 S) _
                        then -- no transport order for vehicle @% k, O( {' y5 a: L- o1 {8 B
                                @.Destination :=
" t8 a5 h9 n  u- ~6 \+ r& ]                                rgManager.nearestFreeStation(@,track.~);
1 K5 Z0 C, K' x: k4 D                                newDirection(@);   
8 D  I3 l, V8 {$ i9 P                                if @.Destination /= void then2 g9 a7 M$ ~3 x: ~3 k
                                        @.Destination.NumReservation :=
4 u. Y& {! f6 M7 x                                        @.Destination.NumReservation + 1;  n+ a# N! G: {6 W
                                end;
' e7 @  t' ~/ i6 d* ~, D$ J                                @.CurrIcon := "drivingHome";  ]! j4 G$ c2 O
                                @.DrivingHome := true;
- T, H* ], T4 U% `- M" i6 K2 ]/ Q                        end;, G0 T# @$ y, W/ J( G
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station5 i3 ~6 |  m+ ?6 ^$ S& H
                        part := @.transpOrder;
3 l6 P" Y. D6 r                        part.move(@);-- load part& Z7 Q$ M5 ^" ~6 F  F$ }2 D
                        @.CurrIcon := "load";
# `2 C( I& n0 s6 y/ I$ r5 Y                        GlobalDistObj := part.globDestination;
  e2 d: M! T: b: l8 I- ]                        assignLObj := rgmanager.rgAssignL;0 T; u% U) Q; \% D, n" o! `. c" r+ {
                        row := assignLObj.getRowNo(GlobalDistObj);' |% p* s/ b9 W9 _+ I1 D! g2 A# R
                        if Row = -1 then -- since 70+ _& K* K0 x  f: K: O
                                if lan=1 then
! u% r9 U( g% E6 z8 w                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
; j  }, ^, Z! h- ^1 I, n                                                to_str("in der Andockstation: \"",?.~.name,"\""));
# s3 h& `* \  y7 s7 ^                                else9 t4 s6 A6 A7 e
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
/ u2 `& X6 Z5 \" R; Q                                                to_str("in docking station: \"",?.~.name,"\""));                               
8 F. P9 r* I  I                                end;
  X5 M5 n+ N- x( U                        else
# x" k  Y% o. I3 n; O) ?. u                                @.Destination := assignLObj[1,row];6 f7 |3 o0 u& d+ I+ ]& w( Z( D0 ^
                        end;                       
: i  V5 X! [: C$ t0 l                        newDirection(@);
; b! j- [; v* X" p. _. H4 a8 r                        @.HasOrder := true;3 u5 m5 e+ n! P8 p
                end;" L9 N1 ~& y7 e% U& \; O' S
        end;, O  G; H8 d+ w# c
end;        -- of the method0 q! m, |9 P3 G( m
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
  T$ ~3 ?) |: ^$ P0 R6 H4 [1 O- ~; M2 Y
这是AGV_putin中arrive的method。# h3 Q7 h4 I/ C2 o8 z5 O1 C0 a! H
9 D* v% x  N% c7 f4 s- s" Z% ]6 g
当到达物料速度越高时,这个报警更多,( Y" P) x0 }: y! `$ o  V- \
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
* S( t. f* _* C( q' g程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
* M# n1 b6 d* B% Y7 b  f* q- E, |8 c/ M* V% u
另外一个小建议,就是move,所有的move都可以这样
6 {( B! z; M, r$ o8 T. x4 sif not move() then debug end- j. K3 P' ^/ T2 E( ]$ y/ L
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
2 f* B8 s8 k+ j9 B. s+ j9 [- V2 Rplant simulation中的free libraries有AGV模板,8 k$ C9 \1 g9 a7 s+ k% y% p
里面也有案例。
5 C; x3 X! \& q9 `' l/ o/ X我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。( A% x, H( L1 s6 p9 N+ S0 [3 `1 O4 s3 h

2 N1 g9 }  F% Q( t, i& w9 k我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
4 I5 [" \( B0 `  X: |. I* X* K2 H! }" K. k- D# _6 D. D6 E0 U
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 5 U: Z( K' g' W7 y8 G9 N9 d$ w
这是AGV_putin中arrive的method。
( j, l% I5 i. a" s. X2 @( N/ e: V; n! t0 B' e  l% s
当到达物料速度越高时,这个报警更多,
( D3 V' r5 V' F' n+ f, N1 L5 Q
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-7-3 02:47 , Processed in 0.015520 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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