设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9888|回复: 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'# ~' Y( {' y8 c+ ^
*/) h2 z* R  h) w: \. S
is
% J$ M3 H4 s% q: z+ w( Y        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
' q6 \# i+ b7 p0 ]3 Y7 X! Mdo
' e, w. e' j: b9 U( y5 f$ l        Lan := rootfolder.Internal.Tools.AOLlanguage;5 d) L9 Y* H* n) I6 ^- G+ J
        if current = @.Destination -- else return
2 i* Z- m( [9 B: {# n8 Z) z: x        then
. P' x8 r- Z. `% X. U                @.Destination := void;$ E% F4 A+ r& A: i+ u0 l$ v" g5 k
                if @.occupied then! f7 z" X' i7 N/ M
                        part := @.cont;
  |% a- F, J# v5 R' ^$ ]                        @.transpOrder := void;
" E( d+ q' d; d! p8 h$ j                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,7 ?0 N  v9 K2 l' \) g% m5 ~' g) \2 u
                                @,root.eventcontroller.simTime);
  `2 P. g3 `1 o. e3 P                        @.HasOrder := false;/ `8 N* y+ H  m2 y  z, s
                        @.DrivingHome := true;$ B% ~/ y! N& `2 Y! t# V$ x3 i
                        rgManager.tryToStartTransOrder;/ c% [" K) F  ]% g, O$ S
                        if @.Destination = void
) f7 ~8 }! l. q                        then -- no transport order for vehicle @
  L' S( ?1 J! h' ~* `' c& s. v                                @.Destination :=4 i- H2 z; P4 o# i5 ^9 D
                                rgManager.nearestFreeStation(@,track.~);
# J, \$ C! U' ~, d, M! k$ `                                newDirection(@);   
% v2 A# o4 ~9 S# e; M$ e                                if @.Destination /= void then: @, E) G* Q5 H+ O1 J
                                        @.Destination.NumReservation :=& O  `1 d6 L2 X
                                        @.Destination.NumReservation + 1;
6 z/ L3 V  z/ k8 c0 ~                                end;. o/ r9 z; D: K4 i) m9 A+ g
                                @.CurrIcon := "drivingHome";& |5 _5 G0 q  k& @1 e# A, T) \
                                @.DrivingHome := true;
3 f. F) f! H: f6 w2 m                        end;3 a* L0 B' W$ X! r* O0 P* R! ?
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station8 `6 _% |' D2 L+ k- k$ G  s1 R
                        part := @.transpOrder;
0 p' w# A4 B3 e  u0 J' `                        part.move(@);-- load part
/ ]8 f2 O  m4 X; @; b6 f                        @.CurrIcon := "load";2 F; N* Q3 ^6 I% i
                        GlobalDistObj := part.globDestination;: Y: M4 v6 m) [4 C- y3 }1 Z
                        assignLObj := rgmanager.rgAssignL;
. |8 Z, W4 K' I2 r" \                        row := assignLObj.getRowNo(GlobalDistObj);' j( V# n, [$ X3 R
                        if Row = -1 then -- since 70
5 d& f1 O0 _% v5 n                                if lan=1 then/ H4 N) n+ \* |9 `3 _
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),# S" N! L: e  N9 f  c. @! {8 Y/ h
                                                to_str("in der Andockstation: \"",?.~.name,"\""));6 x3 H: E" E" P8 y3 X: p
                                else5 d8 v  {7 H' @1 t
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),  m9 x- H( @" ^6 |( h4 q6 T
                                                to_str("in docking station: \"",?.~.name,"\""));                                / L( \7 b" H. H& Z# k
                                end;! G! m; Y9 w7 ~; @0 G. j2 E
                        else! _9 }! q. v$ C. S& \9 O; J" R
                                @.Destination := assignLObj[1,row];3 p: P6 z. ^7 y& v# v. N
                        end;                       
: Z' a) V* C$ A( @                        newDirection(@);& m2 |- q' P, Z) T( a1 H" [3 s
                        @.HasOrder := true;
" i" v7 d5 e. e! E; X' w                end;
8 T; f/ Y/ [- U9 W        end;6 r& Q: W$ @; f9 e1 G
end;        -- of the method
; }1 }, B' v1 J# y, g
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 ) G- }+ O' U+ H* k% |. x, g5 V& I
- L: r$ o5 X2 ^! w9 O
这是AGV_putin中arrive的method。
' M; x' ^! a: D! \% M
3 e9 @3 J% o* K" t7 ?6 Y; x当到达物料速度越高时,这个报警更多,5 M2 {* T, z8 Z# w
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
# o3 J! @, S7 _6 T程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?) S, D( @: b4 _# l3 R+ A
! ^8 X- O2 |# }  M/ L2 G& @0 w8 i
另外一个小建议,就是move,所有的move都可以这样
/ a' K) q! r4 i. I0 c1 R6 d; R. Uif not move() then debug end
4 S" u2 h5 e; P0 c) E8 j" B) u+ H% ]这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。* K( d" s, a! l9 C$ s% g
plant simulation中的free libraries有AGV模板,9 e& X+ t" S4 ]0 z" i' l
里面也有案例。
+ c/ M/ T0 c. b3 A# k0 R1 L0 X' n, i我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。" H& p- [: |; R' X0 S$ Q& M

  t; [$ E' U4 y& v. t* y我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
$ R& h( y7 ]/ U! ~: z
& H4 V! N  G. y5 A那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 & p" n* \! F& O. A( R' j) e
这是AGV_putin中arrive的method。
( }) h. ]/ B; s% i: ~5 h) U* A$ L8 C3 S2 Q5 X
当到达物料速度越高时,这个报警更多,

  n( d, `6 c% T/ A& F另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-31 18:38 , Processed in 0.028802 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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