设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8701|回复: 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'
0 k/ c+ b& z7 J7 b*/. V, B8 [0 X3 ~% H1 x6 e' o
is7 P+ b* w/ |. Z  v0 p7 n8 K
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
' r" I/ f$ {! }% Z6 ^do/ U; |5 Y1 y" \
        Lan := rootfolder.Internal.Tools.AOLlanguage;% d) {; R6 ^1 a' a! J
        if current = @.Destination -- else return* F, a8 E: m# G. S( m2 y1 A; k
        then
5 R% a1 J& u2 e. d2 ^% c4 J. h                @.Destination := void;2 J& X; f5 n( `, ~8 \5 ^4 [' D
                if @.occupied then! W  L* P1 D& |3 S
                        part := @.cont;
! @; k" [9 o+ T                        @.transpOrder := void;
3 k0 G$ `" ?# S6 P. X                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
8 H3 o% N+ T# l2 Q# j! X* W% z                                @,root.eventcontroller.simTime);
' Q# |- \1 f- _6 g                        @.HasOrder := false;
3 O+ ]# z( `: U                        @.DrivingHome := true;) G( u: ^  T0 Z! e" J
                        rgManager.tryToStartTransOrder;: G" z5 x6 t& }7 g
                        if @.Destination = void
; E/ {! D# j* i1 H0 Z. e% I                        then -- no transport order for vehicle @! s$ ]' Q/ ]) |, [& t! ?& n; B* a
                                @.Destination :=
/ ~# M7 L0 ^7 g8 l2 V3 y                                rgManager.nearestFreeStation(@,track.~);1 G5 d) Q; S' k# K! ~: Q8 I
                                newDirection(@);   
3 C  e6 C1 L4 |' q3 \3 V                                if @.Destination /= void then
6 h" w7 J- U8 k' _                                        @.Destination.NumReservation :=. v1 U0 [0 n2 d
                                        @.Destination.NumReservation + 1;
5 Q" R4 o& Z/ B7 M                                end;/ e. L7 X7 m  m7 D. n9 t1 [6 P
                                @.CurrIcon := "drivingHome";
* C" o) m$ G/ G$ n4 U                                @.DrivingHome := true;6 j. N% I8 {+ \5 Z1 ~9 }
                        end;
1 K4 a1 k( v! b! J  C                else -- the vehicle @ is empty, both vehicle and part are in the same dock station" |/ M9 E0 B  q
                        part := @.transpOrder;
# W* [3 D  d$ \6 {3 o% v                        part.move(@);-- load part
8 ]# q6 U( K) X7 w) h                        @.CurrIcon := "load";
/ p8 T, o, E0 h  `% M. S! ~0 _                        GlobalDistObj := part.globDestination;1 Q& L; _' z! X7 u% v
                        assignLObj := rgmanager.rgAssignL;
7 X3 u+ Y- [( c3 J1 i4 M# n                        row := assignLObj.getRowNo(GlobalDistObj);% g# u5 c( Z' b, V( l+ R: s) y8 P
                        if Row = -1 then -- since 70; q5 u2 y+ R8 M( o
                                if lan=1 then
# j* Z( p: E& b) j# c% `                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),- j  |% R+ R- ]# w) _9 h, A) x
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
9 {% e) C& ?) a* f/ o/ a$ O                                else
  G" S% x/ P2 D: o* h* ~                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
% X5 F) ]$ ^7 W( W+ m                                                to_str("in docking station: \"",?.~.name,"\""));                                5 F- e$ D8 v2 C/ m( N) |1 D
                                end;
4 O+ F* B& P5 l- F9 x) Q* y                        else/ X+ M; R/ @& O" Y; J4 r
                                @.Destination := assignLObj[1,row];/ D( e2 w, s! Q
                        end;                       
2 H% C; u( H7 m- ^6 b( f0 n                        newDirection(@);! {/ t6 ]. {& w& U2 V6 Y) `& \+ {
                        @.HasOrder := true;
. b% \% w" g; `) |, D; F5 d                end;7 s7 }/ U' N3 D% M1 b: f& }
        end;
+ \( I5 x1 x  p( a) o' `end;        -- of the method
3 \2 M5 K. k, N7 L. w1 F
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
6 g5 |, A/ X9 D3 g# {: |. I! N3 ]+ @
这是AGV_putin中arrive的method。
+ S9 v; @) V  L! x  I+ M2 V& I0 x5 d3 X
当到达物料速度越高时,这个报警更多,
; @! J7 H" _6 L% r# O可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。' i+ w; b$ d5 V1 W) O0 Y! l* Q0 q
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
3 ]1 D* R+ y3 M: ?1 @, x0 n
  ?/ W0 X* D4 m. O9 @另外一个小建议,就是move,所有的move都可以这样1 E- B. w) j8 w8 Y9 z3 Y. q) E4 T
if not move() then debug end
5 M' @1 D9 H+ s, e* z这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
- O$ A! _. g" J0 Qplant simulation中的free libraries有AGV模板,
3 E( |6 k4 f- a. v里面也有案例。4 i/ }+ l5 E; `. ?" T2 W+ P
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。5 X) F3 R+ c$ O$ K1 e9 `

; S1 q2 Y. d) _; W我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
7 \5 I* z- l* @8 @( O
# `( _0 R6 q5 R那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
- w+ |/ j* R6 e8 p2 p6 o这是AGV_putin中arrive的method。; P& m; f0 l4 ]

# W8 z/ x1 _" s当到达物料速度越高时,这个报警更多,
) t) t& d8 ?" _9 L2 D0 v
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-21 06:30 , Processed in 0.015587 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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