设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10293|回复: 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'
- R. ?5 e$ [1 z2 a*/
* _: V) D; a7 G0 |" tis
, o) ?! f7 L5 @8 f* u        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
# ?! g. r" R" e- B, e; Odo  _: ]* s, J- d3 w+ c: J) r
        Lan := rootfolder.Internal.Tools.AOLlanguage;- B: j6 v" n- I# g$ b
        if current = @.Destination -- else return6 L7 `3 c1 D+ O/ P
        then+ e) n: g* L  R
                @.Destination := void;# q% N4 ]7 }  x( c
                if @.occupied then/ w" Z! P6 I& J3 b
                        part := @.cont;
' b6 ~! `1 v# w  G8 V                        @.transpOrder := void;
! Y- j( |- g* N& z                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,3 H4 [& C; C" a3 }0 \8 v& b: r
                                @,root.eventcontroller.simTime);
  g; c: Y  {$ `7 L4 P* b1 S5 D                        @.HasOrder := false;7 y: |6 e6 U4 Q; b4 q% j9 B
                        @.DrivingHome := true;
% E$ [1 N4 R' @                        rgManager.tryToStartTransOrder;& c' Z* e1 x5 {7 H3 Z# d' j+ X
                        if @.Destination = void% j8 P1 X$ j; g9 n, e# M2 _! j
                        then -- no transport order for vehicle @
/ R* ^' k5 N. B& y1 ~: v. L                                @.Destination :=
: k7 H% e2 q5 |5 |4 V( v+ D                                rgManager.nearestFreeStation(@,track.~);
2 G, C; Z0 _- g! k+ ^                                newDirection(@);   
7 ^/ o' o) N0 F  d3 ^( O' u                                if @.Destination /= void then" |6 I* a- l2 ~: j7 d3 }
                                        @.Destination.NumReservation :=2 y3 L- b3 h% o2 S
                                        @.Destination.NumReservation + 1;: o& V2 u5 H! k- p7 o
                                end;8 ]0 @; D, m9 s" C
                                @.CurrIcon := "drivingHome";* [1 m, L, e% ~& g$ b
                                @.DrivingHome := true;+ v* i+ ~$ K: [  ?6 @
                        end;
: f% v+ E- a$ [; x2 |                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
8 K1 ~5 E5 x4 e2 c4 n                        part := @.transpOrder;9 D: Y* _+ b& M) B4 {
                        part.move(@);-- load part  u0 N8 {; a! b4 d3 R, s* F
                        @.CurrIcon := "load";
, S. i  M4 W2 p& O! v3 q                        GlobalDistObj := part.globDestination;+ J: U# ?. f2 @
                        assignLObj := rgmanager.rgAssignL;3 k- m, v- ^; e/ X5 \
                        row := assignLObj.getRowNo(GlobalDistObj);
: l% p6 ~) G5 X' _% h* L                        if Row = -1 then -- since 706 Q6 v. y5 F- X6 h8 X3 T  G* P
                                if lan=1 then# W0 q) r9 h3 U% T1 G/ W
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),: H% H5 \8 \) b5 [
                                                to_str("in der Andockstation: \"",?.~.name,"\""));6 G9 P# Q6 i  j
                                else
5 ~8 B8 ~$ J+ x" N                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
7 E: l' R, _  @* j, a! w0 _- I1 R, l3 S, D                                                to_str("in docking station: \"",?.~.name,"\""));                               
" N" [' r+ Q( [+ g5 ]0 N                                end;
( [# O, d" _" ^, j# r% ~                        else
& s7 i. J6 V8 T3 b/ w" E                                @.Destination := assignLObj[1,row];4 c! v$ D! j( q% K% e8 v
                        end;                       
8 r5 C4 C: r& ]; p. C1 M' S% g                        newDirection(@);7 q: ?) s( ?/ p
                        @.HasOrder := true;
3 s/ F; A+ Z; B% P3 x                end;
0 ]% H! c# h" T+ L/ x" O        end;
4 g; a9 `& A, P3 r/ kend;        -- of the method
- a5 k0 T, S- [2 y6 c3 O) I$ r
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 , p0 v2 ]+ D! Q4 Z( e" _! j
7 [5 Z9 i. A) ^$ l- e3 M
这是AGV_putin中arrive的method。$ E7 Z* L. G: r. c# ]4 W+ o0 [8 I
' M0 A8 d7 T: H9 _% n- P$ L7 H0 T
当到达物料速度越高时,这个报警更多,
+ n1 a1 ^; ^8 h: _# i% O! p- l可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。4 X( u3 s2 O$ h
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?. ^$ n- Y$ Q* W

' m" ]( v: Y) t  U另外一个小建议,就是move,所有的move都可以这样( |1 V$ n6 y; x* z' J, e0 q
if not move() then debug end
' K+ z2 g7 G6 m9 b7 N- w2 N这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。8 w" B1 E/ p0 l+ f1 W) k
plant simulation中的free libraries有AGV模板,0 E& ]9 Q) ?7 M. z, V5 r
里面也有案例。
$ a1 C+ Q1 u' |5 h6 n7 Y) t" z我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。$ n) Y! p9 R1 ^2 O% o
# _9 E; r8 F+ z  c0 y
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
: j/ ?+ E+ F' l7 H& i: Y% e
! x' h. _9 [9 j5 C6 l$ |, g那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 3 Q8 r4 C0 }3 r4 b$ a' b! ]7 D
这是AGV_putin中arrive的method。
  {9 a5 J% E- \0 L, G8 t9 p5 @4 I3 h$ U2 r3 @
当到达物料速度越高时,这个报警更多,

+ I- l+ K8 W7 ^9 d另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-9-25 01:34 , Processed in 0.020130 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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