设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8751|回复: 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'" a8 b0 e0 l6 I
*/
  i$ L, q- c4 k0 @) ais: o4 E) b- g! X" t; f1 H
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;' _# k0 I& ~8 H$ w+ V7 D4 Q
do+ h% s( @; L$ L# K" N$ O: o
        Lan := rootfolder.Internal.Tools.AOLlanguage;
) A1 t# A0 X/ o- C* G& B4 C8 P) h3 V, P        if current = @.Destination -- else return
" Y: z# K. Y* i& j) v0 s0 h  m        then
) M3 O( U- }3 M/ y                @.Destination := void;
" d) l5 ]6 m$ q7 Y4 b                if @.occupied then
/ _& y6 y+ a' F                        part := @.cont;, n" c, E- m" u! Q1 o
                        @.transpOrder := void;
1 y/ J! E( j. U, N+ k- i                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,+ b5 H% ?+ X7 j# X$ C) u' w$ _- J4 t' Z
                                @,root.eventcontroller.simTime);; G5 C: `* C$ d8 T" s) @
                        @.HasOrder := false;
, g: r+ c) n& u4 z                        @.DrivingHome := true;
% Q2 P) J% v, o$ j+ S                        rgManager.tryToStartTransOrder;- q! h6 K9 ?0 d6 u! B8 Y
                        if @.Destination = void
/ |7 P! b' n& n/ S) ~! N0 w3 Y1 U. ~8 S                        then -- no transport order for vehicle @
8 `0 m7 A1 a7 i& T5 m                                @.Destination :=/ @- h: w" z  B' ~
                                rgManager.nearestFreeStation(@,track.~);# X( U' Z' F/ C" U
                                newDirection(@);   
5 e) H! v. F: \' x                                if @.Destination /= void then7 r& P5 ^9 E) W( A) O
                                        @.Destination.NumReservation :=
7 D  y, E+ N  f3 ^                                        @.Destination.NumReservation + 1;) n# E6 B2 z& Y$ O% c+ G
                                end;
' @  N2 h! `' F8 k                                @.CurrIcon := "drivingHome";7 R: s; c& A% _" D: H
                                @.DrivingHome := true;8 g3 W" P' ]0 O9 d- C
                        end;
% k) Q+ S- k# z+ _                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
  }4 g+ A. j9 V) u, M3 L: d. O                        part := @.transpOrder;: C; u, c+ \# ]2 o& s% f+ x
                        part.move(@);-- load part$ E9 g6 r( ]% ^+ G1 g6 D
                        @.CurrIcon := "load";2 \* @4 \( c- h9 x% V6 V, {+ v
                        GlobalDistObj := part.globDestination;
5 ]7 q; H7 Z5 M6 u, K2 g                        assignLObj := rgmanager.rgAssignL;
3 J9 J0 k& Q6 r1 B+ L: ], `                        row := assignLObj.getRowNo(GlobalDistObj);
4 b/ E, l# K* O7 K  o% W                        if Row = -1 then -- since 70
; e, k# ?% x0 _$ }                                if lan=1 then
4 K  {6 b* J7 m1 t) i! G" C8 F6 X                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
$ U# p# ~% l( p( c# Q4 ]: P                                                to_str("in der Andockstation: \"",?.~.name,"\""));1 T  b' t. t2 t& p$ C+ {6 c3 {
                                else2 n" b1 q7 y3 j* x) C
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),* }9 E1 r7 S1 T1 t
                                                to_str("in docking station: \"",?.~.name,"\""));                               
' s2 I9 F6 M0 O! A  @                                end;
# t6 Y+ R4 _% z; ?( @                        else
/ h. k: B5 g- @. c* }8 }0 |                                @.Destination := assignLObj[1,row];
* T8 v3 E) |. n7 k& K                        end;                       
% ?0 _5 u' o" C) o. h* X                        newDirection(@);
3 ^& G0 V6 }5 {+ e- e: `" O                        @.HasOrder := true;
) }- G' y9 l0 ^' H                end;
0 y! _# ]3 m! h        end;
: b% Y! s/ b0 X9 N  Xend;        -- of the method
$ S) `5 }1 s8 f
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
* X# z' n! |( C$ R9 ]; X6 w! A0 D$ q1 a% ^: a/ a
这是AGV_putin中arrive的method。4 H" f7 X" M/ P* i. \

2 _: p4 x/ k# b; ]当到达物料速度越高时,这个报警更多,7 b8 f  u, p; K( |4 `
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。# r' ]! p. |, L
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?1 C- T5 q6 H' V2 [

) w9 J  w7 B* Y  g) J! Y& s另外一个小建议,就是move,所有的move都可以这样, {8 ~; o* O3 a  f, i4 w' ^; V+ M
if not move() then debug end
! t7 Z' C: M. \9 _这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。/ W2 W( X  ~% T0 o7 I9 ?8 Y  b
plant simulation中的free libraries有AGV模板,
* Z) J+ o4 i9 l! S) Q8 B7 @7 v里面也有案例。! n6 Z6 ^) z# R' }2 g. m
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。9 d9 G; `9 c2 D' y4 p! q
' w) s$ R% }- o
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
: P! U' M4 }+ |" S& D' R; C/ S8 O3 v! Z0 D0 H. J8 ~( E
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 $ {  ]- e7 P7 [% E  `0 c
这是AGV_putin中arrive的method。" T- g4 b2 k8 ^0 E, l4 z
% _; G) [( G3 I9 ]9 _+ ]' i2 r
当到达物料速度越高时,这个报警更多,

  |- Z4 B7 `* F' r) J/ W另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-24 05:53 , Processed in 0.015645 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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