设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6819|回复: 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'; d" N7 g2 Q+ k2 X6 |
*/
3 Q5 e* v  d4 K6 X! T- {is
  G8 j' ?; h6 V4 [        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
& c/ ]/ L: A1 h" W9 E5 x, Wdo, w' w3 C9 f/ O2 P
        Lan := rootfolder.Internal.Tools.AOLlanguage;5 Q: N& s5 R8 U
        if current = @.Destination -- else return  ?* Q% D0 A1 b# o2 e2 z- h" f
        then; r. \% l5 E/ ?1 {' O0 ^; o6 ]
                @.Destination := void;
6 M6 a, e: s2 u, |                if @.occupied then( i) ]- q5 J0 @! |* F; z
                        part := @.cont;
) o+ E: \) M  v                        @.transpOrder := void;
6 S- v% a! u: _5 m$ x3 U1 i                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
9 e9 X6 v6 T8 u# P                                @,root.eventcontroller.simTime);7 [% P. c# H' d" V1 G: m
                        @.HasOrder := false;) `; |8 {* r4 X$ j, }( F  T7 w
                        @.DrivingHome := true;
0 q+ w; C6 o4 S0 X, \: Y! u5 Z                        rgManager.tryToStartTransOrder;
2 N, e3 w* a+ z4 }" k+ [, X3 }                        if @.Destination = void- ~. Z' ^9 W. D2 K, `# e* w7 c
                        then -- no transport order for vehicle @% y0 N% @5 P' ^  T/ ~) M
                                @.Destination :=
  m( T- S5 i) |2 _8 M6 i                                rgManager.nearestFreeStation(@,track.~);
! Z5 G# Z5 N. @' \* q3 j9 t: |; }                                newDirection(@);   
* l# _' O9 X9 W+ P) J7 Z                                if @.Destination /= void then, |9 g/ _+ W2 }
                                        @.Destination.NumReservation :=
. w6 s) f! a; Z# j! t8 I. w                                        @.Destination.NumReservation + 1;
% v" ]) ]6 D' n/ j  t) D                                end;4 G& O- ]. V7 U9 r" M& R! h
                                @.CurrIcon := "drivingHome";
4 |; C0 I. F* G* q/ S" v6 G- d9 X                                @.DrivingHome := true;
0 {, E2 P( Y" Y  }0 s                        end;
( i6 l3 y9 f5 O; }8 ?+ C                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
1 U% o6 r. R" w8 f4 a- n$ Q. C& l& N                        part := @.transpOrder;  g  R0 u7 M3 c  m3 C' W6 r  m
                        part.move(@);-- load part
4 A& j  }$ v) [$ L% _/ }9 F; M                        @.CurrIcon := "load";
% s0 H/ m7 @$ M8 R8 J3 M) p                        GlobalDistObj := part.globDestination;  Q9 e7 F) G! x' `+ a& }% z4 B
                        assignLObj := rgmanager.rgAssignL;
2 L( z* p# ~. m4 t. D; ^                        row := assignLObj.getRowNo(GlobalDistObj);. o3 ^+ z  ~! y' M" g
                        if Row = -1 then -- since 70
. J* T* B. @) o8 o$ |: g                                if lan=1 then
! E* g* ?% u9 r" M                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
6 \8 C1 m: z! g  ~% X. F" C6 h                                                to_str("in der Andockstation: \"",?.~.name,"\""));/ t& u' L1 O# ~$ ~7 l6 t
                                else- b4 _+ g9 I0 P; g; d$ {; d
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
7 O7 `7 F9 T( o5 A5 W                                                to_str("in docking station: \"",?.~.name,"\""));                               
. }& e6 Y; N+ Q4 w4 ]& W; x                                end;: T' o8 P1 {: ?$ m) s
                        else
6 s# N  R7 ]9 S+ a; l4 r                                @.Destination := assignLObj[1,row];
" m  u+ u" I5 Z- v- K                        end;                       
& x* W" x# O+ M% a1 z) Y, D                        newDirection(@);! e5 i2 t. d9 q9 T- j3 D$ o
                        @.HasOrder := true;
4 A" h7 p$ h0 \( Y' i" @                end;
' {  H7 h1 ?+ k; c# r# E. n        end;) u) g: n$ ]4 Y+ Q
end;        -- of the method+ T9 @- W7 w  U& e
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 . t, k( A  E$ g: K' _

# L  D* d' Q+ s- W' h  R: n这是AGV_putin中arrive的method。6 L/ K4 y# f" I. V0 ?' B6 ~( i

$ z; H3 b* R& t% ?) [8 G: L当到达物料速度越高时,这个报警更多,
) S) l: g* N) e% u- R$ J可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。, y  W1 Z- k  g6 s
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
8 T5 m- k& T1 k6 F9 R5 |4 T: x6 f& d
另外一个小建议,就是move,所有的move都可以这样
4 F/ p9 d+ Y& \* m+ u: A3 ?! X  eif not move() then debug end
7 M8 X2 v$ S% s6 M这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
' X7 Y, }; v5 K# ]' c& C9 @plant simulation中的free libraries有AGV模板,
/ P$ ?2 n# r& a  ^4 E& ^里面也有案例。
* k; V: g! T2 P  i0 o我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。# [5 l# I: z4 s7 d4 G) @: `

" ^' Q: n: R! r2 e+ K( K8 f我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
( Q5 M6 r! j/ _4 d. D
7 G: g' _) J0 U+ {, Y/ L那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
7 ]. o' j% r8 `+ C/ ~这是AGV_putin中arrive的method。; `- g5 P' O+ I! G
: r9 G& U- y! i8 @& F
当到达物料速度越高时,这个报警更多,

0 Y: F/ P! {8 T" |, M: ~, v$ g5 B另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-28 13:25 , Processed in 0.022477 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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