设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6469|回复: 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'5 n. u' _; A8 i
*/8 z9 n( f0 y" ?1 h6 E
is
/ F: J1 i* y( K4 C% s+ Q  j        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
$ P1 k/ h6 F8 u! n- ?) }do& S4 s2 p( Y, [& X: E# i
        Lan := rootfolder.Internal.Tools.AOLlanguage;" Z, s% \- A! d* V
        if current = @.Destination -- else return
/ O/ \" ?/ `( w, p) d! N        then- M  Z$ t9 y4 Y1 g) M- B7 o
                @.Destination := void;+ E- j" h9 J% ~* d. S
                if @.occupied then
) ~! u' x8 j0 H# Q; A5 b6 G                        part := @.cont;7 K7 n9 e( N* Q: d7 V: `& C
                        @.transpOrder := void;
7 j- z* Y9 t" H0 C' ~8 Z* d                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
  i' e) J0 p8 M" g2 h" [                                @,root.eventcontroller.simTime);
( f3 R. h- D" a5 o/ z# u                        @.HasOrder := false;
" ?( G( g+ d/ i) D1 h* i1 n6 \9 E                        @.DrivingHome := true;
, c5 l, L: q/ h* v6 b( w' @: f                        rgManager.tryToStartTransOrder;
8 X- I8 I6 A: P' t& n9 I                        if @.Destination = void
; V4 f) }2 L, j7 \, j) i1 \/ y                        then -- no transport order for vehicle @/ r; g$ I, u: }) W1 O
                                @.Destination :=1 d! q8 d9 c3 F" e
                                rgManager.nearestFreeStation(@,track.~);
3 O4 ?$ {. S  T" \) {                                newDirection(@);   
) \! w( ?, a/ N0 x; J9 a                                if @.Destination /= void then
7 y9 o# ^, ~- S) O                                        @.Destination.NumReservation :=
6 e. a' B* R& ~3 M1 }                                        @.Destination.NumReservation + 1;
, A' W* s% t4 q6 i$ t) L! J                                end;
5 M$ g5 x/ E5 T2 j4 t                                @.CurrIcon := "drivingHome";+ D' t: A1 U- |/ a4 E, c/ M# @
                                @.DrivingHome := true;2 P# `+ i- N2 Y& \: M1 }8 p$ I' F- Q( T
                        end;$ O& q  l8 R/ |# d4 q% X
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station/ J( u/ x$ i6 _4 R
                        part := @.transpOrder;
, i  U" ~) [9 _+ ~, q) U( ~9 W0 v                        part.move(@);-- load part6 M: j) g4 s8 Y* W% V
                        @.CurrIcon := "load";
) ^2 o$ r% X" d- V- B0 L                        GlobalDistObj := part.globDestination;
) b+ l: s/ C! m: @( D: E                        assignLObj := rgmanager.rgAssignL;$ i- f  `6 M8 m
                        row := assignLObj.getRowNo(GlobalDistObj);8 g5 W+ M" O' b  S1 p+ m/ K5 x
                        if Row = -1 then -- since 70
4 C, r" C$ F  T% Z) k                                if lan=1 then
! H! J9 ^: e% b5 N7 t3 l1 i                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),, B4 E# s  G4 `: a. x6 l
                                                to_str("in der Andockstation: \"",?.~.name,"\""));, ~. q7 S0 ?' O
                                else7 Q) w1 R) d' e' d8 m7 \2 i4 W
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
- A- ?; _$ \5 D; z0 Z                                                to_str("in docking station: \"",?.~.name,"\""));                               
. z+ J0 V, r2 `# Q+ V% a- t                                end;
) _, `- Y% Z6 D9 z% T                        else
0 @7 o6 s- v  m' \+ t) |9 U( ]                                @.Destination := assignLObj[1,row];
8 @" q( o+ X3 Y) R3 |                        end;                        - j" ?. W9 S. K8 D
                        newDirection(@);
* E) _) `  J) z5 A1 i                        @.HasOrder := true;
/ U! s" q5 v+ w9 z; @                end;" L: [+ E/ E1 _" V1 n0 E( z
        end;
' t( _% s& |( Bend;        -- of the method) }! f; I9 N  M* C
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 8 L( x' r. W! `" A  a& U
# c3 i% F$ P. Q# L, u, m7 q
这是AGV_putin中arrive的method。
* z4 q4 P# V6 L* V# U
) R: U; I' u* `当到达物料速度越高时,这个报警更多,0 O8 e3 ^% \/ t# n3 y) x5 t
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
6 g4 t4 j5 w" k0 f; _: @# s程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?" _- G: n4 V6 p/ z! h7 s. `

' Q& S& y' \2 G+ Y3 @2 O另外一个小建议,就是move,所有的move都可以这样- J& i+ K$ A* v; `% k0 T
if not move() then debug end5 Q( G9 ?% r& v# R* y
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。7 _. c/ m0 J; F3 C
plant simulation中的free libraries有AGV模板,0 {( o! H2 t- w$ @
里面也有案例。
9 _% y  w/ }; M& ]# p2 V5 q8 O  z我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
! n. N8 W0 d) Q& x" a' ?
8 ~6 u; J; G: ^我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑   y, \# C; M* a" `8 T  ?2 R
0 t$ W& a9 b% }8 M. `; H5 ]
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 % m$ u9 {1 J  a3 @; Q% v/ d
这是AGV_putin中arrive的method。  y6 }/ t4 J, k# I# I9 H

! L% s: H4 `8 h/ p7 h. k当到达物料速度越高时,这个报警更多,

4 H7 O; u5 }: v* K另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-8 16:55 , Processed in 0.017505 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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