设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6572|回复: 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'1 A4 n; m, H3 S2 D
*/: u2 H7 B& A) V3 c# O
is
; o+ v/ s( E' ?) Y' C        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
& [* Z. h* D% g( q; f- o; ?do
; F0 U4 ]  b7 B+ j        Lan := rootfolder.Internal.Tools.AOLlanguage;
3 n, T/ T. H, |9 J        if current = @.Destination -- else return, L/ \$ p5 O6 p' ]
        then
! y! p$ c/ L% f2 M4 s+ @                @.Destination := void;
, q/ g1 o- |& c& h: r: @4 S- Y- [                if @.occupied then7 O! h+ }" A) p, h  E" i. S9 _2 k$ r
                        part := @.cont;( b+ y; k; w1 V4 L
                        @.transpOrder := void;
' i* V  P; B, b# f                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,+ J; u! p$ e( W; L, \+ p( T
                                @,root.eventcontroller.simTime);/ {6 [' ]) I+ s: r; L; `( w
                        @.HasOrder := false;7 C/ y9 P1 e- a  q& E
                        @.DrivingHome := true;+ d# X& G% _% Z) P$ Y) _2 x
                        rgManager.tryToStartTransOrder;
$ O1 ]9 N2 d" o2 t% [: t3 y                        if @.Destination = void8 q5 y+ V) ?, b( B- c7 U
                        then -- no transport order for vehicle @
; x# N- I$ ~$ P% p8 a3 L" g6 P                                @.Destination :=+ b# I  h0 d  M8 t. t$ |
                                rgManager.nearestFreeStation(@,track.~);7 B9 N! e( S: ?( H& @5 J
                                newDirection(@);   # y% v* E9 Y1 k: F; M9 E! Q
                                if @.Destination /= void then
: M5 Q1 R. V! \8 C; G) V5 [                                        @.Destination.NumReservation :=- n) j( _7 }( L1 k
                                        @.Destination.NumReservation + 1;5 B, y8 ~# p7 n* e+ L  f
                                end;$ `/ y6 {5 ~) r& a* f, i! n
                                @.CurrIcon := "drivingHome";
0 e8 e: ?! M; {( K2 n$ ]2 F: R9 ]                                @.DrivingHome := true;% o) Z* M& V9 p* J# l6 M. k2 N
                        end;2 }8 g: o% h3 i& G
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station* F0 E; v% P1 S9 f, p3 T
                        part := @.transpOrder;
# z0 R  m% c' U5 }9 `8 I5 a& K                        part.move(@);-- load part
) C* v* F+ f3 K/ d; k                        @.CurrIcon := "load";
! R7 h9 J+ q, L3 J. V8 u                        GlobalDistObj := part.globDestination;
, H6 W* Z2 e4 h; {/ e                        assignLObj := rgmanager.rgAssignL;0 Y9 w( i$ @2 b( r( N
                        row := assignLObj.getRowNo(GlobalDistObj);7 X9 @! S. i7 _/ x0 d+ j
                        if Row = -1 then -- since 70
6 R0 {) R9 {, _: ]' s$ n                                if lan=1 then' u% J7 o3 ^- X$ {( ^# h" U
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
7 D8 x7 C1 v' K7 r! U" j                                                to_str("in der Andockstation: \"",?.~.name,"\""));
  o; r( A/ e- ~8 @5 u                                else
0 [/ ^& \8 ~( J" o+ ]% Q                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
1 L& T: Y3 R  g( J4 X) w                                                to_str("in docking station: \"",?.~.name,"\""));                               
0 n0 Y$ c+ B& r* f. d, |$ G                                end;
+ h: E1 U4 p8 ^7 A7 {                        else3 @: l- a1 f% N( Q. c
                                @.Destination := assignLObj[1,row];
* M6 P) Y! J' V& _, F                        end;                       
( I( l& P. W% f! B% w$ y                        newDirection(@);
$ `- ?  a7 V1 y! t4 S  j3 Z                        @.HasOrder := true;% d$ S6 D3 ^& A, n6 W, u! @
                end;# G( o% G5 G0 z, n7 L
        end;* A" T; A! d' L1 u  Q
end;        -- of the method+ L# b6 `) A7 q( r
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 1 d  _! l; h9 D; P. a

' Q* G3 G& S8 d0 Z; |6 Z: ~这是AGV_putin中arrive的method。* n* f. ?, E$ e
4 Y  o  V/ J( e. c: \
当到达物料速度越高时,这个报警更多,. ^. G# W: Q9 R6 ]
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。) S9 N  R0 F, f& J1 u
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
' A: y$ W) b4 F5 C0 x" Z4 p6 N  e& {5 ]  C* w
另外一个小建议,就是move,所有的move都可以这样
3 o: _' D$ a! n; Xif not move() then debug end
+ w1 i) s. o& {8 g1 [这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
8 v7 l! ]) j% h0 S$ p9 p& ^6 `% Cplant simulation中的free libraries有AGV模板,( L# r7 ]* y3 z4 ^8 ]9 d$ p
里面也有案例。" Q, Y9 ]! b( N5 }
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。1 U$ Z# S7 a, T9 t% R: X

) z$ A' m8 E) j& X+ M0 b我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 ) R8 h8 G3 N" W+ b1 \. M8 J% w6 O
& ^5 b# t+ f9 o0 o- M3 I9 r
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
  n1 [7 M1 }# b' c1 E8 v这是AGV_putin中arrive的method。( R5 f# _4 D/ V1 n3 R
3 ?# N( P8 R$ s5 n
当到达物料速度越高时,这个报警更多,

3 ]: P1 o7 |8 U; e9 o7 U5 {另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-13 15:14 , Processed in 0.024446 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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