设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6982|回复: 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'
7 L! g( w7 k! T7 z6 Q' u*/5 o  w& n5 |8 t! |# e3 x9 K' t
is: w" U& Y! N3 C; M1 V! w
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;& l; a" G- Y7 M. M
do
& S, P$ b5 l5 g# q  d1 Y        Lan := rootfolder.Internal.Tools.AOLlanguage;
% ~  J# s# g% p0 u$ D( Q        if current = @.Destination -- else return
9 j/ i& c& x% `4 P9 f* n        then
0 `3 I1 h$ Y9 v- I                @.Destination := void;. Q& U; \3 p3 A, Z
                if @.occupied then) u( Q; K/ ~6 \  e
                        part := @.cont;- ?$ Z& Z' \) ?( N  n! s, P
                        @.transpOrder := void;9 \8 L/ x; u0 ~) ~: @0 ~
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,7 W0 K% o& g; H4 n
                                @,root.eventcontroller.simTime);9 G  h/ k7 T( m$ |) ~" e' w
                        @.HasOrder := false;/ M, o( v1 P- Z1 X- q
                        @.DrivingHome := true;8 ^  q# Y' U9 W) `. f1 I; P/ E  \! p
                        rgManager.tryToStartTransOrder;
3 n8 p' @, ]1 m/ G0 i                        if @.Destination = void# t0 r- c5 h$ _
                        then -- no transport order for vehicle @
2 C& B; T5 [2 T( L3 ~  ]8 E                                @.Destination :=- e6 f1 ~+ ]6 O) ~$ f$ V
                                rgManager.nearestFreeStation(@,track.~);
: q& x2 \0 O* S4 C                                newDirection(@);   
$ p$ F' m- o, h* T( ~; m                                if @.Destination /= void then
; o7 h  V) e: Q. T) {" w                                        @.Destination.NumReservation :=
  r4 g$ p+ h8 b, K% Y! m                                        @.Destination.NumReservation + 1;
: o) |/ T3 w1 b5 @% r) m                                end;2 w, W$ i3 S  a# R7 D# ~5 r
                                @.CurrIcon := "drivingHome";
' C: b8 |1 E. l7 K. m- s" y                                @.DrivingHome := true;. i3 R8 E& S* l  O
                        end;
% [6 Y3 c. L3 P* e7 t7 i                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
3 [" ?/ a8 l6 Y0 d7 w/ x: c                        part := @.transpOrder;5 Q1 X/ k6 s# {" _* x7 r
                        part.move(@);-- load part( ]# }2 W% V- T# P* p  F
                        @.CurrIcon := "load";0 h6 y3 T% V- E# d6 X
                        GlobalDistObj := part.globDestination;
/ {* Y. j  b9 j/ o# P( \% l                        assignLObj := rgmanager.rgAssignL;& G0 C" j! I3 u) |8 t7 R9 T
                        row := assignLObj.getRowNo(GlobalDistObj);- J9 `+ L# g( G$ p
                        if Row = -1 then -- since 70- Q2 A9 f4 f7 I6 H' G+ A$ Z
                                if lan=1 then
( |& z) Q( {1 G: X) R' y' {                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),0 f2 r$ s4 \, \# d; W9 |8 ?( ]
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
4 V6 [  O1 q5 W8 D$ q4 @                                else2 u5 ^) J% B" K% `. A
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
! j: j3 @4 X% I9 R$ ]                                                to_str("in docking station: \"",?.~.name,"\""));                               
4 ^& c7 u5 s8 j: E                                end;/ F' D( [5 V- R& x7 v4 F  E
                        else
- g+ U) ]* G, C                                @.Destination := assignLObj[1,row];
, w: Z* X8 M2 i                        end;                       
% j" F) K$ `3 O" t* n+ d: l                        newDirection(@);# I; L! k$ O: |$ W4 C7 O* s2 Y( l4 G' r5 a
                        @.HasOrder := true;
2 s7 o- [: j3 o, b2 M# w                end;
# L& }+ a1 T  m' Z, H0 }        end;
& }1 w$ u3 F* u6 p) Y( u+ Hend;        -- of the method
0 r# f$ X# G6 Z' X
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 7 m/ k6 E5 U/ a7 P8 c: X/ D
8 g9 c6 O# }" _+ b7 X% [7 w- F
这是AGV_putin中arrive的method。9 f- c0 S+ s+ V- L4 x, U
( q, ~8 _7 m: \
当到达物料速度越高时,这个报警更多,
' c3 _2 T5 N2 S可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。3 J$ ?% f7 [6 c+ d1 r
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
. i# m" S+ N6 w, C( @. \+ v6 _( N: O
$ w: P6 p- n1 |另外一个小建议,就是move,所有的move都可以这样
! k" S1 _; b) vif not move() then debug end# V2 ?  a5 k% t# p
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
8 B& n; P% D  ^5 Tplant simulation中的free libraries有AGV模板,$ Q6 q+ q0 f2 ~5 `; @4 ]4 Y& @
里面也有案例。
- h$ }8 A3 |, [8 X& j: U我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
. q& D2 _! w3 B8 O! Q6 @2 h% B1 w! @2 \+ d
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
! l4 q; J( H! l+ ^/ ]8 s! L# @$ k3 }# E9 }' a) S$ m- F
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 : r1 a! i8 }+ x  y" B) t
这是AGV_putin中arrive的method。
6 G1 J; ~/ D: w3 X7 s6 Q- G  y$ l; D6 J0 w9 w5 n( @6 n" H0 e1 l
当到达物料速度越高时,这个报警更多,
/ h) X1 x& V3 _8 ~* p
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-9 16:52 , Processed in 0.020353 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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