设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6833|回复: 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'
! O2 c2 G' K3 M% q' ^% O% K* d  H*/
3 {, v7 H) y  z' m3 Yis
( P$ r0 z. Y$ o" f% q( T        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
5 i6 C* l+ T. r. V7 V! W: {" Ido  a# X+ H6 R# f7 t8 k
        Lan := rootfolder.Internal.Tools.AOLlanguage;
4 B+ d2 M, N9 x7 I" J) d+ w7 L) }9 \        if current = @.Destination -- else return
& h! w/ X5 V& x5 I        then5 I7 V8 \' d! F6 y0 m
                @.Destination := void;
7 p5 G) a. q- K                if @.occupied then; r" t$ R3 B9 K( [1 l% s
                        part := @.cont;# {1 p7 C- ]4 B& ^/ U0 ~
                        @.transpOrder := void;
  ~$ g% R% q- L& k4 v/ P2 N                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,, d3 u1 e: r: z" n' y1 s( _; }
                                @,root.eventcontroller.simTime);
9 T; R" \7 f, e* m9 I! B) C+ d7 E                        @.HasOrder := false;
4 ?# b0 ~( G" N! R                        @.DrivingHome := true;) ^, m) @9 u( u0 a' p2 ]8 w( o
                        rgManager.tryToStartTransOrder;
; `# F- f+ I, G) O3 [- [( q                        if @.Destination = void6 m+ u: m9 E3 T/ A; U6 I; \# O: Y
                        then -- no transport order for vehicle @
  d! _' ?$ {, J0 u                                @.Destination :=
4 B/ b7 a, g  E4 j: f                                rgManager.nearestFreeStation(@,track.~);
# P: C" ]* d' G                                newDirection(@);   % v) M2 q1 |  |
                                if @.Destination /= void then
( ^1 j, j3 K4 Z8 a* }                                        @.Destination.NumReservation :=- i# z6 d5 f; G, c
                                        @.Destination.NumReservation + 1;- w# s8 q+ j3 x$ V
                                end;; M, a6 J- ]! ]6 T. s  N
                                @.CurrIcon := "drivingHome";
! l% K5 m8 [' z( j( k9 c- ?6 X                                @.DrivingHome := true;. f% D4 m7 Z8 ^
                        end;
4 _; \# D' \# I  D                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
  h5 n" I$ O! j& A% k9 [$ V1 B                        part := @.transpOrder;
3 m7 X" N# T1 D! W6 ^4 z" p                        part.move(@);-- load part
$ ~* k/ m8 S( w4 @2 p                        @.CurrIcon := "load";7 X4 P+ |5 U6 M2 S! Q' C& [+ ]
                        GlobalDistObj := part.globDestination;: K8 Q: L: S% I( ~5 ^! e7 V$ R) D
                        assignLObj := rgmanager.rgAssignL;
* v  E# S( ^5 }                        row := assignLObj.getRowNo(GlobalDistObj);
/ O3 o( O! |! t5 Q                        if Row = -1 then -- since 70
* ^! `' V. n9 |5 _                                if lan=1 then" N" d) @. ~" t" ^$ m2 V4 b
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
( x* S( {4 x; e; f                                                to_str("in der Andockstation: \"",?.~.name,"\""));
  N$ C) h- v5 ^% U. N1 H                                else
3 ~9 d+ h1 _2 i: [6 b, Z                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),3 p& o! p% S- Z+ s' Q- a4 F
                                                to_str("in docking station: \"",?.~.name,"\""));                               
0 \" @9 Y( d; ~$ Q( N                                end;
8 H) ^- r% h+ m' E6 o3 |' x                        else
7 Q7 e- g* }/ n. v                                @.Destination := assignLObj[1,row];0 z7 W" s" L# H9 P. t) m) L) C# s0 m* D
                        end;                        ! j/ |8 u9 }6 m8 A/ M
                        newDirection(@);
: w3 x  z3 ^3 d( r0 }9 j                        @.HasOrder := true;
* f, i& Z7 C+ T; e7 t                end;
4 i0 _6 m) d5 i        end;
' Z7 x4 t1 L; R; p) wend;        -- of the method
! A- t8 ?' t4 x# [
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
9 y0 j  o/ W# o* |" V8 Y/ q' f/ h0 g8 P6 y4 @
这是AGV_putin中arrive的method。
! r' {5 K; Y% ^4 a' v2 b. \; J, E# G; L4 l: ^2 P% ~
当到达物料速度越高时,这个报警更多," Y" }- O; B' ?1 P3 `7 X- P: _
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
2 C  D  R6 }: |- B程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?9 q  [1 b1 \+ ^2 H
! D( I' G) o6 x9 q) H
另外一个小建议,就是move,所有的move都可以这样
) U# f/ f* F8 R# r0 Lif not move() then debug end" R9 a# K' U; B! x: z
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。* ?8 q9 A4 i$ m) o% S& Y6 x8 I
plant simulation中的free libraries有AGV模板,
0 O0 m1 u( m2 f+ L4 f里面也有案例。
4 W- N3 f  \5 H' p& T; i我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。! U- }( f, @3 ]6 \% G3 [: V
8 t; ^- e8 B5 A& _& Z) f
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 * R& P3 h9 c; B
3 Q, X7 Q8 v* _  s  ~
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 ; L; O' g' e$ p* ^0 `  H
这是AGV_putin中arrive的method。
6 z0 N9 m) m9 {2 Q4 J$ O+ p. N6 T* t1 F3 t$ g9 S, ^9 n
当到达物料速度越高时,这个报警更多,

# }( z# [" s* Y6 x- V3 G1 |* W另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-1 11:35 , Processed in 0.019111 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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