设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8125|回复: 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'! @- C9 A$ ~: Q4 [1 k4 q
*/9 I6 ]9 }- A: C, w& X
is
: I$ N' W9 o5 T! J        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
' J% R7 A8 y' C# Odo
( `% A4 A; o0 \; X( {9 C        Lan := rootfolder.Internal.Tools.AOLlanguage;
& p9 j. m9 _6 l, ]' s6 s        if current = @.Destination -- else return: k! L# ~2 j$ E
        then8 a' A/ }: \/ B7 _; w$ o
                @.Destination := void;8 R/ d( @$ f( c3 j
                if @.occupied then* @& ~' F# R9 J, n' |. v
                        part := @.cont;, R6 D. U) H2 m/ l. p5 _0 O4 J+ d, P
                        @.transpOrder := void;
* j/ z6 U2 v- @                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
( o; v/ f4 z' _! ^0 j1 h                                @,root.eventcontroller.simTime);$ `, c& r- o" r+ U# N/ k& a
                        @.HasOrder := false;
4 V% S; l1 _0 |" T                        @.DrivingHome := true;2 g8 r- O, x. J0 k+ k$ O5 J* J
                        rgManager.tryToStartTransOrder;+ R+ |7 H4 q" |; Z& e4 t* m
                        if @.Destination = void
+ r7 ~6 o8 Y7 s                        then -- no transport order for vehicle @& _3 _3 C1 ^+ Z1 @
                                @.Destination :=
$ b* a* y6 v- J0 N6 ~' q9 C                                rgManager.nearestFreeStation(@,track.~);" a" N1 u) w- c8 Y- X" y
                                newDirection(@);   - c4 V- l$ h1 g  b( L& o% ?3 K
                                if @.Destination /= void then2 x7 M/ x! B4 g. N  t+ u: s- b9 r
                                        @.Destination.NumReservation :=
! n. `- X; W8 O' F                                        @.Destination.NumReservation + 1;
! x" U* Y' t7 o$ \                                end;# i) \8 }$ |, L7 J
                                @.CurrIcon := "drivingHome";
3 K" P' {0 _: e0 H/ D9 Q  X                                @.DrivingHome := true;
1 ?) q; d% U0 [1 n# P$ u# s  z                        end;* s7 H9 B$ D4 E' r' K. W
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
) a+ K& ]$ @: g7 ~7 m                        part := @.transpOrder;
4 F1 |* l* o* D. Q$ u' g9 I( b                        part.move(@);-- load part4 ^6 \+ \, F5 B8 D8 ?
                        @.CurrIcon := "load";
7 T! }. e! c5 e) T" z( Z# j  j                        GlobalDistObj := part.globDestination;
6 B& h( v, D7 v0 j* C$ o                        assignLObj := rgmanager.rgAssignL;  X0 C( Y7 z* N- {
                        row := assignLObj.getRowNo(GlobalDistObj);6 ^3 L8 X3 j, S) u, f" n
                        if Row = -1 then -- since 70
+ f7 @2 M# z( R" @                                if lan=1 then
, F" C/ b, x: `( R                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
! C& ^4 \4 R2 j1 Y3 D( K: F                                                to_str("in der Andockstation: \"",?.~.name,"\""));
/ [, R' ]! z: m% a9 j                                else
/ u( ~0 k1 h! q- E; K                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),5 u5 E# F& [! T- t
                                                to_str("in docking station: \"",?.~.name,"\""));                                . N( b+ ]* Q/ y3 D$ J2 _
                                end;; x3 [1 v3 b  b7 v5 {- B$ z0 d" k, z
                        else
! e# n( {* |, g* O2 X$ E                                @.Destination := assignLObj[1,row];
5 e9 ^. n% w. e5 t                        end;                        9 m/ J& n8 i3 {( I' I3 g, U& l+ t
                        newDirection(@);
6 t4 H1 w# B+ _$ ]4 u                        @.HasOrder := true;
5 ]$ q* P: H$ a; L7 ^5 t/ |* h                end;6 [4 l/ R: L4 @8 {) g
        end;
" q! h$ h, B, y% ^6 t; z% qend;        -- of the method
5 }% J" B. y$ x' j% y. {3 P
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 7 K  b2 E- E9 n

8 P$ s7 r; N/ d& P) n' D. M这是AGV_putin中arrive的method。) y5 f# Q. u. T" z

8 c2 p1 V" T- b3 t( Q0 q9 t2 c当到达物料速度越高时,这个报警更多," E8 W. Y: n( g
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。$ u& E6 v( g6 k! l) C
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?" k7 ~2 c2 q& K

1 ^/ a& j" S. S/ ?* K+ S另外一个小建议,就是move,所有的move都可以这样
- ]) ^4 J# y% R6 _: C% i) oif not move() then debug end
; O$ u6 k4 L0 s, m7 H' w' i这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。' M6 q: W$ Q8 Q) c0 e! b# X9 Y
plant simulation中的free libraries有AGV模板,
7 V$ L) r' Z6 ^7 u* x( F里面也有案例。
! i2 D* B( M7 E8 K我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。5 z  `- \; S5 J4 r( `

" O3 c. L4 l- m  `9 W( J( @我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 ! M/ |' ^9 Q+ v- y

/ \2 S* _: M4 D( q那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 " Y  |7 ^! V2 K7 [
这是AGV_putin中arrive的method。% [' V- [0 f2 n' p

3 f( W6 ^3 ^( e* X3 j, T8 |8 N当到达物料速度越高时,这个报警更多,

( e/ x- z$ a4 w另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-16 03:26 , Processed in 0.023101 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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