设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6992|回复: 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'
5 T9 Z3 T, B, d1 h# b  V+ K5 V*/
( o4 I& c. I* t; ]is+ X  v2 A4 Y1 X# r
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
6 h6 X: B+ |$ q' p- e" H# s: ydo
# F# a( y1 ]. X        Lan := rootfolder.Internal.Tools.AOLlanguage;
3 F, e4 b" c" Q* p  V/ O% ~        if current = @.Destination -- else return. c7 ?3 C  B3 s/ E, z8 `
        then1 _, I- c' |- Z/ R( H
                @.Destination := void;* e7 ^; a+ [  z# Z; f% n- x7 q
                if @.occupied then
2 B0 X! p3 p3 P0 [# I/ C                        part := @.cont;
; Y) Y; }; M! `3 ?) n5 _# i                        @.transpOrder := void;
$ [+ D+ @! z6 k( K# R" C                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
. p1 x/ C* `0 e: o- B                                @,root.eventcontroller.simTime);: a  {3 M& ]8 ?7 _
                        @.HasOrder := false;
- O6 @0 |0 c: ]6 d4 r4 S                        @.DrivingHome := true;1 k, C! O& d( X4 T6 r0 _
                        rgManager.tryToStartTransOrder;
) Z1 q0 e% m- y, d                        if @.Destination = void! f1 M# m3 @6 H1 T' D
                        then -- no transport order for vehicle @
8 J1 ?# B4 s8 t' O0 ]6 m8 e                                @.Destination :=
. f1 u; u& q0 z  ~2 U3 y0 s% |                                rgManager.nearestFreeStation(@,track.~);
" I6 `3 Q& U& R: g8 }$ _                                newDirection(@);   & g( M* v. h) Z- Z! O8 S
                                if @.Destination /= void then
( [. P8 c. D+ x" j/ \                                        @.Destination.NumReservation :=
% _! R( x% ~. \                                        @.Destination.NumReservation + 1;7 S1 o, u1 m: e8 s6 z0 c  n
                                end;3 f) ]( l9 b' a
                                @.CurrIcon := "drivingHome";/ w% R4 e& G* D' R
                                @.DrivingHome := true;
9 q4 N6 T/ B% J  m7 y) U0 q$ w                        end;$ F' S- d. C- z
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station7 I( j4 ~$ k- W# C# @
                        part := @.transpOrder;% o$ _  X2 S  M
                        part.move(@);-- load part
: T7 B# I# `" c1 A4 X7 d) v                        @.CurrIcon := "load";, D$ R7 o9 i! @8 C( U1 U7 @
                        GlobalDistObj := part.globDestination;
+ i" _/ g- H5 p1 W3 q$ s' E, Y                        assignLObj := rgmanager.rgAssignL;
$ W) W) W6 f" p0 U; e                        row := assignLObj.getRowNo(GlobalDistObj);
, R$ y: v+ X" k! p& K* ?5 m                        if Row = -1 then -- since 70) f+ H& _! S+ ^: b9 G3 _
                                if lan=1 then3 I: P5 {$ G% P7 o/ X' k# X
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
% i9 s% z) X+ e' a* U8 s! n  v                                                to_str("in der Andockstation: \"",?.~.name,"\""));. v$ [* k# \% q) D& }: u7 H5 A& v
                                else
! v+ C5 T* T) p* Z8 F9 y* i9 ~                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),4 J) ~9 \: J9 M3 f+ `' U
                                                to_str("in docking station: \"",?.~.name,"\""));                               
6 j6 L! Z+ C2 n3 v: e# r                                end;. d& Q! p# e* x  g# r
                        else6 n- F' |6 z; g5 A/ _! U2 V3 d
                                @.Destination := assignLObj[1,row];
4 w- e* B4 Q3 P$ i# r1 f                        end;                       
. F  f$ W: }3 a, W# i                        newDirection(@);
3 B" t/ b: g# a3 v# [, P                        @.HasOrder := true;% I6 e1 V6 j9 t# R* e# }
                end;
* Y) x4 {7 u; a* ~: X        end;4 s& [8 Q$ x7 D9 Y
end;        -- of the method1 `7 }/ Z2 F" J7 {7 ^
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
3 c- [2 @0 |  Z' ]9 X% h  P- k* w+ j8 Z' X. D9 ^
这是AGV_putin中arrive的method。9 D$ T$ s) x) t1 W

' q3 B- p% F; V% P# A) {) f. s当到达物料速度越高时,这个报警更多,
7 {# [7 K# R+ |# j& {可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。2 P8 A2 f' t+ D6 M$ E: N
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
6 ?/ b7 s% \; r; g4 Z6 {+ k
# t% s; Y9 h: ?8 j4 W# P另外一个小建议,就是move,所有的move都可以这样
. U- Y9 R; ?' a4 J( eif not move() then debug end
% q' w& {9 P+ c) Q* P这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
4 c, B* R" R& \- o5 Z' k! B9 W4 n: Kplant simulation中的free libraries有AGV模板,
; J# b0 r) _8 _$ r2 ^( p里面也有案例。2 i" c. ]4 D1 a
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。; N$ |; a  J! O( S4 {5 T: O! b3 z" n

( O/ m3 g1 P0 ]  b8 w7 L. N我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
( t  I# `/ J! s0 }. C  x: T4 s$ c+ {/ N+ Q1 l
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 ; O# ^5 M. {: }) O& X! Z7 `
这是AGV_putin中arrive的method。. v1 n  ~% S0 M; V

! i0 _2 P8 H: m当到达物料速度越高时,这个报警更多,

: s& U# L, [7 r1 v7 Q0 K另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-10 02:29 , Processed in 0.022369 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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