设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6893|回复: 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'
" x  q. b' y+ m$ j8 F*/, F4 i0 s- g  A4 U' E4 b
is9 ]& V1 `$ D/ |4 W  Z- g
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
+ S7 ^. h! n, f6 m0 ?6 udo
' j! I  _# y9 O        Lan := rootfolder.Internal.Tools.AOLlanguage;
; R' {7 F. _  ?' s/ x, v! f        if current = @.Destination -- else return
, X8 k3 @6 n) G/ i. Z        then; p* d2 `) Z8 Q! _; ^$ q
                @.Destination := void;0 s" y3 H& Q; D; p( b; q
                if @.occupied then5 }5 }* N( N4 }; J5 S6 v6 _9 |
                        part := @.cont;
; [; e2 q  Y4 o: w$ X/ G                        @.transpOrder := void;; u2 C5 P! l9 B& v/ N
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
8 }. O4 }+ @. Z                                @,root.eventcontroller.simTime);9 S2 S5 p$ `: N7 J) _
                        @.HasOrder := false;
4 e5 M7 {  }' u7 c# c" t* @                        @.DrivingHome := true;
4 B0 i5 V* _+ g: Y                        rgManager.tryToStartTransOrder;5 C5 n; a  f4 a1 g2 \1 L( V
                        if @.Destination = void
* q: M5 p8 _0 @0 z0 Y' N                        then -- no transport order for vehicle @; _( G, t1 x5 |
                                @.Destination :=3 C$ H* Z8 N8 o* Q. G
                                rgManager.nearestFreeStation(@,track.~);
- W% a. H, t1 m" _% w                                newDirection(@);   & h/ i, v% A6 X- \! t1 L
                                if @.Destination /= void then# c6 K# c! R# k7 a1 G! d9 o2 d6 z
                                        @.Destination.NumReservation :=
5 m6 W: K. s+ r3 G4 ~1 y) W                                        @.Destination.NumReservation + 1;! A/ B- P8 N9 f7 h
                                end;
* Q: J$ N+ l" [" @                                @.CurrIcon := "drivingHome";# {5 j! e$ w# ?/ Z0 H, |( `
                                @.DrivingHome := true;# Q7 S" ?1 C7 [; K" \7 t0 W
                        end;
2 b8 l- @! U# n+ b  z7 C0 q8 A( Q! C" D& m                else -- the vehicle @ is empty, both vehicle and part are in the same dock station8 r$ a7 y1 F% a
                        part := @.transpOrder;
) g* ^' J! B8 l4 L: d4 Z                        part.move(@);-- load part
& T) r3 k9 B+ Q- `& n! }; Z                        @.CurrIcon := "load";
7 I: Y' a' Q1 T                        GlobalDistObj := part.globDestination;
- g+ h! k8 ~0 o: {; |/ y( E+ Q, {                        assignLObj := rgmanager.rgAssignL;0 X7 i  Q; M' }+ G. f
                        row := assignLObj.getRowNo(GlobalDistObj);" ]( y7 i; U# @$ o2 F" E& n! G
                        if Row = -1 then -- since 70
  x) I3 Z3 ^! }6 z" h. R                                if lan=1 then
1 i4 C" A, f  H  m; z6 p                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),* Z! g7 z0 ^! E- X) Q' f' t
                                                to_str("in der Andockstation: \"",?.~.name,"\""));7 g, e# M8 q) N; r
                                else
- j, k7 r  n8 b- \2 R                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
' k$ I9 G1 z) q; V# a                                                to_str("in docking station: \"",?.~.name,"\""));                                % m; t+ y0 x  Z6 C: D( J
                                end;
& K5 G3 V/ B4 @* Y0 E                        else! e0 w7 i1 L! T& H4 D
                                @.Destination := assignLObj[1,row];
% m9 I9 B% b/ j  q                        end;                       
, C) x/ i6 m' M0 z4 u" y6 k                        newDirection(@);5 v* P. U3 F, L7 H
                        @.HasOrder := true;
; R) @! g' `9 {5 y) Q                end;
4 e2 G" ]0 {) S; d+ _/ f. C        end;
" a- V5 x! ~; R9 ~end;        -- of the method
7 ^7 S; y5 X1 _5 W
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
* Y- X  H. c& v( Q. f/ O2 c( m: k' Y! E' n- n8 J
这是AGV_putin中arrive的method。/ p6 ]! @7 w% k! k6 C

$ `2 T& n# d0 P5 O) o当到达物料速度越高时,这个报警更多,$ X+ f0 H# r  K2 O. E
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
$ H$ c6 c3 E# a5 c5 v0 |1 M程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
: d8 z! r) H+ M% s! P2 k# e
, B8 {2 o- X9 z9 D( j( ]另外一个小建议,就是move,所有的move都可以这样
4 N- ^; Z" X/ {if not move() then debug end
! w0 {4 H- ~' v6 G9 s1 _, J这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
+ v; Y/ Q4 F; Eplant simulation中的free libraries有AGV模板,& f# W# d9 j/ ?! N% s3 e
里面也有案例。0 b8 G; z- |# o/ d9 @% S% `' a
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
$ }0 R; t5 u* Z* K  }) U2 `( x) Y. {% d7 J
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
' S( d% O9 @/ c* L" B
/ u/ Z: J; Y+ A. C$ w" h# u那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 " r1 g# Q. D4 N- G
这是AGV_putin中arrive的method。
% o+ }0 _( k' m4 p- [2 {+ G1 u. B6 K/ u  C, }
当到达物料速度越高时,这个报警更多,

* G7 {3 O6 p  V- S0 _7 f另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-5 09:18 , Processed in 0.020264 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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