设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9293|回复: 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'
9 O4 g8 |0 z0 H( Z  ?*/  p, f/ y5 Y* Q9 R% o
is
3 j( y9 N+ A  J4 l8 U3 t. n        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
. t8 t& I% J* M- v" p* m7 Fdo
9 M! j" O) \4 j2 b4 \        Lan := rootfolder.Internal.Tools.AOLlanguage;
$ Q1 w: |' P6 A0 a% K0 r$ b6 W0 U        if current = @.Destination -- else return5 B# F8 L  r$ |. t' ?( O
        then
, B  }' M; o# I* \7 k  h1 W                @.Destination := void;/ |; l" p/ a8 D6 Y! a- m
                if @.occupied then
1 [5 M2 D  p# p/ }; q$ H                        part := @.cont;
* O( p6 D9 ]* T. N; D                        @.transpOrder := void;5 }5 [- P/ t6 Y- K- z6 Y9 `- Z
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,! Q, h7 E  s- M" P9 D; a1 @" r
                                @,root.eventcontroller.simTime);+ Z/ S2 Q: k' x, N+ g6 \
                        @.HasOrder := false;
' U6 \1 M+ g5 ]/ z" O                        @.DrivingHome := true;
4 N. z5 l- n* O/ ?. m9 f! o* w                        rgManager.tryToStartTransOrder;
& o  z1 s  S2 m5 ?, H3 g                        if @.Destination = void* _. Z, e; J* l* Q" q0 g4 r
                        then -- no transport order for vehicle @( {! z/ N0 y* T& K
                                @.Destination :=
* L  s5 Q: X4 d" V' e- K8 `# y6 C; \& A5 e                                rgManager.nearestFreeStation(@,track.~);  m% f( t3 b: L' N! P* j2 K. o/ v
                                newDirection(@);   9 ]$ [9 p4 L" `/ j, [
                                if @.Destination /= void then1 R+ @) h$ L6 u
                                        @.Destination.NumReservation :=8 k0 S( \6 [9 E+ h% B
                                        @.Destination.NumReservation + 1;
+ F) a. p* ~; H$ G5 ]* S' A# `                                end;- f) s: i7 l% P  ^0 m7 A
                                @.CurrIcon := "drivingHome";1 V0 j- ~2 v+ n- `3 i4 O$ r# M
                                @.DrivingHome := true;" H$ M0 A  ^% {6 {3 P" ]4 S# a
                        end;: }! S$ k( u$ A" D) ?
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station3 }/ V2 q% ~9 \8 e
                        part := @.transpOrder;
* k' T6 F/ E+ \. O8 `8 V                        part.move(@);-- load part
9 O; d- U+ p2 G9 g; Q/ d* k                        @.CurrIcon := "load";2 }! L! M. f: m. L& g
                        GlobalDistObj := part.globDestination;$ b, L: }: |. J6 t
                        assignLObj := rgmanager.rgAssignL;$ N( ^$ P1 P& v$ L" p
                        row := assignLObj.getRowNo(GlobalDistObj);
# x# i4 Q" N1 x( ~* Q; k9 O                        if Row = -1 then -- since 708 J& ]# a$ S3 T9 h' Q" l
                                if lan=1 then
6 i/ d8 E9 a6 s0 `' ]: {                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
5 S7 k6 G- S$ I; q/ o                                                to_str("in der Andockstation: \"",?.~.name,"\""));
- G. }% ]! F5 H' S                                else
6 @; g$ p  m* H, I1 O                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
/ M& @* r( z9 ~, y. T1 W                                                to_str("in docking station: \"",?.~.name,"\""));                               
) A0 ^, H$ c. a                                end;9 r/ [) B1 ?$ ~1 J% l
                        else8 n" k$ S3 k7 n9 v# K" b$ g1 {
                                @.Destination := assignLObj[1,row];6 T  o/ A9 _: @: m: l8 J1 E
                        end;                       
' ]8 V4 O6 `7 @! T; X: O                        newDirection(@);) ^& m) c" c" f8 k* V1 \
                        @.HasOrder := true;+ C1 F& {5 V- n9 p9 N
                end;
4 o$ S1 O7 ~% O9 }+ R  ^; V2 ]        end;5 A3 p. {1 r2 Q! Z7 }
end;        -- of the method
0 Q% W# |4 U4 V2 ]0 ~6 Y
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
. P# e. D. h6 ^& O- W" A$ S3 k; e! ^# H; B+ g+ G$ ~
这是AGV_putin中arrive的method。- d; d# J- \$ t$ J' w0 f" Z7 [+ T

3 n, w. x1 [1 {1 Z' s当到达物料速度越高时,这个报警更多,
& ?: y/ ]/ |3 ^& }可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。) A# u6 }2 i; j. @8 E! T
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?# L! y7 n! w0 s7 D$ R6 s/ n
: f4 [% @) X8 F  w
另外一个小建议,就是move,所有的move都可以这样
. l( u' u5 o! Y- sif not move() then debug end5 r) f9 {" f# q3 W7 U* y" d
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
; E+ T/ |- I6 I* t6 l$ g5 x4 l1 Cplant simulation中的free libraries有AGV模板,  N% W! V8 `( h, y. v
里面也有案例。
$ n2 p3 C4 O  h, Z  A$ ]我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
* P; K) U( l) X0 m* z% C
2 r& v2 T2 [$ D: ?1 T, X& g8 T: I我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
; m- z2 R( G+ B/ X0 H9 Q4 _; r" @# p: B9 Z3 H
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 ) v& k  O( c: ~& W  u2 o
这是AGV_putin中arrive的method。- x; M$ k; {3 d
) T: l* B+ ]) K
当到达物料速度越高时,这个报警更多,
3 @" @6 p- c* d1 `1 e
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-7-23 08:50 , Processed in 0.016972 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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