设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7469|回复: 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': E. |  a5 K- u5 v
*/9 x9 h5 X1 d' s! o; Z% g
is: @( R4 P; e) N! C9 D! [1 A
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;7 \' s; Y. k+ ]& Y: H, |
do1 \, V( S: F1 w
        Lan := rootfolder.Internal.Tools.AOLlanguage;% z4 O+ I* G8 \
        if current = @.Destination -- else return+ {) ^2 {, p7 k- G: g
        then' c+ K4 x9 P' w& N) ?$ P1 S2 H! G
                @.Destination := void;0 z; }# Q1 Q$ d
                if @.occupied then0 o+ J# {  I" h( b) S/ {0 @
                        part := @.cont;
; c4 U$ R6 F% k  @                        @.transpOrder := void;! A& G8 C5 k% ^$ ?
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,& ?/ F5 N+ w8 |- H. k
                                @,root.eventcontroller.simTime);
/ R; C4 [: }, n* ]! U$ J% r                        @.HasOrder := false;) u- h8 v3 Z7 g1 E
                        @.DrivingHome := true;
# y6 L* k, C% h& F4 g% O% t                        rgManager.tryToStartTransOrder;
# o  }. i5 f( n+ Q( ~                        if @.Destination = void1 i% Y4 d0 ^( G- c' P
                        then -- no transport order for vehicle @2 _0 X3 b9 n2 O# x# }8 h' Y
                                @.Destination :=% J' w. y3 b3 l3 D, Y
                                rgManager.nearestFreeStation(@,track.~);$ f( e; R' [( R/ i1 S- ^! C" _  k& m
                                newDirection(@);   
9 f; a  a8 C2 w9 ?/ I# F( j2 |                                if @.Destination /= void then- {3 J2 h: e6 J5 w8 L9 }7 i$ j
                                        @.Destination.NumReservation :=# X% k1 G9 R6 s1 U3 r
                                        @.Destination.NumReservation + 1;
. f+ |3 M% k, X$ K+ P  a                                end;
2 ?8 Z. @' U; ~" w- l                                @.CurrIcon := "drivingHome";
6 z$ R" q# o$ Y4 {                                @.DrivingHome := true;
. h0 |4 U/ G$ @2 v" E' ~$ A" J! E/ @                        end;; g6 h  r0 f2 q% v1 a1 u, ^
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
: h1 Q5 d# h0 c7 j6 u                        part := @.transpOrder;0 I2 M% `9 U, |
                        part.move(@);-- load part
# f5 I9 K8 J  @+ s2 @: `5 j5 k1 }                        @.CurrIcon := "load";
; U  G: ?& [5 D" ?: R1 p% I3 J4 i                        GlobalDistObj := part.globDestination;# E4 Y+ K, x! v3 z7 G7 a9 w. B
                        assignLObj := rgmanager.rgAssignL;2 C  ?* Q1 E% h8 D
                        row := assignLObj.getRowNo(GlobalDistObj);9 q+ v* N/ w0 T4 W( c
                        if Row = -1 then -- since 70
$ b( x  F  I, W5 I" ~* A; H0 B                                if lan=1 then
5 H  V2 I, k. s) D' F2 H                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\"")," b4 V5 x$ H! ~$ w& a, Q- M
                                                to_str("in der Andockstation: \"",?.~.name,"\""));* a6 p4 ]' M" A9 s
                                else- b( ]# B! ^& C/ ^6 k1 |- H/ Q
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),$ q: A  _6 k5 A' u2 x9 o
                                                to_str("in docking station: \"",?.~.name,"\""));                                # S8 }$ Q  ^8 U( F' ~2 G; s) T
                                end;
* @/ \! y8 Y. m2 |3 N& X0 L                        else! [  a" i: {$ _% C0 q2 D
                                @.Destination := assignLObj[1,row];
- e% l- V/ m. \1 h2 r+ q                        end;                       
7 E. o2 ]9 T% x' n, c                        newDirection(@);
  ^. Y3 l1 m7 x' f+ T, @( |! _; S                        @.HasOrder := true;
$ L# f: ]) r! \  u                end;
; s% S  ?0 ]) a; Z        end;4 C" K  S! w# @/ |: }
end;        -- of the method
( I( `% w5 s6 _. ?
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
( t$ _: \0 T( E' N5 E% z
: a: \$ G, r+ D/ X9 A; O这是AGV_putin中arrive的method。
7 h* f6 y3 p" e9 {6 i  r" j  ^5 h& ]# l4 f
当到达物料速度越高时,这个报警更多,
$ _( K, ~# D# \可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。8 \9 s( j  v* I$ |  }0 Q' k
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
8 M8 W) C; {& l) F  [( c7 a/ ]7 x/ a
另外一个小建议,就是move,所有的move都可以这样" `/ ~, }4 j2 V& k
if not move() then debug end5 V7 ?2 u; y  _2 M" ~
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
7 W# k1 s4 u# x. b3 Uplant simulation中的free libraries有AGV模板,
* _  P. _  p3 M; `& w' K+ a8 C) X. R6 s里面也有案例。
* k+ ^" v$ l% J, R$ F我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
' ~7 Y3 ~- W& c  d* |
8 Q6 M. g. P1 l. l5 X0 M我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 : X# g' }( c$ I+ g$ e4 S

3 S8 y/ L6 K. \1 b" i那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 2 U3 j! [& d- Z: _  C
这是AGV_putin中arrive的method。! o+ b& H& k% @- k6 r5 J# U4 X

3 o' E) {8 i# @当到达物料速度越高时,这个报警更多,
# r9 n9 A( ]4 U* B2 X' x
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-13 10:11 , Processed in 0.022677 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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