设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6096|回复: 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'
; K$ B4 O8 v0 T( _  J7 g+ J5 u5 ?*/5 r# i  s- D& D
is1 N9 d# f# f, C* w! Y
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;* L2 M% Q6 w6 U5 h+ B, \* e
do
% R+ h$ c# n: l+ {4 F- U1 y        Lan := rootfolder.Internal.Tools.AOLlanguage;5 B" a7 P4 @6 C) e
        if current = @.Destination -- else return
+ e1 i2 C# ?( B        then
7 I2 ?9 Y) ]" m. \# }  F6 X6 y, A                @.Destination := void;. g4 d% D0 d5 F- Q$ |% P
                if @.occupied then# P' X4 |: }6 e: H, B
                        part := @.cont;4 o' J+ J: H/ y
                        @.transpOrder := void;% h; f. T! e6 m1 z3 C9 `2 ?
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
3 R& ^. }  ^4 `7 y$ ?" B                                @,root.eventcontroller.simTime);
5 E5 A$ x  W+ x+ \                        @.HasOrder := false;, g1 g) C8 a6 ^, P: M1 b
                        @.DrivingHome := true;, @$ ^' z1 \: j  o( ^1 u
                        rgManager.tryToStartTransOrder;
( |9 \5 F: P  T4 }# b# M% _                        if @.Destination = void
: p6 y1 k1 _: @8 g9 p; W                        then -- no transport order for vehicle @
" z1 ?; z! j* I& q% Y                                @.Destination :=6 J% J. `, j3 _4 q/ O
                                rgManager.nearestFreeStation(@,track.~);
- d: X* E3 t9 b/ m* z                                newDirection(@);   
. H: C4 X6 C1 E' B* x) H                                if @.Destination /= void then  _" p- W$ P2 M% \
                                        @.Destination.NumReservation :=3 B3 ?. B2 a1 v1 z* Q5 d
                                        @.Destination.NumReservation + 1;. V" T6 N# B8 i6 c* z+ r1 I- U
                                end;
7 H! I5 ?2 J1 _( B                                @.CurrIcon := "drivingHome";- V8 P1 g. s& z5 W
                                @.DrivingHome := true;, N5 E/ a6 U. z/ U  O
                        end;
; V- Y. O9 o( W+ @9 s) E                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
4 K  x% [# x4 O3 j                        part := @.transpOrder;
6 q; Y- L) Y6 E. N* n. X" T                        part.move(@);-- load part
" p9 T$ T. U; B# w* u+ s7 i                        @.CurrIcon := "load";* a# }* d0 @  ?
                        GlobalDistObj := part.globDestination;
0 ?9 i" G% X$ B8 \$ ]' g& O# l( x( v                        assignLObj := rgmanager.rgAssignL;% w6 J# W" s  S5 G; p* P
                        row := assignLObj.getRowNo(GlobalDistObj);; }  O2 v. ]* F0 T, y8 `
                        if Row = -1 then -- since 70& M: Q2 e: ]0 q0 }! g
                                if lan=1 then
2 t; v. y: N6 U                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),6 n$ z( q: O! S1 g. }; h  r
                                                to_str("in der Andockstation: \"",?.~.name,"\""));! a+ f9 y1 T7 L$ V7 M+ w7 T5 D+ W
                                else& P( q( U, @/ R  {; d4 {$ |: S
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),; D! O4 z5 r' \
                                                to_str("in docking station: \"",?.~.name,"\""));                               
7 ^: S3 @% p$ f; V                                end;
; \, Q' F3 a) G                        else
6 y  \7 s* v& @% _0 _. y2 P                                @.Destination := assignLObj[1,row];
; Y8 r  l. }2 A* v: }' a                        end;                        9 O: s% U+ f, q6 D" M% ]
                        newDirection(@);
& u& a* K7 d# w' Y* E+ `                        @.HasOrder := true;5 T7 i. W: {7 d5 V
                end;/ S9 L& ]& x6 A/ ^7 e8 S0 ?8 E
        end;6 r- d0 R4 U* R
end;        -- of the method
7 k0 _6 }6 d4 ^+ M$ z" }( B
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 3 l/ J4 D' D7 L' {# S

& s$ i! |/ I5 C( f- y9 d* A) l这是AGV_putin中arrive的method。
8 ]( b8 {5 c8 I; j& B$ k- V) P4 F- @3 H
当到达物料速度越高时,这个报警更多,4 i+ l+ i4 h+ E$ ^
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。) L! L8 {+ E/ d1 o+ t* y: u# l
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
+ ]0 ?' d' h& f2 @, ^
* \; s/ G+ m3 A# g1 o另外一个小建议,就是move,所有的move都可以这样
6 }! z) o7 o1 F5 iif not move() then debug end
$ R: y2 K, B6 P; a$ [5 ?这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
5 R& c9 a' {% f7 t* D$ h6 pplant simulation中的free libraries有AGV模板,! H& l  l' S& v9 q: A' E
里面也有案例。: }6 N$ Z7 B+ }" B
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。9 ]$ u0 |# m- v6 D1 Z

. E# s+ ~; l1 ^9 H) w8 C我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 ' Y4 }6 _& O, U7 X3 Z4 G

6 i. |  s. r. h) T4 _  [7 \4 D+ C那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 % m+ |4 ^' X8 O# \# Y& d
这是AGV_putin中arrive的method。4 q0 x$ ~2 M4 ?& m- i

2 G5 R- C, B* G  h3 {1 \, m" e" r2 z" Y当到达物料速度越高时,这个报警更多,

1 [2 P, Y: d4 @+ `7 T8 z* {另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-1-18 04:54 , Processed in 0.023273 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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