设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6142|回复: 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'
) E2 l+ W; ~& y* ^. |*/
+ h( ]# D) a0 Zis  r" p; w# N2 l, D: J
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
) W* E5 q0 }0 _1 g7 _do4 |7 a# s& t" N: T$ a# q8 \! r  L
        Lan := rootfolder.Internal.Tools.AOLlanguage;
1 g! e2 f$ u7 \5 w  d& z' M        if current = @.Destination -- else return
5 ]% _* g2 v/ Y: f/ O' v- s0 G        then2 W) T/ c1 @2 f+ }/ a" Z% G
                @.Destination := void;% Z  i9 T: d! T! y& |
                if @.occupied then. [1 r* J+ E+ A
                        part := @.cont;" d6 k# `+ _) Z& {
                        @.transpOrder := void;
0 P/ U: ^; L* R' P                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,' x$ \. G, ^6 M* \+ t, p+ Z
                                @,root.eventcontroller.simTime);
, j7 @% `- C; Y8 n* D! Z                        @.HasOrder := false;& Z" i  f4 j8 b! b  N0 D% J9 X+ Z
                        @.DrivingHome := true;: ~' _/ Q1 f( t1 S' l+ l. r5 I
                        rgManager.tryToStartTransOrder;6 U' E# n) u) M9 H* L. c5 f) Q
                        if @.Destination = void" o3 t" `2 g/ D
                        then -- no transport order for vehicle @
) s  z1 D) p% E5 j                                @.Destination :=
! J  c# R: j! @" w# d                                rgManager.nearestFreeStation(@,track.~);
! S( v% G* S* W, x9 L" S                                newDirection(@);   
% L2 X9 O$ F  Z& C                                if @.Destination /= void then5 n8 M6 j6 u7 s( S! q
                                        @.Destination.NumReservation :=8 b, U/ H) z/ ^2 {- h
                                        @.Destination.NumReservation + 1;
& J  c: I0 J3 P                                end;
6 H3 @, U' ?0 @: p! \( k/ h/ r' K                                @.CurrIcon := "drivingHome";9 s# E- b9 F& i! c" L1 ^
                                @.DrivingHome := true;2 J8 t0 Q- o0 x7 T4 T3 t- V* _# s
                        end;
  Y. g) E8 p3 D: m" {2 @                else -- the vehicle @ is empty, both vehicle and part are in the same dock station1 @  ?" g: }3 F# }
                        part := @.transpOrder;$ C. \7 [! O' ]2 I  B) C
                        part.move(@);-- load part: H" Q  j" ]( B5 B: e% a1 W
                        @.CurrIcon := "load";# _7 X- b1 Z4 W; W5 W! i
                        GlobalDistObj := part.globDestination;% P* b, U; `' X7 z' p
                        assignLObj := rgmanager.rgAssignL;) n8 A# A" l! u, {7 D9 h# g
                        row := assignLObj.getRowNo(GlobalDistObj);
& r' E0 Z( f+ s                        if Row = -1 then -- since 70
) A# ^- P5 o9 T' Z                                if lan=1 then
  D# e4 {3 @9 [0 E; e3 I                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
5 X# W& s* x" A7 D( F                                                to_str("in der Andockstation: \"",?.~.name,"\""));6 C: x3 }- i" w7 B
                                else
3 g( H3 c+ r8 G+ |                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
$ v- N% ]6 [" f! b                                                to_str("in docking station: \"",?.~.name,"\""));                               
* q: Q/ ^, K/ l( x0 O0 g7 s* w* c                                end;  f; s* {+ W% j' B# }# K
                        else
5 v1 }/ S1 H; a                                @.Destination := assignLObj[1,row];
* ~% V; k2 m9 }# K- J                        end;                        - y: P5 v' j; p  K
                        newDirection(@);
9 M( ^5 f" S. \5 C+ X3 ~1 A! I                        @.HasOrder := true;
2 f, P; W: V: x                end;0 {' F; Z+ ~' E2 `! D
        end;: U2 x. w8 V% Z  M0 q
end;        -- of the method5 O7 B' l3 d$ W, k  N7 L
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 2 I$ C! z7 [9 n- x4 D

0 y, R1 m4 Y  n( @8 h这是AGV_putin中arrive的method。- h5 O) P  K# r- w

& s+ A7 O' \; L6 D2 u当到达物料速度越高时,这个报警更多,
" F% D! x; O" t5 J$ P可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。  q+ Q6 s+ U# W8 j* u
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?/ V5 x& l0 q0 k, q. u% A
/ G) F" q! M' T3 P9 W0 ~
另外一个小建议,就是move,所有的move都可以这样$ e- [9 T) k* w+ {0 o1 h: a; }
if not move() then debug end
! Y" V0 P+ u9 F: h3 q9 H1 L这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
& D% [0 L# V& k( T$ `' V/ Z# X- J5 jplant simulation中的free libraries有AGV模板,
+ a6 X  H2 E" H2 a# Q里面也有案例。
' D3 N$ k. g0 E" s; {3 O3 _, \. t我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
( J& y* N$ v1 {0 \# u8 z0 s- ?' N. N$ o# v7 ]) i
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 1 t; ^- r# V, u9 e- v  K/ v  g: S

9 |& M, M1 v8 ^那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
/ ~" J1 E0 _8 v; T- F2 A* @' N6 y这是AGV_putin中arrive的method。
& ~; T4 i' q" _# F2 m8 s- W8 u4 j. ]% M! D
当到达物料速度越高时,这个报警更多,
; [/ p: Y* Y6 H" T# v. ^
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-1-21 04:29 , Processed in 0.023648 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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