设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8147|回复: 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'& Z/ u$ K( W6 e: s4 S
*/
: O$ }$ }& a; u% x7 I; Sis' U0 K9 F( Q) G2 u! v
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
$ r4 e" z- {+ e2 Y" jdo
  x% C) r" {. U! a, a        Lan := rootfolder.Internal.Tools.AOLlanguage;
& M; i/ K/ l& J# S! Q% E* l% S. ^        if current = @.Destination -- else return) N1 `8 n- ]5 X/ I& C) `
        then( o# y' p; m+ ^- l4 q' ~. X: Z
                @.Destination := void;# b8 S) M5 r4 R) Q0 q* Y- o! ~
                if @.occupied then
4 O% G& G. @: k3 p                        part := @.cont;5 X9 u* i# i# y. J
                        @.transpOrder := void;' D& ]  Z6 R5 l/ E& r
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
$ J9 d2 X8 H: X5 O* U- m                                @,root.eventcontroller.simTime);
8 j3 Q2 w( ?/ H  I- F3 h                        @.HasOrder := false;
, q* W& Y+ t- B+ f                        @.DrivingHome := true;
6 i, T' B3 H0 n# f5 _                        rgManager.tryToStartTransOrder;
6 Y! G4 G/ S5 z; T6 Z                        if @.Destination = void
; \/ U: v) e" q- Z: F8 f0 I                        then -- no transport order for vehicle @8 X7 l0 I: J! J# V* E9 \
                                @.Destination :=. F1 z8 p: x' p: S" Y
                                rgManager.nearestFreeStation(@,track.~);1 k+ j7 @2 H2 X3 ~
                                newDirection(@);   
; g7 ?* R; D0 S8 B( Z* K+ n  W                                if @.Destination /= void then
% ]/ G4 ~' ~) j. l4 U$ Q                                        @.Destination.NumReservation :=6 _9 W9 u# i  N- J  V& y
                                        @.Destination.NumReservation + 1;) m$ {( h, t/ [$ Y7 b- h
                                end;' I8 `* @6 k: e0 R6 [; s, V# n$ S
                                @.CurrIcon := "drivingHome";5 [! z8 q, P" Y
                                @.DrivingHome := true;
6 K% M; w0 f0 U) R4 N% P( C                        end;
& s. x& {* o" I( c! k; O                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
- Z+ x7 U$ [9 V                        part := @.transpOrder;8 o/ B7 P9 \, C9 ?
                        part.move(@);-- load part
8 G0 Q5 ]7 L/ e  F% p                        @.CurrIcon := "load";3 v7 r7 S1 o4 `2 Q
                        GlobalDistObj := part.globDestination;
' n/ ]; G2 k& ]( u* M' ^                        assignLObj := rgmanager.rgAssignL;
5 i$ S3 Q6 \& }1 `                        row := assignLObj.getRowNo(GlobalDistObj);
& g1 F$ w. J, C* q9 R* Y( I. ~                        if Row = -1 then -- since 70
3 S' `1 @  D# j( g7 h" i( u                                if lan=1 then- @7 V7 d" O3 ]; [9 P; V
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
! G3 Y) R/ V2 h) C- |: \; v1 r                                                to_str("in der Andockstation: \"",?.~.name,"\""));! q- D) J" ~* }
                                else
! \6 B8 |1 R% Y                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
% x% a  R& [( j) ]0 o2 b9 N3 ?                                                to_str("in docking station: \"",?.~.name,"\""));                               
  \( q+ F, e4 I% B7 y0 l% y* E                                end;
7 e; P% D# \( n% B  l8 _                        else
4 l- h3 [% m* Q1 Q! G" c* g                                @.Destination := assignLObj[1,row];7 I, }' }7 G" [) }( T8 Z3 N; C' I
                        end;                       
8 E9 B8 S( O( a* d1 b; A/ @' m                        newDirection(@);
# M3 v  r8 L: o# U! Q                        @.HasOrder := true;7 C' w" t# q  P
                end;6 {7 u1 g( J6 f
        end;: {! Z. H) ^0 V1 M2 |" u: A# e9 K
end;        -- of the method$ w; ^4 U: S$ J: j3 ]7 [
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 ' p, n: \$ i& H( o7 w) I) r

) F6 H: J( M3 f, D3 X4 d这是AGV_putin中arrive的method。
1 I/ ?3 A& C0 [$ e/ U
; y- b0 f- ~0 a4 y当到达物料速度越高时,这个报警更多,! E; Z3 o# y+ }( V' ~
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
: c* V; q$ ^& s8 j( |程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?2 g' N) j4 k+ u  U
( |: a8 n% [6 A* K: ~; i! D
另外一个小建议,就是move,所有的move都可以这样
* |4 P/ c7 _9 r9 Z* Y; K7 }4 q' B$ o- N8 Cif not move() then debug end: P/ R2 \$ c6 B# E5 ]8 Y
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。+ Y9 {  g7 c  l: Y- ]5 U/ C
plant simulation中的free libraries有AGV模板,
' i" A- {3 ~' \9 e  l* N) k里面也有案例。- B" u; j4 p+ }% @# r
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。/ `  H" C+ X) x  [5 i' r1 q; F
- _8 z7 }2 T0 r. G& |0 N
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 " h8 |2 M9 z; N% |

1 T" }5 c4 z) ]/ d' t0 |8 }$ ^那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
- K& V% J, W! I) u这是AGV_putin中arrive的method。/ f" I: ?' @) e+ ]+ q% O9 X- j

+ O% @+ @- i" p1 O0 X( o5 f当到达物料速度越高时,这个报警更多,
3 i% r& [/ T' }8 p4 F/ v8 ~. N; M
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-17 08:35 , Processed in 0.019258 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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