设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6377|回复: 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'
) G9 {, j: J  C* ~& t) x8 \) H*/
1 X! L& _' x" V# Z# ois" V7 }$ F  d" p3 r+ X/ `5 f. g
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;* i" R% x" w7 g% F( z, I. ?
do
: A( Z9 D* j" ^3 `0 f  n, F        Lan := rootfolder.Internal.Tools.AOLlanguage;
3 [; Y' a; c2 b3 x( J        if current = @.Destination -- else return/ X# ~4 E! n" i" u
        then3 m9 |6 Q3 h4 Q
                @.Destination := void;' l8 k3 l+ K) Q- }" V! O
                if @.occupied then
9 V9 B9 D9 ]& \( B6 A* c: V$ Q                        part := @.cont;
  e# Z6 }# h3 d5 a# L9 G, s                        @.transpOrder := void;
" y, ], M3 [0 v' z2 J$ W, p: m                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,. p, b7 n0 D8 G8 N. n
                                @,root.eventcontroller.simTime);
" }4 ?- o  a6 Q' k# D                        @.HasOrder := false;! K4 G$ Q) I1 f* K# T. h
                        @.DrivingHome := true;7 v! A2 S1 W5 |; l  @
                        rgManager.tryToStartTransOrder;
& a, \. i# Q5 Z- d# r$ W                        if @.Destination = void
) c7 ?( v2 W( E  P                        then -- no transport order for vehicle @% s1 J9 m. R' A& Q; N
                                @.Destination :=
$ [9 b7 b5 ?/ ?2 x0 ~                                rgManager.nearestFreeStation(@,track.~);
4 T0 c* M9 [4 {  M4 n0 |                                newDirection(@);   
/ p/ r4 D7 l4 L6 Z* X. L                                if @.Destination /= void then0 k! c! I1 K' {% d3 c
                                        @.Destination.NumReservation :=' b( ^2 ?4 c. T& ^/ d5 j
                                        @.Destination.NumReservation + 1;0 x* \- p! W6 S9 o
                                end;+ p# l2 R3 J/ o# W
                                @.CurrIcon := "drivingHome";! R9 ?+ B2 p! P: d) J1 X
                                @.DrivingHome := true;+ s- I8 D+ R! s7 K
                        end;
4 w& X: H6 k, F' H9 V0 Q                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
# i% H$ Y- o$ l8 c% \3 ?                        part := @.transpOrder;
; b! t# ^, |, x: @. a% ?                        part.move(@);-- load part
: i7 E/ h9 ^: z6 V: @0 W                        @.CurrIcon := "load";& D0 i0 W) r% H$ q! j- w
                        GlobalDistObj := part.globDestination;
+ l. u7 c% H0 q% h; B                        assignLObj := rgmanager.rgAssignL;( @9 a% O/ o+ l6 ~. H( K9 s+ P
                        row := assignLObj.getRowNo(GlobalDistObj);
2 D$ c! k3 l5 W                        if Row = -1 then -- since 70
, b1 q" N# J2 C+ \. q  X                                if lan=1 then
' d! q3 O) K* S9 k- ]+ ^                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),- A5 z) n4 K9 _# x2 X/ j$ r, ^
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
9 w, `  v# @8 T3 F1 q3 m$ E& J1 w                                else
/ S( c* Q( J4 G& ~5 B& K                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
  {% o6 e- Z7 d: {  ^0 B9 s) b7 \                                                to_str("in docking station: \"",?.~.name,"\""));                               
, c; U/ g  N7 l0 h2 f                                end;
8 {4 R) e9 y' i                        else
9 h6 R% d- j" m: n) x( o                                @.Destination := assignLObj[1,row];: u- T+ F" P, A1 {
                        end;                        ' ]' i% X" I) Y) H, H4 K' c) A; S
                        newDirection(@);2 P' k5 Q& d6 g4 U; x( E1 J& t
                        @.HasOrder := true;
# H& [' l5 k4 L. r6 R- U$ r, N  n                end;( j( R2 P0 ~  K$ T
        end;- q* @( ?+ d8 L) s: b# M
end;        -- of the method, ^* f) M; s# N8 |& S) g
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
9 _  C9 C; u! D3 l) J/ [$ M
* ~6 X6 G8 Y: W. Z5 T6 F这是AGV_putin中arrive的method。0 g* |9 U9 o8 u* O
5 _) E0 c" W# _; g% E% s; s
当到达物料速度越高时,这个报警更多,
& J4 N* W" C, d. c可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
! r$ I/ `0 W# b8 K. v程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?) _' Y. n( N( f) C: a
$ f3 Q& ^% a6 O* g4 p- W8 x9 _
另外一个小建议,就是move,所有的move都可以这样
8 u+ y; R! A9 yif not move() then debug end
- P- g# p! z* g# {* t# ~9 D4 I这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。: o- F6 X* a8 P" Y3 ?" |  U/ s
plant simulation中的free libraries有AGV模板,
  P$ r* E. g' ~) F& v% e5 k3 n里面也有案例。' w3 K8 j) t+ q& Q0 K0 l. E
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
# p" w" E' Q" t8 _5 g, d% b( f  ?: @
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
( s" Y" |" f& H% N+ \8 k5 A$ Z3 L! m# ~" e: C& ~
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 * g* s: g& w0 q! R7 ]' M
这是AGV_putin中arrive的method。
& p9 g1 d+ X& W
/ F, S' I* \1 ?+ k& @2 L当到达物料速度越高时,这个报警更多,
. q! u! s/ z" Y5 t
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-2 17:18 , Processed in 0.019771 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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