设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6225|回复: 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'
$ Z  t* ]( }4 {8 Z. h*/
* W3 Q$ F- U9 [0 |0 Bis
- A# j% L( W4 Y: W+ G        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
( f* S3 \1 s! n; X* L, y, kdo4 I8 B% L- W; S: |; ~
        Lan := rootfolder.Internal.Tools.AOLlanguage;+ A! U* ?% O. F
        if current = @.Destination -- else return
* J% Z  I2 s  [* N& [" \& f' M* m        then4 j& l  v0 i& h1 R# a( y. s
                @.Destination := void;5 V- ]8 x' k5 \4 F
                if @.occupied then
0 I6 m. `) G  _6 f: ^0 N: v% |9 W                        part := @.cont;2 f% f" z& A9 Y8 i/ k7 k( g1 z
                        @.transpOrder := void;) W0 `, W, v3 @, ?' C
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
: `. ?( z& x7 E) ?! u                                @,root.eventcontroller.simTime);
8 I0 r# f7 T: k& ^) j2 b                        @.HasOrder := false;8 b* M4 C  I8 x
                        @.DrivingHome := true;
, B% l. O8 s; _3 B1 y& ^                        rgManager.tryToStartTransOrder;- u+ C. c2 n: }/ t$ k# Y1 g
                        if @.Destination = void
$ ^: R1 a# z- V- ^8 D                        then -- no transport order for vehicle @+ F" I& q: J9 T1 w
                                @.Destination :=
$ T: V. W2 E# v; x% G6 e                                rgManager.nearestFreeStation(@,track.~);( {3 y7 y# I; l
                                newDirection(@);   
2 _) m5 Z- `0 _0 C. w                                if @.Destination /= void then
, L; l2 j8 E8 [* {" e3 p                                        @.Destination.NumReservation :=
" F2 k5 B) T3 I2 K7 L                                        @.Destination.NumReservation + 1;
% p) u4 B0 C, i! O4 w                                end;: k4 A' N- M* @1 B
                                @.CurrIcon := "drivingHome";7 q1 P" o- X: s/ b
                                @.DrivingHome := true;: W) k0 D) v" J. G8 \- w
                        end;
4 m: P" \, J9 ?0 U* I, a                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
. x( N+ ?* R8 ]                        part := @.transpOrder;
, }; G0 O7 w2 H, m/ i( K9 O5 m6 X1 }                        part.move(@);-- load part
, ?4 I. o# j7 ^# E                        @.CurrIcon := "load";
0 X' O' B- T- e% u9 g+ q3 k                        GlobalDistObj := part.globDestination;
2 \1 p7 K, W8 J: t                        assignLObj := rgmanager.rgAssignL;* R( u( Y  ?5 ?' s9 B
                        row := assignLObj.getRowNo(GlobalDistObj);
2 Q9 k8 P$ n& q7 g# e: L                        if Row = -1 then -- since 70
0 D3 V6 I9 O8 K  x3 {9 F  H5 Z3 o                                if lan=1 then
4 o+ t& V/ E) z% s1 D                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
" x- Q2 T) p) |" d                                                to_str("in der Andockstation: \"",?.~.name,"\""));
; H9 O  `; k: n8 [# O( j0 X: I                                else
7 I0 |4 t" a3 P. y7 K                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
8 q  U& C6 y7 F, E. M* A( m% D# i                                                to_str("in docking station: \"",?.~.name,"\""));                               
3 q1 Z8 M  y: Q8 s5 v                                end;9 j1 O6 ~7 Q9 m
                        else
* n0 i/ Q% c, {                                @.Destination := assignLObj[1,row];
% W# t# K0 Q3 ]5 s- T( _' v9 s                        end;                       
! U- ?* v# X6 v3 Q% g# m- m                        newDirection(@);
/ _! J% [0 E7 P7 V. j2 t( `                        @.HasOrder := true;7 o0 S1 y  O8 s, _' g
                end;- c3 @3 I* H4 f; F4 i6 J( A
        end;
8 e; y$ Q0 |. v- b) v8 j" o# Hend;        -- of the method- X7 b+ b8 K# ^% m
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 ) @& \* C/ {$ p: I& P4 A

2 J7 J3 x3 [/ w7 y* p9 ^: _这是AGV_putin中arrive的method。6 j7 K; `7 H/ f# {, }

. v9 o, A# Z  V: a4 r1 \当到达物料速度越高时,这个报警更多,
# D& O0 b. {6 q2 W' W可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。5 e& X0 h1 @1 C- \
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?1 D6 E* F: T/ X' P0 a

! z. ?7 i. ^7 i- E% p: f另外一个小建议,就是move,所有的move都可以这样3 f# [; E* `, \' G5 E& p$ G
if not move() then debug end
5 }2 C+ V- M/ o2 e) v# B6 R这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。7 u9 R7 E+ \1 \, b( B# T" I
plant simulation中的free libraries有AGV模板,5 B6 C, f" V" }7 T
里面也有案例。
+ T9 K3 L# Q' W% @7 T9 n% O" R, E我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。& }# i# x  l! \' Z2 b; q

$ B* d+ B: z4 c: i3 V: T% Y- t/ a我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
0 d  _8 x. M8 N9 ~" e- G% M! L
4 k2 _$ |; _9 M5 K+ F# B那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
: U# ]# b# z7 w这是AGV_putin中arrive的method。
" p& o2 {. E  W' ]* }/ m, p! K- k; j, M! t# e  K  L
当到达物料速度越高时,这个报警更多,
' M# w: U3 r# P/ Z3 w9 p
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-1-25 19:09 , Processed in 0.022705 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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