设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9814|回复: 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'6 b9 |, U0 X( }! l% O" F& [* L
*/; i) H* z/ c) L9 V% {: X; q
is3 c+ X. p. f1 Q( V. ?0 X8 s; v) s
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
! g+ h+ p" {7 y1 e4 ldo0 U" _; z3 S! u7 N- ]
        Lan := rootfolder.Internal.Tools.AOLlanguage;" ]! d/ ^! ^/ r; L  v6 A  k" {; m" _
        if current = @.Destination -- else return
2 H# \0 }3 @* t' a' ?        then
  E! W+ B( W. o% O                @.Destination := void;  Z/ n- S& M0 [% o  z/ G8 U5 y
                if @.occupied then. C( C0 _: J; r) k% R; w* ]4 d
                        part := @.cont;
# i; x* A, d0 }+ B2 k9 O. ]# d                        @.transpOrder := void;
+ o; |: F4 L: q* v6 j9 A                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,* f# `9 u6 R0 l$ x
                                @,root.eventcontroller.simTime);
- O  e7 J% K, b" o$ x8 I+ W7 a                        @.HasOrder := false;& g0 o1 y7 l% w0 U( ~
                        @.DrivingHome := true;
& c. P1 n, k' `: E$ {                        rgManager.tryToStartTransOrder;
1 k  K; }* H. l9 Z1 I. Q                        if @.Destination = void3 O, W5 ]5 e7 k- V8 E# g
                        then -- no transport order for vehicle @
0 B6 X  R- z* N; X; I) W4 N                                @.Destination :=2 u# M0 ^6 y) R
                                rgManager.nearestFreeStation(@,track.~);
8 ~9 L! U+ l# g  c/ t  U- L, J                                newDirection(@);   
3 k+ d& t5 i2 L3 R, Q2 C                                if @.Destination /= void then
. M- D3 w" c7 H9 T' l7 u2 r9 B1 @                                        @.Destination.NumReservation :=
) y0 a( `0 M- B4 ?                                        @.Destination.NumReservation + 1;
6 z6 n" f) S7 v' d9 v) ?9 N2 W& S5 y                                end;2 I) f9 [' ~! K- {
                                @.CurrIcon := "drivingHome";! L$ q0 L/ {, h9 T" M3 x
                                @.DrivingHome := true;2 a$ V. Y, m6 f* u
                        end;' z( @, m) ^8 ~* ~
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
9 l+ [  J- o# n2 s2 E5 _                        part := @.transpOrder;
, ~. m( _# j4 n$ p4 f4 e                        part.move(@);-- load part- v  g$ |7 ^2 h* z# `  f: D( D9 y
                        @.CurrIcon := "load";
9 e/ b' b" C3 S( u2 L' C. T$ U                        GlobalDistObj := part.globDestination;
9 o) V/ a7 w' l. V3 r                        assignLObj := rgmanager.rgAssignL;
' ~8 |+ ~# F% B8 F2 p2 \                        row := assignLObj.getRowNo(GlobalDistObj);0 f# [0 s6 q. @- L. F0 c8 F  g6 O
                        if Row = -1 then -- since 70
. T* Z2 D- M8 z( B                                if lan=1 then
, e# a7 I7 y; m& i! {! O9 P                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
1 G% Q) R: U7 a2 }" C, d$ A                                                to_str("in der Andockstation: \"",?.~.name,"\""));
+ Z4 B' l4 m* o; Q' Z- m                                else2 h$ b0 Q  U7 s
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),# H: z; o$ u5 n: @8 t, d
                                                to_str("in docking station: \"",?.~.name,"\""));                               
! j( w9 c; J" F3 U4 t2 M                                end;6 D8 B9 c) T0 f% q/ J; s
                        else
8 d* V, E7 H) q7 j: a, [: L                                @.Destination := assignLObj[1,row];+ g2 z; f1 ^4 }  o
                        end;                        : d- k/ D/ k5 k" j6 X
                        newDirection(@);
" f4 P( w" k1 f& m                        @.HasOrder := true;
8 e0 I2 z8 t7 ~4 [8 R6 i5 C                end;
: v1 n- x+ C+ `5 u3 g        end;
$ ^1 v5 B" a2 K- V: hend;        -- of the method
, I+ ~7 E3 w1 ^$ m
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 : ~1 P! W  P: [% X1 t- y: h2 J

( `& l: R; ~! D4 D这是AGV_putin中arrive的method。! P, `8 B! X) [0 e2 n2 ^/ n

& g- J! m8 {' ]当到达物料速度越高时,这个报警更多,: ^+ R- y1 a  G# x
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。. W' n, N+ |" k' U
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
1 \7 \, t' U% A" o' v. [
/ I- k9 q$ m, p- W5 ^/ A2 d" w另外一个小建议,就是move,所有的move都可以这样
) l( D( E( i# n; `1 P) jif not move() then debug end
. M/ c1 ]7 E7 O, T4 M! M5 T$ _$ c这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。) _' a7 G9 N' K
plant simulation中的free libraries有AGV模板,
( P# u0 H9 W$ |  Y里面也有案例。! P7 G2 d8 L/ I2 e6 \
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。0 S! k, \+ x* j' N( h# _$ N, U

$ Z, e* B. l7 P5 \' f. D我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
! ]; b0 l  V8 {7 Y/ R) ]9 ]- w1 _1 r/ j# ]6 o$ \' n5 E
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 5 a7 O; I# L+ O. e* C- I
这是AGV_putin中arrive的method。
8 g4 |7 w" W/ G2 Y
/ f; R1 Y4 ~. P3 N; ]) |8 I当到达物料速度越高时,这个报警更多,
4 ^0 T1 e3 m& [
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-27 03:06 , Processed in 0.016282 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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