设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8280|回复: 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'
, I! w5 ?3 Z, w6 m' Z*/" M/ b: i# [0 p4 a
is
* Y+ V3 o6 {) k8 j        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
# ^# J+ \0 [& C0 @: k& Sdo4 U" Z, C+ {- Z$ A# M5 C; X! U
        Lan := rootfolder.Internal.Tools.AOLlanguage;0 H! l) _) `: I" L  n% P
        if current = @.Destination -- else return" j: S* l, L) k6 {" ^+ @: a; k
        then1 e; S8 h) v! F( A3 E( S4 {
                @.Destination := void;: a+ u6 a% O$ Q# @, e4 u% w
                if @.occupied then) M* O# E+ @$ G& F5 @  ]; G
                        part := @.cont;# N( t! T; |" q( f
                        @.transpOrder := void;
9 ^! W, k" |& K) n3 ^1 Z' ^                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,0 Q  h$ R' E8 P' ?; b3 F
                                @,root.eventcontroller.simTime);
$ s1 h  h, n( P. S                        @.HasOrder := false;
* Y3 M( B4 ]2 Q4 _3 I7 }) O+ G                        @.DrivingHome := true;
1 ^) ~6 e8 Q) v$ o" ~7 N' z                        rgManager.tryToStartTransOrder;
# p( [  \) G# z. x, F( y$ ^                        if @.Destination = void7 M' Q+ E+ G0 R5 S, ^8 w3 e( _  H# W$ g
                        then -- no transport order for vehicle @! l* r- a8 o/ |4 l3 P0 ?7 k" D
                                @.Destination :=
2 B2 a. w7 R. U2 o' o/ |' x# F                                rgManager.nearestFreeStation(@,track.~);
, F( w* J& a) t1 r9 V$ k                                newDirection(@);   * ~0 P$ ^% Y" T7 g
                                if @.Destination /= void then+ s( M9 Y" B5 c3 u9 z. |
                                        @.Destination.NumReservation :=  ^# r7 X, ]3 t. z( B) D6 Y
                                        @.Destination.NumReservation + 1;
- R# m4 [$ R- x/ ?; q                                end;
' X% ~; a  t, O1 k8 t; k! ~                                @.CurrIcon := "drivingHome";9 o6 l$ p! S6 \9 ?/ t/ g0 Z3 h
                                @.DrivingHome := true;+ s4 N8 R) I0 d8 O8 C/ N
                        end;3 k& W& `( k" ^0 p2 u
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
0 F" c! o1 S- s                        part := @.transpOrder;
( P/ F0 o6 C0 p                        part.move(@);-- load part  z5 x7 o  ~$ s$ b3 P
                        @.CurrIcon := "load";" v/ ^* i% N/ b! b! b
                        GlobalDistObj := part.globDestination;% l* Y, M8 C" w  [
                        assignLObj := rgmanager.rgAssignL;
  ]+ t: p) i' a5 q                        row := assignLObj.getRowNo(GlobalDistObj);1 a& n4 P& w2 K7 O5 `
                        if Row = -1 then -- since 70! @* a9 `0 |* G. o. G: i. y
                                if lan=1 then+ H  F" c3 U& d1 g$ \, o
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),0 I5 P$ ~' m8 O" K
                                                to_str("in der Andockstation: \"",?.~.name,"\""));* ]# q" n2 x3 `
                                else  |0 g, K0 k/ O5 Q: r" ~6 z/ f
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
: z: X3 u  @# C& H3 p/ ~                                                to_str("in docking station: \"",?.~.name,"\""));                                1 b# T% [0 I  x) L  U4 Q' h* L7 x
                                end;
4 W* ^/ T: Z" i, M3 q, G! V* V                        else
; S% i5 e' W7 K0 Y' V+ b1 J2 s* y% U                                @.Destination := assignLObj[1,row];
% Y9 X+ \1 D- N  p7 A                        end;                       
# N- x2 u1 [& N9 ^                        newDirection(@);. n/ h3 O' H( G6 w
                        @.HasOrder := true;
, f5 ]9 r+ p& b$ E4 E                end;" r  Z9 k2 v+ S5 _/ e. B2 X- I
        end;
' x9 |* ]1 `( x6 v, ~, e. _: uend;        -- of the method! y! m; ~) {2 v/ e% N$ Z/ U
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
7 ~" I. V# Y  G' w; Z4 L" R
2 u. W" @2 ]7 `6 L这是AGV_putin中arrive的method。
# c+ J/ n. ~, D* m) T! E7 o) i1 W# b$ L, t
当到达物料速度越高时,这个报警更多,
3 G  x- ^$ Z& P/ w$ }2 {( U2 U可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。' m1 t8 n  M  o; [
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
9 }0 k1 M6 k1 l( x) K# O$ N/ ]" U& y$ `9 C- n+ G7 M
另外一个小建议,就是move,所有的move都可以这样
: P& a* S, [1 L* t1 Z( B0 wif not move() then debug end' @/ A6 m: w+ m
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
2 `7 @7 y( u9 D5 n" D" dplant simulation中的free libraries有AGV模板,! M3 J8 t( D/ a+ c4 B
里面也有案例。
; N8 j0 B4 p% f1 _我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
- x( J3 P+ `- U+ X8 d4 q. m9 i# X& E  V- @& N
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 8 y( H9 `1 j1 r8 _$ }6 U. d, w! b

. e" |. ?: d; S9 u7 M$ Y那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
: J; U3 y" H# a4 n" V* j* L4 R这是AGV_putin中arrive的method。$ D3 s# s7 ]. k

8 ^  v7 I4 _( o9 P& L' [/ C当到达物料速度越高时,这个报警更多,

, O4 d. K. S% @- [另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-25 00:51 , Processed in 0.016959 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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