设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5454|回复: 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'7 D0 j: i9 d; S5 N5 o
*/
2 r0 q: x0 B, J. [- h; X# C! ?/ ^is% l0 k8 g  u" y" q
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;: ]  o' Q2 |- r5 Z
do8 K/ r; A" ^8 ]. U
        Lan := rootfolder.Internal.Tools.AOLlanguage;
2 N0 W& W7 s8 b& C" T        if current = @.Destination -- else return2 x' z1 G' G6 `2 E/ I
        then) j8 k; R8 W6 F  T. W2 D$ b
                @.Destination := void;
* M+ V4 V* q: z% t- E; B0 G1 ]                if @.occupied then2 o# Z2 `& Y5 j3 }) D0 z
                        part := @.cont;
, C8 p$ K; B1 U7 @4 r- P! h) h2 W, f                        @.transpOrder := void;
. J3 x7 i6 j& \: g: g8 v2 T                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
5 d, a. W3 {8 M/ d% P5 y8 O) `. c                                @,root.eventcontroller.simTime);
5 T, _3 U7 P+ z                        @.HasOrder := false;- P- H: O  ^- I9 d; L' Z# j
                        @.DrivingHome := true;
% Y# n" _5 n% W7 P; a# R                        rgManager.tryToStartTransOrder;
- A! j- ]& B8 L) _4 l" n- X+ `                        if @.Destination = void
; ?2 ^$ K: ]0 y- k+ O8 `& o: D' Y                        then -- no transport order for vehicle @( T+ g. N6 ^, S5 `, i: ~0 S
                                @.Destination :=2 c3 T! s, A. U' z8 n
                                rgManager.nearestFreeStation(@,track.~);
" N# Y5 Q5 O" l9 }! [) P" a                                newDirection(@);   
: J* g) v- k9 I6 b                                if @.Destination /= void then! u$ H) @; [% s
                                        @.Destination.NumReservation :=
. g" [6 r! V% ^+ S3 G                                        @.Destination.NumReservation + 1;
- s+ P3 e8 W1 w/ m3 o% g                                end;
# O3 H* g7 Z9 y6 ?                                @.CurrIcon := "drivingHome";9 Z+ u6 }/ |; e
                                @.DrivingHome := true;
. n1 R8 V) x  M+ T  I                        end;+ q" i0 T8 R$ [$ ~
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
' y- H: i* ^, k1 a, x0 k                        part := @.transpOrder;
6 H: \& b3 |  b' J/ C                        part.move(@);-- load part
" S. o% E4 {% K. x4 {                        @.CurrIcon := "load";, R; i4 y) M- @6 b" C; g
                        GlobalDistObj := part.globDestination;% P. ]: Q8 Q5 }
                        assignLObj := rgmanager.rgAssignL;# i  Q1 h( t- m3 R2 U: K% ^" N! C
                        row := assignLObj.getRowNo(GlobalDistObj);$ C  j3 {0 p% F; N2 \, a) P
                        if Row = -1 then -- since 70
3 i* ?2 T0 k) a6 O' f( S                                if lan=1 then
* \* ~. p2 ~, _                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
/ S; T% \, _$ f+ L4 T& }  c9 V  i. o                                                to_str("in der Andockstation: \"",?.~.name,"\""));
$ K; G9 [0 M; k                                else  T$ i! G4 t5 ^/ p0 d7 n% l
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
" Q  c+ U0 ^+ e* R/ A. v                                                to_str("in docking station: \"",?.~.name,"\""));                                ' B5 c( p2 j# h$ c, Z; X2 W/ T
                                end;
. a9 X, V4 P5 p# A- j1 i                        else
/ F( t+ Q6 y6 c! s5 n: x. J4 i. T                                @.Destination := assignLObj[1,row];
6 t2 R% [! U+ x- H- y" i- R                        end;                        9 M2 Q6 h$ ^4 O% M+ r
                        newDirection(@);* Y  X8 C9 b9 k, Y
                        @.HasOrder := true;
9 i. N; L/ R- L) S                end;
( w: n; o0 D% @# b' I# p& h, F        end;" `0 |- p% x, g! h: ], v3 T
end;        -- of the method
- U& X- c- V2 Z6 Q  S3 u* G
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 3 W/ j" ~- S8 H* x) s( H- Q! V1 Z( J
7 g8 |" U8 `5 I
这是AGV_putin中arrive的method。
( t2 z( Z6 x7 L! i4 p7 t: I0 v
+ `# L' B& U# _) h5 d当到达物料速度越高时,这个报警更多,
% W& B$ D  u1 X8 Q可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
7 D  b; e4 s) [程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
1 v# i" A8 n! }: E
5 _8 E* c# `* y/ o2 X9 y; a3 x另外一个小建议,就是move,所有的move都可以这样
- X0 f1 r2 C9 Zif not move() then debug end
& h. s7 C7 L: `3 P这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
/ @! ?3 ]& B  G! l- _0 C# iplant simulation中的free libraries有AGV模板,
) A3 B9 e' v2 @) x' |) H% d里面也有案例。/ B' S- _; |; W1 p
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。, S& Z3 ?- `$ I  S, U

- \! l. R  E; X: \$ @' z我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 * m$ W$ @8 l' Q+ h3 ]

2 k. z) X/ l- i  K0 K4 G6 g那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
- }5 x% D. [2 D2 S! A$ U3 L这是AGV_putin中arrive的method。% f4 ?, o5 P. ?1 r- Q& [

! o! d( P8 H, `& p% f* o7 v当到达物料速度越高时,这个报警更多,
# b0 P" T/ {# |2 u% I3 s
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-11-25 06:56 , Processed in 0.024064 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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