设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6538|回复: 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'! M6 z; \# K- i# b
*/# u  `5 w5 a% J2 Z$ D: e1 L
is9 o' A" m) A7 A4 }4 R
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;: m) |# `7 u& F- Z/ F# G) ^
do1 R: H  W; E" i, C% O+ n
        Lan := rootfolder.Internal.Tools.AOLlanguage;
- Q9 m% ]# e: ?/ H8 s        if current = @.Destination -- else return$ E' g$ y+ p2 N. }& z$ D( _. f" k6 a
        then, p! @4 U5 n5 }" S& x1 \
                @.Destination := void;$ o* ^! O' e4 X' v
                if @.occupied then
* K* s# m1 }5 E                        part := @.cont;
) p3 v, v/ {6 o$ z. s                        @.transpOrder := void;
: }; C- o6 {9 D( k& q                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,# e9 Q* a; V' `, f/ P( \* {9 j& {
                                @,root.eventcontroller.simTime);4 D# b. D/ }( b. K% C
                        @.HasOrder := false;% s( B' K1 c* i
                        @.DrivingHome := true;  S2 |! k* {7 s7 i
                        rgManager.tryToStartTransOrder;
$ w& X& |( U+ p- A                        if @.Destination = void6 s( V, ]/ |; ?
                        then -- no transport order for vehicle @% J& S9 M9 H; c; z# {* K# X. U
                                @.Destination :=& R6 ^' s' S7 Y4 c9 j$ P
                                rgManager.nearestFreeStation(@,track.~);
3 U  _2 z  z) {4 u9 E' b: H9 I                                newDirection(@);   , ]3 u! x0 _2 Z3 }; z
                                if @.Destination /= void then" P+ M! _9 o0 b5 `9 E% c1 p6 s/ ~
                                        @.Destination.NumReservation :=
# }3 p4 H9 [& _                                        @.Destination.NumReservation + 1;% e+ e% ?) l% ?7 l
                                end;
- h+ f! j* e5 r/ `) l, c                                @.CurrIcon := "drivingHome";. h# |8 d) C  G/ f" L& `# a0 L6 `
                                @.DrivingHome := true;
, F# Y8 ~+ @9 q% i. {6 f                        end;0 n( Y; ?* \# ^) G( t
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station3 j! x# h/ O  [; {, q
                        part := @.transpOrder;. V  L3 n' ?' c, w" b; @& `
                        part.move(@);-- load part
( A% b" |# ?. \2 W/ P9 `                        @.CurrIcon := "load";
: Y9 [5 E" \, m$ Q* ^' Q4 G5 S                        GlobalDistObj := part.globDestination;
6 o7 e" [. C, Y- F                        assignLObj := rgmanager.rgAssignL;
" T% n0 M0 i! x! \1 w: E                        row := assignLObj.getRowNo(GlobalDistObj);: [& L1 I, S0 d; g6 U7 E
                        if Row = -1 then -- since 70, k; g6 ]+ U/ w% M4 M% v6 n! j  d' ^
                                if lan=1 then
8 v# N0 R0 X" w  j+ y                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
& l7 M" U5 m1 Q, y                                                to_str("in der Andockstation: \"",?.~.name,"\""));
( L0 u# X) S6 e: a8 d. W7 |                                else0 ^4 x8 m) _! ?2 c3 o( _# W
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
5 k3 @, T- t# |7 Z; P5 R                                                to_str("in docking station: \"",?.~.name,"\""));                                1 x: Z( n! P- `  w
                                end;. q! x( z; z) Y9 R
                        else4 w' i& |/ q5 S7 ^" W! G
                                @.Destination := assignLObj[1,row];
. ?& C  G9 G2 f6 Z7 N                        end;                       
+ z% f+ a6 t% }                        newDirection(@);" M$ v3 R, q0 e0 b9 D
                        @.HasOrder := true;
: a# _: O, }( Z7 x3 s                end;4 ^- O/ S( i  J0 E, Z( D
        end;
6 M1 g4 y) p; i3 u+ fend;        -- of the method
6 [, @1 U: @3 n0 {! N
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
% n( A3 v! w/ L& O. }, T2 o$ H; e: h
这是AGV_putin中arrive的method。; o# O: q0 |3 L1 l
& ~: L* P$ E% V8 P; T/ a
当到达物料速度越高时,这个报警更多,
- Q# ^' L" n. h& W* X' Q6 Z1 R可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。0 W- G2 J6 a( E
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?0 V' R+ O5 l2 u& P2 m  D
  D+ l# ]1 M0 H! s: {' b8 V4 ~
另外一个小建议,就是move,所有的move都可以这样3 ^% r# h; g. D' b
if not move() then debug end
" b: W8 @4 Z5 a这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。3 T% N# R% Y9 z  P; h
plant simulation中的free libraries有AGV模板,  a$ ~2 X& L7 d) y, b( }
里面也有案例。
+ ?4 ^! ?1 ^  M' p% F, |我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
& J0 _7 \! k/ w" l0 }0 ~6 A7 c' [/ |/ n8 \2 @
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 : \: h% ~! P+ `" U5 j8 ~% a
3 M+ X% Q3 {6 v2 I& l
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 & T9 ]/ s  V' S" r! t5 ~
这是AGV_putin中arrive的method。
9 P0 K. T" E& J; i( g! y, R, L# w. C/ K+ C+ \* [
当到达物料速度越高时,这个报警更多,
+ L9 w4 M! X! M2 s, M% ^3 F
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-11 16:00 , Processed in 0.017889 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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