设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6782|回复: 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'
7 c9 u0 \% I+ X*/1 b+ b  S6 B" Z6 a7 U' T! Q
is$ v" K9 b& W; c6 ?9 v; J4 U- {
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;# f2 [# [" J3 l3 U
do6 d0 d$ I  F6 h) C6 U
        Lan := rootfolder.Internal.Tools.AOLlanguage;. o( [5 J# R& V& [* @; {' U7 D; j
        if current = @.Destination -- else return; }/ R" k+ z% [" j1 \
        then# L4 n5 X' r& g( N( W. x" `' @
                @.Destination := void;' U7 f* {8 @; z, e
                if @.occupied then
, g% `6 U& p: R- v: g5 d                        part := @.cont;- O2 `$ u  i* w
                        @.transpOrder := void;
( d/ L# [/ l3 L. G& p; O: y+ L                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
' G+ A7 S$ ]9 N                                @,root.eventcontroller.simTime);! B2 n" f) ~& v" {; ^5 Z1 o
                        @.HasOrder := false;; \+ ?9 U$ C  J4 N
                        @.DrivingHome := true;# D! ?1 A7 g/ V
                        rgManager.tryToStartTransOrder;8 H" I# l- `. Y( g5 @
                        if @.Destination = void( ?1 H; W, {2 F( t" }  U
                        then -- no transport order for vehicle @4 C0 o3 y: r' |. {+ Q
                                @.Destination :=  k" ^; s2 S9 `& v3 k
                                rgManager.nearestFreeStation(@,track.~);
$ X4 {; @$ n5 k3 w$ c, x  K                                newDirection(@);   2 u' F  ]% l3 p" A& _( l4 y
                                if @.Destination /= void then
! N: a! X4 `! b/ V& A1 |/ E                                        @.Destination.NumReservation :=
5 }6 j, u8 z" \9 q2 _                                        @.Destination.NumReservation + 1;
, ]" @0 w" S4 ~                                end;
* \+ J2 H: b- ~# l/ s2 o4 L                                @.CurrIcon := "drivingHome";( Z0 D& G& ~$ B8 _, S8 {- X& |- B2 b
                                @.DrivingHome := true;' @- y- r: u5 s1 Y4 Z- }- n7 y
                        end;
$ @( E' N7 @' \) ]3 {' E) V1 x                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
0 e/ i4 Y& k! }+ _                        part := @.transpOrder;
+ p( N4 {) K* n  \% d9 K6 J                        part.move(@);-- load part* d/ p4 q. ?, [
                        @.CurrIcon := "load";) ?1 o( Z; R1 r, l. b. z4 U# R
                        GlobalDistObj := part.globDestination;/ V" x: M" x8 t. H3 S
                        assignLObj := rgmanager.rgAssignL;! L3 Y( b5 ^4 B' ~7 m' M
                        row := assignLObj.getRowNo(GlobalDistObj);& {$ o! i% [/ C  U* ]
                        if Row = -1 then -- since 709 F2 ^7 L( C8 c+ g
                                if lan=1 then
% t- r, l2 l6 F* n                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
( ?' v, G0 t3 ^* R                                                to_str("in der Andockstation: \"",?.~.name,"\""));
# i( j5 h9 l2 X                                else
- c+ z: z! `( l8 O                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
4 T+ i. z1 O8 ?" P, A) z$ K6 n. `9 ^                                                to_str("in docking station: \"",?.~.name,"\""));                               
: J: p9 Q. @. f- ~8 q8 o& Y                                end;
; t" ]2 }4 r7 a, D5 }                        else$ N5 c" @" E+ G2 p, k( ~  f4 t2 E
                                @.Destination := assignLObj[1,row];
9 c5 i* F+ w) c, b$ N- a% r2 G                        end;                        ( z& a/ f7 r% N/ i
                        newDirection(@);' v( U6 w$ f/ X/ S: q
                        @.HasOrder := true;& U& W* x4 E' J
                end;$ c6 [2 P( h  q# f) b6 A5 ^6 q; s
        end;
- E# h. P7 ~: Cend;        -- of the method
; s& V/ x2 T/ r5 h3 L
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
8 p  U8 j& c. g% Z6 Y: E2 D% N& [; A6 J6 [& G
这是AGV_putin中arrive的method。; W$ b% R3 K$ P6 f( n

4 ]0 c3 e8 k6 O. c当到达物料速度越高时,这个报警更多,
: n6 \" N' `7 E可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
: N( s) P$ f4 }3 ]4 |程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
! M1 y; x7 j  ]# ^
# W8 X2 O  S5 ]% Q7 O; r" A另外一个小建议,就是move,所有的move都可以这样
6 m( o# Y- v$ X! i" \0 t0 {1 Dif not move() then debug end
! J; V7 N1 r. x( N% E# e这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。& \. }/ {) ^0 T5 m3 Y
plant simulation中的free libraries有AGV模板,) \/ p* l8 b$ c9 h# r# Z* }9 }- E% G
里面也有案例。
. i9 i$ w; Y2 B2 ]) b) l我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。  N8 g" k# o/ d8 i8 d
- d% ^( ?# N! A
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
, C( g9 _/ d' O# B
: f/ r! P! l0 g' O  ^那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 1 [1 o) \+ K9 [( d. d
这是AGV_putin中arrive的method。
! c' x# E) L4 s3 g4 V; ~4 W4 d3 t4 `! A, e' O: M8 {4 c7 D+ Q- v
当到达物料速度越高时,这个报警更多,
$ c  c4 F( s  |7 i, H
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-26 13:21 , Processed in 0.026386 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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