设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7818|回复: 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'
8 I, D: c; k3 f) Y9 b*/' L$ e, P6 X2 o1 {" Z2 K
is7 o* c- I/ Y8 r
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
3 u: M7 K( G: ~# udo; S- B/ q! I6 h
        Lan := rootfolder.Internal.Tools.AOLlanguage;/ h, c. x4 u9 [0 f8 j  ?$ F
        if current = @.Destination -- else return# z* a- f( V% Z  Q
        then; l3 F* Y$ z% W8 I$ q+ z
                @.Destination := void;+ @( Z7 y/ N; O; I: Y4 ]
                if @.occupied then
9 [0 [' P1 @$ n4 U/ N' `                        part := @.cont;1 \1 ?' q  _- V
                        @.transpOrder := void;( e5 d- C; W8 ~+ x, Z, d  R1 m+ H
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
0 H6 Q" q' q# f, g; o; f                                @,root.eventcontroller.simTime);2 q2 N8 {7 J! ]
                        @.HasOrder := false;
* }9 _- w! T: D! T' \2 J8 M                        @.DrivingHome := true;
% Y( f6 N+ C: v8 l/ x0 e                        rgManager.tryToStartTransOrder;
6 y/ z/ _* O3 v5 b0 _; N3 k                        if @.Destination = void( L, c- y! _+ V+ j9 o- u
                        then -- no transport order for vehicle @0 c% x9 Y& L# Y6 {
                                @.Destination :=" \# J( z9 y1 s- ~, k3 h8 K/ {
                                rgManager.nearestFreeStation(@,track.~);
( A. D; c! _$ \3 F9 \3 Q                                newDirection(@);   
' M$ L/ v' j, H6 g5 A, a* \+ o1 N  E                                if @.Destination /= void then$ l- M, l9 C# R) g% L
                                        @.Destination.NumReservation :=6 h" @  |+ B& H! V2 t9 q
                                        @.Destination.NumReservation + 1;
  P' ~# `. p$ K0 I5 I5 D                                end;. g# a- a7 t! ]7 @* {
                                @.CurrIcon := "drivingHome";1 d8 S% E9 C* \+ P
                                @.DrivingHome := true;( y0 s3 n( @  ?
                        end;9 k# H/ d3 Y2 e$ A
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station7 d/ y7 e! D- f) p6 B2 {
                        part := @.transpOrder;5 ^7 ], K3 z% U( z
                        part.move(@);-- load part
" G# x6 \# J$ H6 z" d" m) b  ]                        @.CurrIcon := "load";! o; }5 z9 }0 J4 b6 l. Q
                        GlobalDistObj := part.globDestination;
4 J: a# c3 f! o9 j4 T                        assignLObj := rgmanager.rgAssignL;
  v) t. P- E( O* Z9 T6 F* A                        row := assignLObj.getRowNo(GlobalDistObj);' }1 @9 x- T+ w- f& I, d  v
                        if Row = -1 then -- since 704 o% L% b8 w  f6 t2 s" E
                                if lan=1 then9 ~& v8 l9 t! M4 U% o4 C1 A3 `
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
" I' ~: }  u) F, l9 I2 c                                                to_str("in der Andockstation: \"",?.~.name,"\""));! p* ~# H  x- a7 ?' W9 \7 A
                                else
- h% d: Z, w6 e3 ~2 \! B7 O5 }3 Y                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
! T% g% E' u/ O4 y  \9 G4 }1 x: E' W: e                                                to_str("in docking station: \"",?.~.name,"\""));                               
+ Z  a7 P+ o2 _5 E3 S5 L- Y                                end;4 _9 _) C9 h! c$ h- ]! c
                        else9 H  h* }% n1 V: P; |1 W0 d
                                @.Destination := assignLObj[1,row];3 T, U% q& j2 G5 x& \
                        end;                       
( T5 ?/ e2 z8 O$ M) |$ m  s                        newDirection(@);
0 T" X" }' z. Z4 N                        @.HasOrder := true;" {7 L4 {4 n: W' ^- ^! Y
                end;# Q* n/ f6 ^! b7 k" U: S4 c
        end;2 [1 W2 _/ o: ^
end;        -- of the method
1 F' L0 j' l9 N5 c
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 % s; B$ J3 T& @% J

( ?6 N7 ?/ ]3 G/ Y# q8 {2 x这是AGV_putin中arrive的method。
; c; I. g% H, z, q% P
" ]7 I- G$ s$ N当到达物料速度越高时,这个报警更多,. Z$ e$ Z0 ?& m2 N+ m0 V. N
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。$ N  i; y9 X( b5 Q& J/ m
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?. t8 w+ j- s9 R* N  ?, L

3 n) _4 u: ^/ ^+ G9 j, e另外一个小建议,就是move,所有的move都可以这样8 |. N) ~1 s0 }5 O$ d& Z* ?6 o
if not move() then debug end
+ X" Q  N! V  Y: H6 z/ E) W8 o这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。6 e$ s* o  j+ o
plant simulation中的free libraries有AGV模板,
' l& ?: U# M7 A' e6 J里面也有案例。
+ d$ a! h9 O; N" s. ^) b, k我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
) V- H! W; N0 S" y$ {0 X. j* H1 o
: O9 A% s( m/ ~+ A* `8 F+ S9 J9 \我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 ) W7 o) Y9 X2 o% \4 j# ^+ K, U

; z! V9 M4 V3 P/ z- _5 v那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 . i3 E. U0 X% ~6 M% M4 ?, k) |
这是AGV_putin中arrive的method。
7 D/ m' y) K: F- ~* f  @. P) Q
; C3 h6 ?2 C/ h$ g: d  p7 s当到达物料速度越高时,这个报警更多,
, W1 F9 p6 i9 O+ t  j6 u$ v& S# M
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-30 12:10 , Processed in 0.015585 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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