设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6744|回复: 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 l; E8 j% M- ?0 |) _9 X+ Q  @*/9 B% Y% \: i0 @
is
) ^9 U% q3 @0 X! V# I7 q# P, z0 q        part, GlobalDistObj, assignLObj:object;row,Lan:integer;; s3 v3 J% P& {: z. b' {/ S
do
" u6 [5 s2 k. J) V% p6 n9 ~) ^        Lan := rootfolder.Internal.Tools.AOLlanguage;4 @2 E! Z2 w- Q# r2 U1 k9 M
        if current = @.Destination -- else return
' n" Q( z4 R& h) N        then
: H7 }# m3 X$ w5 A) c                @.Destination := void;& j1 r" I4 H  r4 Q3 P$ w2 l
                if @.occupied then
" p( a2 \5 s4 U2 m" }5 E' c3 S* B6 t                        part := @.cont;
  _+ x) G0 v8 f4 c3 s; `& y0 D                        @.transpOrder := void;" Y/ E  A: T5 l' j* R/ t# r; ~
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
/ V3 O6 V% L$ \& X: R                                @,root.eventcontroller.simTime);
/ l$ Y0 S  }: ?# @3 {                        @.HasOrder := false;  i& c  @& D8 w4 k7 d' G) ?1 |. _
                        @.DrivingHome := true;$ |% r7 K  r, `
                        rgManager.tryToStartTransOrder;/ l% Y. ^3 y1 k. ?5 g
                        if @.Destination = void
* Q, e2 ]* K& H/ w                        then -- no transport order for vehicle @
2 c8 e& [. @# ?/ j                                @.Destination :=2 p5 C& n$ K  l( Z5 A5 {
                                rgManager.nearestFreeStation(@,track.~);8 M7 Q6 o$ k% f
                                newDirection(@);   ! ^) g5 `; N/ Y0 V
                                if @.Destination /= void then
) Y! S) C, }: _" V% t. P8 J: C& w# Z                                        @.Destination.NumReservation :=
# B8 M8 t/ K8 i% j                                        @.Destination.NumReservation + 1;
+ Y! ^& q& u0 T. P/ \                                end;
" e. Q/ U5 c& Y% q# J                                @.CurrIcon := "drivingHome";
. U& o3 |* |2 f& S                                @.DrivingHome := true;
3 D* D  A' k  {; z+ B/ H                        end;
. Z; P7 l3 M7 [  q4 g3 J2 n                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
# W1 K! U( o$ k4 c3 O                        part := @.transpOrder;
7 d9 B$ b- e2 i- a4 A                        part.move(@);-- load part: _# l# {& M# W, d5 E
                        @.CurrIcon := "load";
$ W6 @) E0 I9 ?; H: y                        GlobalDistObj := part.globDestination;0 ^/ ^! _. N/ m4 M$ u
                        assignLObj := rgmanager.rgAssignL;; }4 Y' ?5 @3 F! |- C) L" i  X
                        row := assignLObj.getRowNo(GlobalDistObj);3 S5 I2 |- M$ a3 G
                        if Row = -1 then -- since 70
5 O6 ~. ]* h8 R                                if lan=1 then& @4 h) X. f; z4 A" x
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
' h" Z; _1 I" f" d: u                                                to_str("in der Andockstation: \"",?.~.name,"\""));
+ d2 ~% R) H! z+ h, `                                else, s8 ^! i. O1 S" I. {, F8 y0 p
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
6 F$ `0 F* l5 Z& s# i$ P$ o                                                to_str("in docking station: \"",?.~.name,"\""));                                * A1 c! r# Z6 N. o
                                end;& n9 v4 L( }* S; C5 I' T
                        else
2 y1 {) ^1 ?9 _4 R6 @( b# f; J/ a                                @.Destination := assignLObj[1,row];! v- ^+ b4 r! e6 h: A- j) q8 P8 b- s
                        end;                       
) B4 t% n7 X+ |) M4 L                        newDirection(@);
+ D$ q" n4 f* w9 u* B$ W                        @.HasOrder := true;- E7 r3 @2 i- S5 B
                end;8 T7 R7 w# ^' {. D9 M
        end;
7 J1 p1 ]; K( c$ Qend;        -- of the method7 w  A9 `, p! m
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
5 w: u( X/ G$ |- Q) a: o/ E5 p
5 h4 O$ I+ L1 V& I这是AGV_putin中arrive的method。% m. D7 N- Q6 \3 I( E
5 ?  S/ M% _9 _: Z$ ]; R! `$ ]
当到达物料速度越高时,这个报警更多,: V$ g7 f# {1 I/ ]
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
% f3 ]6 p7 d$ M程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
  Y. w( }* N+ ]: H/ l
; J1 o5 M% L' }$ q, O3 C: V- J另外一个小建议,就是move,所有的move都可以这样0 {5 ~/ {% e1 q% w# U: T% [
if not move() then debug end5 C' k. C; |2 _0 D
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
$ Q# t" }" e/ G7 }' Xplant simulation中的free libraries有AGV模板,
' E* n! d+ j9 H* z# d里面也有案例。- Q! ]9 H1 V) |+ `" j8 h' {
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。. m2 M- U5 y( P. J' k' F
% Y5 V, c- t* z* T# Z
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
8 m6 ^& R% E. Z4 b5 U9 B" R
' C. ~) u, X% P那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 , q& k+ ^$ Z. G" w
这是AGV_putin中arrive的method。
9 Z# W" P. g# Q- A
' V0 i; @- U+ w8 I' o4 b当到达物料速度越高时,这个报警更多,
! e% g9 F; J7 \: W, r# x* s
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-24 04:14 , Processed in 0.017312 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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