设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6040|回复: 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'
3 q% _7 G$ N- R) d$ Y0 r*/- J, q5 r" a. W. q* h& U
is
' Q  Q& w9 z+ r( w, S& V        part, GlobalDistObj, assignLObj:object;row,Lan:integer;8 w5 m- K/ `8 O& a% _( s6 |
do
6 X0 ~2 q4 d2 u. q# j3 ~        Lan := rootfolder.Internal.Tools.AOLlanguage;
! D3 y* b; Y/ z! T2 ?9 O  h" n        if current = @.Destination -- else return1 s; ~4 t2 a0 C; \( P; U  D9 F6 m
        then
$ c- R  z- d( Q+ B, x. Q1 S                @.Destination := void;
- K3 R8 m% k: K                if @.occupied then
) c, k# Y& O, \" j3 Y, F                        part := @.cont;6 J* V; W% k2 ~/ S7 Q* ^1 A
                        @.transpOrder := void;
+ U! Q) ]1 W  \" H                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,8 O5 Q; p" _9 ^# y5 w( G
                                @,root.eventcontroller.simTime);  ?. k+ D* ~4 R4 V- Z0 B
                        @.HasOrder := false;
' N+ M, Y5 \+ m                        @.DrivingHome := true;2 Z8 e  P3 u, R( }( I- s
                        rgManager.tryToStartTransOrder;; H) c% }  n3 S! y; d
                        if @.Destination = void* [! l* t% V) ]" j. r6 v
                        then -- no transport order for vehicle @
* f- x/ l9 @3 O+ c" W+ ^                                @.Destination :=
' M) x/ h2 a8 T0 V. A                                rgManager.nearestFreeStation(@,track.~);2 P6 C0 P4 A/ b
                                newDirection(@);   ' [( x/ H+ z/ _1 H& \  B7 {
                                if @.Destination /= void then
0 V1 a0 A. T# J& V- k                                        @.Destination.NumReservation :=% X7 P0 s/ Y& `
                                        @.Destination.NumReservation + 1;
4 A1 E* t8 W+ R8 E. @                                end;
, M* ^9 j& _4 A1 i# X* r9 e  M& P                                @.CurrIcon := "drivingHome";
) l2 a' N& x8 u  o                                @.DrivingHome := true;3 }( A% K/ T2 v* ^5 C
                        end;5 U4 d  P1 c4 C, I8 B+ z" c
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station" h% v. z5 m  |( e
                        part := @.transpOrder;: g. B  D6 `2 x; `- o
                        part.move(@);-- load part
8 s- D: y  Q, R+ m! Q: O                        @.CurrIcon := "load";
1 R; g4 \7 @8 i: k: g                        GlobalDistObj := part.globDestination;+ e: k( T5 r( P8 \0 {, i
                        assignLObj := rgmanager.rgAssignL;7 u/ C: x+ p5 t4 \, X
                        row := assignLObj.getRowNo(GlobalDistObj);! U& J( V# s9 l& E- N. H% G
                        if Row = -1 then -- since 70
8 f( n' m0 U' |# N! x                                if lan=1 then
; c% w, T; ]  y' A                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),' a. [+ _/ C9 E  y  S6 `' O
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
% J! R1 S2 E4 T" a  M$ h                                else9 O' l# b+ Y4 s7 F0 Y3 c
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),( X# N0 }  n) B2 }
                                                to_str("in docking station: \"",?.~.name,"\""));                                  f) [5 w- \' u9 @2 o3 @4 a6 v* j
                                end;8 {( w, k: k, O5 C1 U/ S: M
                        else& W: A) x2 y+ K4 t! O5 s
                                @.Destination := assignLObj[1,row];2 X" x6 Y/ f" ?# Y  }( L# A
                        end;                       
+ _/ D( a- i5 e4 F% [                        newDirection(@);( X$ H" l% I0 a+ X
                        @.HasOrder := true;
7 ^0 M; q1 L' F                end;7 e: x6 w( J/ T8 H. J) N
        end;  h" ?+ l' K& S
end;        -- of the method
9 Z- T+ P: s3 `) x# Q
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
" @, Z9 K* |# {6 E! I
7 G, z. q4 z; v, b这是AGV_putin中arrive的method。
; Y* o1 r3 |) i6 y- s  c% O) Z; _; V
当到达物料速度越高时,这个报警更多,
5 e  p/ M9 R, I$ d+ O! o可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
3 f" v1 l* s$ s% i# U8 ~程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?! S- ^2 d; ^' ?2 h! i
; }& _4 ?9 E' D% C9 T9 d+ U" Z
另外一个小建议,就是move,所有的move都可以这样: g# N1 S, K' J5 ~) k
if not move() then debug end/ B5 v7 W# c- n% |8 z9 W9 s& O# W3 I
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。/ ~% B  v; y3 d+ G
plant simulation中的free libraries有AGV模板,
# |! c3 E$ u% Z% M7 p0 c9 v. A" N4 `里面也有案例。
  J" e0 d/ S8 n2 c: `4 r5 b我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
' K  A7 T; @; F; C3 c
1 ~4 z1 h& n/ ~) i8 A! F我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 % A: R+ Z/ t+ o; ^  I( H$ K1 g3 b. e

  Z% z& g+ T0 g- @& w' H那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 ) x) @' a) K8 y7 c, o6 Q; q0 E
这是AGV_putin中arrive的method。$ c" m$ }0 g; G3 K* _* @7 E2 D, c

$ s. t# Z/ N# V! u  r3 {) k3 d当到达物料速度越高时,这个报警更多,
$ y7 x5 O( _- M0 E
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-1-14 06:11 , Processed in 0.019689 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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