设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8357|回复: 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'+ S" i. B4 j3 {5 f1 Z
*/, A, F8 f: U* p: O- L
is
: N' F" O# g+ J1 @7 Q1 e! a        part, GlobalDistObj, assignLObj:object;row,Lan:integer;# [& t% V3 ~# @) D
do
5 @; B3 U4 @+ ^- _. H" j        Lan := rootfolder.Internal.Tools.AOLlanguage;
; Z( S! o* X6 S4 H+ D7 d3 p        if current = @.Destination -- else return! D$ P* B. o' N
        then& ~9 x( `5 N: t5 K: b( I+ o  h
                @.Destination := void;# f: B6 a9 b0 w; J+ ?. U5 Q
                if @.occupied then
+ |, A+ \; N  L: W* m: h4 J! s4 c                        part := @.cont;
" @" o; I6 \4 @0 w                        @.transpOrder := void;& E  k! a; z1 H1 C+ J
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
/ R0 V8 z6 N! Z( z, \. ]                                @,root.eventcontroller.simTime);" Z- `2 I. ~1 v. U* g0 x
                        @.HasOrder := false;
' P$ W9 a/ e! s: q! S                        @.DrivingHome := true;
7 L* o5 V: k$ U1 Q                        rgManager.tryToStartTransOrder;7 P2 S" P6 {* e, B+ S) H* r
                        if @.Destination = void7 S0 v- l& V# F1 }1 y' }
                        then -- no transport order for vehicle @! R) `2 q, w$ w
                                @.Destination :=0 J/ N) j% C( |1 L( X2 P5 A  b
                                rgManager.nearestFreeStation(@,track.~);& P: W( G* r2 ?; U& Q
                                newDirection(@);   ; g# ^) m2 T0 ]) T
                                if @.Destination /= void then* ~2 M* z0 s5 j7 r( S; ]
                                        @.Destination.NumReservation :=
$ H% Y, r: f' ~/ L4 O                                        @.Destination.NumReservation + 1;( K4 ^  Y% n& {& f
                                end;
9 b# V7 D+ b: m2 n                                @.CurrIcon := "drivingHome";/ A$ P' C, D, d% T( r8 f$ V8 |
                                @.DrivingHome := true;9 u0 U$ W3 Y: ?& Q2 s5 k3 |! C7 N' h% ~
                        end;
' [; G, A- \: t0 i3 E                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
2 L5 M3 d" N4 }/ [                        part := @.transpOrder;$ O" W3 j7 i( a8 G! g
                        part.move(@);-- load part
: `8 ~1 {  B8 O0 g& R. P% T9 m& A                        @.CurrIcon := "load";6 J, O% ^% }8 U3 C
                        GlobalDistObj := part.globDestination;
% H! d3 [- w7 q4 g                        assignLObj := rgmanager.rgAssignL;( |8 t1 X/ ?; {7 R! y3 x$ ?
                        row := assignLObj.getRowNo(GlobalDistObj);
8 ^" Z) B; |6 O9 p                        if Row = -1 then -- since 70; _! N/ w  m8 V# J2 j* u
                                if lan=1 then
1 O7 y( m$ \. |' G                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
! d5 t* r# F3 u8 ^6 y4 i: W                                                to_str("in der Andockstation: \"",?.~.name,"\""));
4 k) B6 O# y' W3 `5 D                                else$ z- ^( n% e  m+ l; q
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
* F2 J+ e  F7 D  _3 J+ K                                                to_str("in docking station: \"",?.~.name,"\""));                                8 G' O. n, G0 b2 m) c% v
                                end;
8 j+ S" \5 W, Z$ z( s3 Y                        else! T; g! I9 V) f& ~' K; g
                                @.Destination := assignLObj[1,row];  R5 z0 c( c8 ~9 M1 z
                        end;                        / x3 n9 D. J* b: H
                        newDirection(@);
( h, z. {9 V/ P7 \5 E. U                        @.HasOrder := true;7 V& \, |& t5 C
                end;2 x- r; X  w% L! Q* C, \! [
        end;/ Y) @$ G& h* d/ Q" |. Z& _# r
end;        -- of the method
" j+ k4 N" L1 U' @5 G& k/ Z  j
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
2 R- c3 t: o3 z* V4 H0 L: I2 m
; F/ h$ ^2 z+ S1 j" {这是AGV_putin中arrive的method。  `: G4 \: |2 t5 w1 d
$ R3 B4 l& p% Q0 v( }# D
当到达物料速度越高时,这个报警更多,
2 i! p# f* b' x: @) h可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。$ |5 Q, a$ ?) {: v/ ~  a3 P6 ~
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?3 ?9 v6 V* F  Q/ j( O8 i
! l; b0 t& k2 O, x3 U
另外一个小建议,就是move,所有的move都可以这样/ T1 b% h: K, w5 U# p
if not move() then debug end8 r2 ]: Q3 l1 t, u. J1 s5 @
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
) q# G/ p' w9 Z. O; S; Jplant simulation中的free libraries有AGV模板,
/ I/ H: r+ L( Y里面也有案例。
$ U3 ^3 s6 T+ D) I! F$ b我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。0 ]+ f4 P) M3 k1 `: A

3 a! D8 _7 R; r- r* i% f2 c我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
  G& K0 m% q* Z/ s; p; H* Z6 i4 w/ w0 n+ e- [9 ]
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
1 V' d& C6 T2 ^' ?( w这是AGV_putin中arrive的method。, _2 c$ m+ _# B) v2 }" ?, v- w3 X
$ h& x+ m/ j9 R" c( w
当到达物料速度越高时,这个报警更多,
1 a. g! e' u) S2 q! p3 \
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-30 06:54 , Processed in 0.018384 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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