设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7995|回复: 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'& Y3 K: E4 V; t6 y9 u
*/" x: b8 `# U- v  z# B  \
is$ B1 s7 V4 Y" r- C$ r& _
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;! ]" M% {7 a+ y+ m
do
9 _2 q$ [( u, ]2 Y        Lan := rootfolder.Internal.Tools.AOLlanguage;
2 g7 ~5 T8 U$ M; w/ Y' X        if current = @.Destination -- else return; B% I: T0 U1 @! L! M8 s! P% e
        then9 M& W6 }) \3 k  j& t$ Q4 l
                @.Destination := void;
' T+ b, \  A; N                if @.occupied then! \; |- n  `3 P/ k' G
                        part := @.cont;4 O6 d3 v# [  L4 C8 k
                        @.transpOrder := void;
) b. g- G9 o( V. S                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,* h) L3 i- Q& y/ }( b+ c+ i
                                @,root.eventcontroller.simTime);( u8 \: f  U3 ?# }
                        @.HasOrder := false;
; H) M0 A, q$ r0 s                        @.DrivingHome := true;$ M' w. X) P' G) g4 E
                        rgManager.tryToStartTransOrder;
) D- N# L( L0 Y9 ?                        if @.Destination = void
+ l4 g& q) U5 d+ W3 F' W% Q9 u                        then -- no transport order for vehicle @8 Q! F1 _, Z1 n- `3 N; A3 I
                                @.Destination :=% }0 X/ Q) B3 R+ P$ V  o. o" D
                                rgManager.nearestFreeStation(@,track.~);
0 l' M! {# d# B, \4 m. \! d                                newDirection(@);   + ]6 g, }) _" B5 R+ X% S
                                if @.Destination /= void then, a7 ~; `# A5 a8 z3 V
                                        @.Destination.NumReservation :=- `& u$ R6 C, |+ A1 \! i; T% H" S) L
                                        @.Destination.NumReservation + 1;: p' t5 v- |! }. x
                                end;1 F/ B0 c) @/ M7 n# Y, j, t
                                @.CurrIcon := "drivingHome";
' n5 J5 t, @0 j1 U5 _/ A" d+ `) S0 _                                @.DrivingHome := true;# ~6 y: s, w% C
                        end;
! i; G% f" Q' |& r) m5 l6 t3 E" @                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
( l  E% r+ b6 S# y" p                        part := @.transpOrder;+ U/ X, t9 l& ^) e; g
                        part.move(@);-- load part
% o/ [7 ?( R! Z: b% O3 w                        @.CurrIcon := "load";, T  C' b0 O9 f2 h8 t
                        GlobalDistObj := part.globDestination;
6 L$ m; s7 H' F& A$ s1 W                        assignLObj := rgmanager.rgAssignL;+ l  Y" g+ y7 [. o$ G( l
                        row := assignLObj.getRowNo(GlobalDistObj);
) O( }) ~! m2 B  h                        if Row = -1 then -- since 706 i; ~# n. E& f! m7 I8 x4 b+ C
                                if lan=1 then
4 Q1 m7 B: ]0 {8 |                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),; q1 R1 |4 a  f8 o" v
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
* g1 o! x/ z0 O! _7 w5 @                                else) m: J4 V: W% [( Z0 W1 i) d
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
) t0 K& u  i  K                                                to_str("in docking station: \"",?.~.name,"\""));                               
6 W1 h- ^+ `  w" b. k                                end;+ n! Q) ~7 \8 J* T: f. g
                        else# e- R+ g1 H6 k1 N9 g
                                @.Destination := assignLObj[1,row];& M' Z0 v. ~# K. i% @
                        end;                        * T# n$ \* S& u7 }# Y- f4 d, g! ~
                        newDirection(@);
1 g3 m5 D# E5 ^( g# D' }3 R7 Z                        @.HasOrder := true;7 _. |: A1 t/ q" f; ^8 n, V
                end;2 k  V& k2 {$ r" \. {4 R8 {; C
        end;' k$ d- U" G% E" I
end;        -- of the method# B, d2 |0 |. ?9 n& {+ L. U
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 % R* e/ d$ s/ {

; r# v- X# s) p# x这是AGV_putin中arrive的method。
5 c7 m5 a, S" f5 _% |
1 l7 Y" P/ D$ P6 p当到达物料速度越高时,这个报警更多,
* G) I" [. q4 w# N! d& u可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。- w0 A; \# |4 c2 j2 ?+ N
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?/ a: s) r$ x/ I! s+ b1 f4 A4 X2 \+ Z
! }6 P! L1 S2 q5 t& N& C4 \
另外一个小建议,就是move,所有的move都可以这样
; t' d0 k- _- ~/ zif not move() then debug end
1 e# ]4 V% }0 Y% E0 X这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
% V& o/ S/ k" n7 Jplant simulation中的free libraries有AGV模板,
8 Q* a/ l% z; |+ W' K1 K5 X9 M里面也有案例。
, N8 v: n# k% k/ x* e4 p我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
; \! p- [0 t) S5 [  Q* E3 \5 ]# b" v3 A) O- A4 q
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 6 U) ?4 m' L+ w9 z) m* S

% Y" T. }3 X! w$ o6 ^& y那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 $ j' b0 l+ w6 w7 I8 y
这是AGV_putin中arrive的method。
  K( g3 ~8 O" \  Z! d1 _$ O
) Z  }- z& U5 d# b9 }/ V当到达物料速度越高时,这个报警更多,
* a% m( J0 ]( I9 G5 t3 t
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-9 22:06 , Processed in 0.018558 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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