设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7026|回复: 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'
) A' z' a4 r4 {0 ]5 S/ l; e/ {*/& O- Y1 y4 u' F) {  Q4 g
is- q" P" w- `5 b: j  W+ @
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;% E7 n) `9 B* \8 {  w1 U; B
do: v2 k1 m- d0 C, y
        Lan := rootfolder.Internal.Tools.AOLlanguage;: z) X2 z' m! d( a  R
        if current = @.Destination -- else return
9 U/ B+ A0 ?" {+ b        then" z' Q" I% y3 p' V  Z1 h) t
                @.Destination := void;' L8 c$ a( i# p: |0 g/ ~4 f
                if @.occupied then1 x; Z1 Y6 w! R# u- k8 f& I
                        part := @.cont;9 @, w& l5 Y5 Y8 X! E3 }! e
                        @.transpOrder := void;
& @2 S! |7 }) Q( E2 X" c2 Y) T                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,, ~& d) N$ F& {+ ~: x: m
                                @,root.eventcontroller.simTime);
/ s4 C# Q8 P* a! R5 U2 @                        @.HasOrder := false;
! S& Y$ Y& M, _3 G: f% @- c                        @.DrivingHome := true;. E- d) G4 W1 E& X' Y* S
                        rgManager.tryToStartTransOrder;
5 e+ b5 V1 F6 x4 Z                        if @.Destination = void5 L7 D  P0 ?& B8 j' K. r
                        then -- no transport order for vehicle @5 R4 Y/ T6 h/ O8 [4 n
                                @.Destination :=
6 K: |* G/ B) K( z% m                                rgManager.nearestFreeStation(@,track.~);
2 @  q1 @' F; m5 Q1 y                                newDirection(@);   
! ]& c$ M; a" i/ @  @* k                                if @.Destination /= void then2 Q" f1 @4 V8 L* R" ?4 `
                                        @.Destination.NumReservation :=; k- g& @1 K: B5 `# R
                                        @.Destination.NumReservation + 1;
# N0 S# J6 W( h! Y                                end;; ^* v  ~9 L8 |! n% t. ^
                                @.CurrIcon := "drivingHome";3 K# M$ `; q) n5 C9 ?$ j. v' F
                                @.DrivingHome := true;
* a' E  S" n/ _2 D                        end;0 f& r* J9 K) y- A( V; U5 ~
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
# {  p* ?9 o" d" ^/ s9 o( T; g                        part := @.transpOrder;
0 s# f5 q& ]2 @6 ?5 x, W                        part.move(@);-- load part
4 R! R8 A; s3 d" j2 r3 G5 a- `5 `                        @.CurrIcon := "load";. p# N2 d4 h7 o4 |2 s
                        GlobalDistObj := part.globDestination;
& h( a% Y- M5 u/ Q  F8 u+ q                        assignLObj := rgmanager.rgAssignL;; e5 L3 z) O3 d8 D+ O
                        row := assignLObj.getRowNo(GlobalDistObj);2 M( [& w9 C8 G- U$ s1 M# B8 {+ ]
                        if Row = -1 then -- since 70
4 R6 |& L1 Q& s# _/ o& X" ?                                if lan=1 then
" _4 M3 f0 }, o# M7 f2 g                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),0 q. |9 Y) }9 u' G
                                                to_str("in der Andockstation: \"",?.~.name,"\""));( \+ v4 r6 h7 c" |; d
                                else0 u2 H/ Y  I& r$ ]
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),, b6 Y3 U$ H( B
                                                to_str("in docking station: \"",?.~.name,"\""));                                ) i8 Q2 q6 i9 D8 x& I" J) S; ~: `* @
                                end;3 E1 q$ B& \  R( y
                        else' a* U+ R: P/ T3 b! F  q. p; z
                                @.Destination := assignLObj[1,row];
, c2 v' k: k* r" o  w                        end;                       
( p) V5 h9 }  v! [' g1 l7 d6 o                        newDirection(@);
$ L) l" M" P8 b/ Q8 b                        @.HasOrder := true;+ _( s9 J0 s  ?7 L* E; K, u
                end;0 F3 e/ l9 r; J# I4 m& s1 m
        end;% v% T& G& A  g9 W7 y. z
end;        -- of the method  z- n/ C) e7 X
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 3 [' n7 z7 v# z- V) c' X

. g0 G5 ^2 J% V8 V1 V' V这是AGV_putin中arrive的method。( D" n4 v5 X/ I4 a! F) b
& b! N6 U9 k! O
当到达物料速度越高时,这个报警更多,
# V( @. x. e3 M可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。5 u5 ]4 Y7 |+ X7 [
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
! W+ Z9 n" H+ B" ?! K; M/ M
) w4 Z* b5 H/ a$ c( J- I2 Z另外一个小建议,就是move,所有的move都可以这样+ L5 X+ ]5 e0 ~6 \. M
if not move() then debug end1 B9 b# n* p3 f
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
+ W0 j& b! n( Z( q, `plant simulation中的free libraries有AGV模板,
% L/ g$ A  z' ^0 ]) x5 h8 r里面也有案例。; i) G" ?, x3 |( Y1 n. U
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。9 k9 h# Z$ B! t4 M

; Y$ }! }  a8 j我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
  j6 J; J$ [* @$ f/ S$ H) s5 a  j+ b8 P9 H+ o& N
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 . K) Y, i0 k: _8 V5 v, [" m
这是AGV_putin中arrive的method。1 L8 V3 Z$ A5 G) Y8 r% q
. q6 Q) Y1 M3 V2 a/ [9 e$ S' d  d
当到达物料速度越高时,这个报警更多,
" G, B; Y/ w0 F% K+ Q
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-12 01:20 , Processed in 0.018150 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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