设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8375|回复: 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'
. R5 n7 P: g% X" m2 Z, P*/( c+ a% U( h, y4 q; |) q
is' X5 B+ f, ]  q
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
% ^9 ]/ F  ^0 e8 Z8 T6 |, Z1 @0 Vdo
5 Z+ a" v/ J0 B/ {7 [) S+ [  U        Lan := rootfolder.Internal.Tools.AOLlanguage;; o! e5 ~. P5 T  ]( [& F
        if current = @.Destination -- else return
" X8 T, x7 r  I7 P3 Z1 l6 s        then: e6 V: g& |0 q* B
                @.Destination := void;$ p6 V4 Y8 s2 O' l9 ^. ]
                if @.occupied then
5 D- W7 B& C$ _# C. A                        part := @.cont;) P6 b* }1 i  }# l! @3 g7 x& [* c
                        @.transpOrder := void;
/ P# N" |- Z& g' F, d4 d                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
5 T0 h+ P  L! W  r                                @,root.eventcontroller.simTime);
' d: z* P7 C! a$ V7 S5 u                        @.HasOrder := false;
* P) \% r4 d( Y! }) U2 k2 s. e                        @.DrivingHome := true;/ b1 f, O! B# o% H
                        rgManager.tryToStartTransOrder;
* Q; w: K& F' T  |. o! r                        if @.Destination = void
* B& J$ L  J1 X  l# N                        then -- no transport order for vehicle @
+ I" @  A+ r, ~                                @.Destination :=
, u8 h( X6 F# F0 I                                rgManager.nearestFreeStation(@,track.~);! ?- r; V$ J3 `
                                newDirection(@);   8 c! i4 x" q" B* r# l6 O7 l
                                if @.Destination /= void then
8 e3 E3 }7 V8 P( V* \" W1 p                                        @.Destination.NumReservation :=
5 C" G8 C7 H# ~+ m9 }. B                                        @.Destination.NumReservation + 1;- a6 ]6 j; z' ~& ~: Q$ o+ ?7 G" M
                                end;
+ \! e4 g8 m! T/ i( a5 h/ y                                @.CurrIcon := "drivingHome";2 S7 y* b- `4 e! M
                                @.DrivingHome := true;" I( u( a- T5 V5 o$ K
                        end;
$ X+ y, b6 {0 t) ?5 Q                else -- the vehicle @ is empty, both vehicle and part are in the same dock station3 G( `6 N/ A9 c. _
                        part := @.transpOrder;
! L5 h+ g$ I; M" J, |; G                        part.move(@);-- load part2 \3 ^6 a6 q0 R! a
                        @.CurrIcon := "load";1 M! N. x* r9 u0 e
                        GlobalDistObj := part.globDestination;3 w' v. _- Y4 r/ b; u- k' Y2 `, `
                        assignLObj := rgmanager.rgAssignL;2 ^( s6 x. T7 j: p
                        row := assignLObj.getRowNo(GlobalDistObj);
, G  b; [8 `3 N9 r+ o8 L$ s' m                        if Row = -1 then -- since 70
5 k9 d' {! r% `0 }' c& P; D                                if lan=1 then- c" c% @" F4 S+ E: e2 u/ f
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
; _  X  |8 I' {) q( C                                                to_str("in der Andockstation: \"",?.~.name,"\""));
) [) N8 u3 W. _- \7 U, H! h                                else
' F" C' L5 U  F  U. g                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),* t/ O6 r2 l9 b, F6 w1 n4 V
                                                to_str("in docking station: \"",?.~.name,"\""));                               
# J: q+ L# t( M9 m" n                                end;% q% w8 _$ \! S0 W$ n9 H; |6 }$ J
                        else
6 a! T2 E  o, X6 n2 u                                @.Destination := assignLObj[1,row];
' V3 N1 Z- J: w1 }# Y; A                        end;                        # @( E/ g; n$ b3 k- [* M
                        newDirection(@);: S, g5 M6 X. s
                        @.HasOrder := true;6 ]" R4 N; m  {  n
                end;
6 L3 w: i% |8 u        end;% y9 b/ R/ j7 j- B* P* R$ o6 [
end;        -- of the method
3 c* ^& g. i* n
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 ; b1 h$ u, g& z9 U* T" d
2 q( U- e1 i5 g$ D( o  G
这是AGV_putin中arrive的method。
) p- k, I: l, T7 z/ J9 |6 [  e' w! u( |
& H( `, M  Q0 a* U当到达物料速度越高时,这个报警更多,9 p; k' ]7 M% c3 d" {* l
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
4 n$ q5 U# j: I( N! m程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?, G! t1 r7 T# D( W

1 I$ q2 j1 a! Z另外一个小建议,就是move,所有的move都可以这样# N0 ~, I/ f  G2 Z' i
if not move() then debug end; {: ?, Z( ^% a% ^
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
) \) t8 \5 q% e. ?plant simulation中的free libraries有AGV模板,
9 c4 X( E3 t, V# D4 s% o里面也有案例。. \  _& F* X5 U( k0 m
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。, X2 C; k2 V. i, X2 K, P3 H
1 D3 R8 R! ?" \8 _. u
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
) F# n3 ?0 H: k) @5 h
! v# y/ F) ?3 ]" p& w5 Q那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
$ T' O* q4 f" x, F/ _  f8 `这是AGV_putin中arrive的method。. x! L% R  ?2 n

6 Q8 L- h0 A- v当到达物料速度越高时,这个报警更多,
# K# a5 {& W/ V$ H, X; L
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-31 10:06 , Processed in 0.021580 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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