设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7964|回复: 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'
- M, P6 ^. B2 m- h# i7 ?*/
, @, V( v6 X8 \. v, |. r& Ois, h% L  d$ B7 ^  u* U
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
% v1 V. }( @1 ^0 H% mdo7 @0 m8 }. D6 a* d- |* ]
        Lan := rootfolder.Internal.Tools.AOLlanguage;
! [% k  Y( T* b: X& `! _, Y2 X        if current = @.Destination -- else return
) H. |5 ^2 c! E1 f        then9 z+ s+ _+ z% }' p% V
                @.Destination := void;
# U9 R) E* X9 J7 M9 V/ V4 n                if @.occupied then
7 V' E1 ^9 N1 {! A" i0 w+ ~# {                        part := @.cont;
  ~6 S7 z% {' }6 s' q3 J                        @.transpOrder := void;
; ?; G0 R1 e4 |% D8 \1 [( T                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
/ m% w3 J6 |3 U4 V                                @,root.eventcontroller.simTime);
9 [& ~5 x2 _; b) n9 g                        @.HasOrder := false;
) V" T' }/ k: z# ]+ v( S7 m                        @.DrivingHome := true;% ]2 ^3 t% Q( N2 h0 i' W5 F
                        rgManager.tryToStartTransOrder;
7 J3 h! G* D% B1 Z, F2 I3 ^+ |                        if @.Destination = void
) d! D, h4 n. }                        then -- no transport order for vehicle @7 V# @) r) B8 e8 D3 ^! Z, \
                                @.Destination :=9 N% a8 J- \; a* ]2 A1 D" J/ W0 R$ A
                                rgManager.nearestFreeStation(@,track.~);/ {$ Q/ }# \% W
                                newDirection(@);   " _/ g; r; o! `! T$ q, v; Z' V. n
                                if @.Destination /= void then
8 ]$ p3 R; z1 r' M  u0 }                                        @.Destination.NumReservation :=
7 L3 g. M. G5 P' e1 ~( ]                                        @.Destination.NumReservation + 1;' \5 o* d" \7 q# t+ B# T
                                end;8 Z" [3 Z& Q" M& ~0 B
                                @.CurrIcon := "drivingHome";* R0 H& Y$ @! K1 {! T8 b
                                @.DrivingHome := true;9 x5 Y5 P6 [6 U8 K  H
                        end;; m/ }6 d6 Z: O/ K+ c
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station: c  Q* V3 d0 U- P0 _7 R0 f
                        part := @.transpOrder;$ ]0 C& b  l1 N  V% S  H
                        part.move(@);-- load part
- ^( i$ _+ q4 n                        @.CurrIcon := "load";* G: `9 ]" y) s9 N- |
                        GlobalDistObj := part.globDestination;
4 ]. o; o. l. i4 I7 T                        assignLObj := rgmanager.rgAssignL;
0 m/ z/ L* {4 A& s8 b' e                        row := assignLObj.getRowNo(GlobalDistObj);% y4 c! o- U! F# s
                        if Row = -1 then -- since 70
; K0 N/ S; @  h( X8 g$ w$ g                                if lan=1 then
2 g/ e/ i' h) y1 A  R$ {                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
; e/ t* `) N# m# p                                                to_str("in der Andockstation: \"",?.~.name,"\""));
  {6 e% u3 Q5 F( [2 G* F5 [, j                                else
# s" _7 w' }! [9 E  n* E                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),, g, n# i% {2 q# s% _
                                                to_str("in docking station: \"",?.~.name,"\""));                               
$ C" c4 {: k( J& p4 j                                end;
9 m: q8 X8 G1 u' ~                        else* f" ]: @8 @; I
                                @.Destination := assignLObj[1,row];
" {7 S* T  n8 {6 y: l1 L; o$ ~                        end;                       
& P3 V# i8 L1 W: M$ S$ s# O                        newDirection(@);
, |! m) p7 k, [$ y                        @.HasOrder := true;
4 P% }% ^2 t: E. G                end;% i7 ?0 |" E; |
        end;
0 d( B! g; N  {# i/ p9 Fend;        -- of the method' p- v6 `) b4 k. u) b% m
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 6 C7 J- v! H* f% {* V4 s
$ n4 _( X. J. W. p- n
这是AGV_putin中arrive的method。& P+ F$ W& s+ l) x5 A0 Q
' C5 I! c: d+ P9 _
当到达物料速度越高时,这个报警更多,
2 g# S+ g" W% I5 Z# O  c$ k可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
! b2 N. k" ]# I  c3 V! j程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?8 V5 k% a( z+ N1 ]

+ n; N- f' O/ n" |: W" d另外一个小建议,就是move,所有的move都可以这样; J8 z2 c7 X& j! x4 q% g# c
if not move() then debug end
- ^- e/ u9 O( \. M, _3 C# F这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
5 F+ W$ ]: Q; r1 m0 I" Kplant simulation中的free libraries有AGV模板,
7 }+ ~; f1 ~5 {/ |: x9 g里面也有案例。
  ?/ A8 f; P6 }9 ~5 m' Y4 n6 h我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
3 C" B1 Y5 A+ i1 n8 d& M, y2 \. r0 l4 e' c
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 & y& l' J3 [( e4 w) |

& X: B% q5 h# c* [那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 3 n% J, d# x, {2 C0 c" {3 `
这是AGV_putin中arrive的method。
  p0 W3 C. A" o' N; y% T, o+ Y5 X3 O+ Z3 j* B7 ?5 T
当到达物料速度越高时,这个报警更多,
; |% U" a$ A9 F
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-8 00:39 , Processed in 0.019640 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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