设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8583|回复: 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'  C( `7 ~9 r  c! Y) h  a0 ?
*/  v! [: ?# T8 J1 g% C* M
is  C3 U& f5 ~* [% m' Q; X5 g
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;# l& C* x/ K  I+ `, W2 E6 Q# ]8 K+ O
do4 K, r5 z1 e3 d+ }0 I
        Lan := rootfolder.Internal.Tools.AOLlanguage;& b  {6 O' v! Y' ~2 F. ?+ P: x
        if current = @.Destination -- else return
2 G; n- @% l1 l3 d# O        then
/ u1 [3 b) j, Y" s                @.Destination := void;0 V& J& Q. N0 F; X9 ]/ ?( Z3 C/ }
                if @.occupied then- O( v- ^$ \. e; G" _
                        part := @.cont;
: ?8 a+ b8 ^. A. d, a                        @.transpOrder := void;' }: [$ Q, P0 e% d: I
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,: [0 \# o3 g6 T2 n
                                @,root.eventcontroller.simTime);. ?( R% r3 L* C+ `" g
                        @.HasOrder := false;; q+ E3 m( V6 n! K) ~, I2 W( C) s& z
                        @.DrivingHome := true;8 \$ S4 e0 x8 ^4 x0 ^1 b# E2 Q2 m
                        rgManager.tryToStartTransOrder;) y- E- X' U. s( ^% u
                        if @.Destination = void
6 n6 n1 |6 G* K- c5 P                        then -- no transport order for vehicle @: a; u$ c( H2 R' K* U1 R
                                @.Destination :=$ O# V& k; T$ T( }$ N
                                rgManager.nearestFreeStation(@,track.~);8 C7 @* ^7 }7 W$ B) A! x' W
                                newDirection(@);   
0 t8 X9 q7 |9 g& W5 {7 ?. ]" {$ b                                if @.Destination /= void then, [& H% r( a( z
                                        @.Destination.NumReservation :=. w" g+ Y+ H' a  ], [
                                        @.Destination.NumReservation + 1;% C; s2 g" `. i( c  ]6 X. X
                                end;# ^' G$ p% i' ^6 q
                                @.CurrIcon := "drivingHome";
' Z% ~# {+ Y; s$ d- g                                @.DrivingHome := true;( x* ?3 {+ C8 w% i1 ~! C
                        end;! y. s+ d/ `& [* F/ t
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
8 x5 R! p2 C' I9 B: B8 [                        part := @.transpOrder;
; h5 ~( f# N0 K" o" _% t                        part.move(@);-- load part
" l6 y6 b( A7 P% s                        @.CurrIcon := "load";  C8 {0 W; w1 x" L
                        GlobalDistObj := part.globDestination;
8 {- C5 a! g) m! K4 ^) Y8 J/ I                        assignLObj := rgmanager.rgAssignL;3 {; i: n" W! d% G
                        row := assignLObj.getRowNo(GlobalDistObj);1 v& _( E' ]) [! ]
                        if Row = -1 then -- since 70! c# \7 o7 }( f) C8 H% B/ `% }
                                if lan=1 then
: y) Y7 T& ?/ U3 v( V9 M                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
; i5 V+ _* j8 M1 e8 T                                                to_str("in der Andockstation: \"",?.~.name,"\""));) Q# e& K1 y) R: s- V. g  X" {
                                else( \4 V$ E! P# |# w6 ~
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
9 U; q9 A3 w5 g- z% |( ]                                                to_str("in docking station: \"",?.~.name,"\""));                                * `, R" D9 S/ Q: d- `
                                end;
6 s0 g$ V' O  @0 Y  T7 J+ B                        else
" I4 {. f* c4 }- _                                @.Destination := assignLObj[1,row];' `$ C2 |4 _) V0 P6 J" o
                        end;                        # w3 B, y9 A8 W
                        newDirection(@);- l0 f, J" Q, Y
                        @.HasOrder := true;0 ~( n- L4 I9 E( }: [
                end;
8 n. r. j: i+ p+ f        end;* p7 J* }9 d0 }- z1 U. ^
end;        -- of the method
* P: r+ V; N5 |% d( T5 `: R2 f
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
! K4 Q- q) n/ o+ h6 Z+ z6 w7 [
  D5 f1 a: _* l% x% g这是AGV_putin中arrive的method。  t: F, H8 e- z
4 {$ {% A+ d% i$ {5 ~  Y8 A: Y
当到达物料速度越高时,这个报警更多,
7 H' g0 g, ~, q0 M) j# m9 X& X8 Z' M可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
  [$ W- X( I1 }+ D程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
$ U- L1 z* W; h3 W" P& Q; d8 C
" f7 y3 k+ F2 o/ K/ r; x' N另外一个小建议,就是move,所有的move都可以这样
% j# |" D, R) q+ {6 Kif not move() then debug end% N0 S) b$ ^2 B$ `6 `
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。7 R4 Y* e2 v! c* h$ m! c$ m
plant simulation中的free libraries有AGV模板," D8 J+ L+ n  z+ ?: ?5 n3 Q
里面也有案例。
! t8 d/ Z( o7 r& L' F我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
( f' G- |  V* F# R# J  ]! X0 q& K& Q  M, z
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 9 Z! R+ t- @/ U& k, Y4 X! G5 v
5 z) @  T3 ~8 p6 g' ?% D
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 5 F( R* [: U% |% y0 v! t
这是AGV_putin中arrive的method。8 u, o7 G' |; l$ I0 g$ B5 Q

* Q8 p! P9 z; F当到达物料速度越高时,这个报警更多,
7 z8 [: k+ m& e; u4 \
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-13 14:18 , Processed in 0.015449 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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