设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7733|回复: 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'; q0 p" C/ g* k" z8 B+ ~+ O
*/$ n5 k, y, c& _& c( a5 i* f
is
# I7 ^0 x, p5 O: V. G        part, GlobalDistObj, assignLObj:object;row,Lan:integer;" Z) g6 y7 v2 M. p- ?
do) l2 x( [0 p* H5 s2 u. o5 M
        Lan := rootfolder.Internal.Tools.AOLlanguage;. m" y, e1 |7 z$ U
        if current = @.Destination -- else return
# a8 h* @! o" Z/ H, e* K        then
& U0 x! J8 S9 Q. {% s3 x                @.Destination := void;+ \+ A" l; j* I7 F- `+ V
                if @.occupied then4 w% {$ c! v8 `9 ]
                        part := @.cont;% T, g) f$ G6 f2 r1 L8 t% ~
                        @.transpOrder := void;
- S: i3 p! b" D' L                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,$ k+ O! j. |6 u7 A2 ]
                                @,root.eventcontroller.simTime);7 C2 C5 N+ G. H5 J
                        @.HasOrder := false;
' E5 I# c/ R6 p2 c& F                        @.DrivingHome := true;6 p  G. F5 e! r5 {0 `8 z
                        rgManager.tryToStartTransOrder;
' o5 U( W- X" E( j' C8 Q1 n                        if @.Destination = void* \# U6 a/ }& G0 T$ h: M0 {
                        then -- no transport order for vehicle @0 Q$ j4 q! W* d# Q: ?$ i
                                @.Destination :=* f' ?1 t! w7 ^3 G$ m
                                rgManager.nearestFreeStation(@,track.~);) k4 f# ]& M8 H, v9 J( `( e5 J
                                newDirection(@);   2 _1 U, j" K1 s: f: B
                                if @.Destination /= void then6 c" b. f! `' Y/ S/ @3 T) \
                                        @.Destination.NumReservation :=
' {' h0 v& q% F# K: W                                        @.Destination.NumReservation + 1;
2 m% U3 o5 Q( ~- d                                end;
3 f/ r/ ]$ a* [+ y+ O                                @.CurrIcon := "drivingHome";2 C! p1 k) i6 r+ m( v! n
                                @.DrivingHome := true;  M: j) I: u5 g! V
                        end;
9 ~: K: y9 w0 ^0 `, D! b                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
% O: h: s3 R5 _* J( d* {. b  x6 Q                        part := @.transpOrder;
4 Z4 O* r$ I' S9 U, U  E9 b! ~                        part.move(@);-- load part
$ p2 Z9 U9 J4 o; `9 S4 Q                        @.CurrIcon := "load";
3 e0 R5 e3 Z8 u& Z$ S, J                        GlobalDistObj := part.globDestination;* b2 N8 H, ~% o, e: n5 t
                        assignLObj := rgmanager.rgAssignL;
3 [- W) o5 C: J; q! Z                        row := assignLObj.getRowNo(GlobalDistObj);
+ l) u7 R' U4 e6 A                        if Row = -1 then -- since 70
( B7 ]% g7 N4 y) w( Z5 K% ?+ N                                if lan=1 then$ _( b5 @! b% T* ?, X, Z  H
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
4 ]: O1 m$ q8 K2 t4 |9 O) G                                                to_str("in der Andockstation: \"",?.~.name,"\""));
2 b9 m# Q7 [5 q/ v5 Q                                else- x9 k' V  e6 b  q1 l
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),. x# R5 ~' w/ V1 ]% O4 B% Y% u. ~
                                                to_str("in docking station: \"",?.~.name,"\""));                                6 M0 e: v* t1 y/ y
                                end;
  M! [) q$ d8 J                        else
! W1 [  u0 I$ Q( Y. B# Y" ]7 g. h                                @.Destination := assignLObj[1,row];' C7 j! R* U( X8 K+ J: t/ ~% V" A6 `
                        end;                       
: W* C  j1 M6 M                        newDirection(@);
( C3 ]1 L7 E' m, t% t8 |                        @.HasOrder := true;2 {% e; J5 K5 V3 W7 S
                end;/ V. J: q: ^) _% ?
        end;1 m1 |" O+ H( f, ?( D, @3 q3 s* A
end;        -- of the method
, a6 _% i0 ^3 q
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
( O3 D$ w' [  I4 k
- M+ w: z+ W% x8 a9 u9 S5 I7 H5 R3 [这是AGV_putin中arrive的method。
# r. J' e2 t* M6 b0 }9 {
9 W( b! F8 s. @  Z  M0 y& N+ C当到达物料速度越高时,这个报警更多,+ {0 _3 W  s% c& L. l2 _
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
% ?+ l+ a  i3 i1 b  o程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
4 O5 b+ P4 f# M& k+ M: L' e, I; Q9 ?# q* K2 z3 l
另外一个小建议,就是move,所有的move都可以这样  O; ?% g% W* v
if not move() then debug end$ L3 V7 r* G# |8 i2 v
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。2 l7 w+ k! R$ K- h
plant simulation中的free libraries有AGV模板,. v+ i% t) U/ X3 i, Z# A8 i
里面也有案例。; |6 T, o* w- n& K7 d
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。0 G: F1 t7 G- t. L' _/ T% K+ c

) t- a8 t5 ^8 h5 }  I# o. ^: P我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
$ _/ W4 z; k4 r7 U- \+ r! G- Z3 Q0 d# }$ d8 w1 \( D" X
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 2 u' ~3 a  P5 ?3 ~4 n; g
这是AGV_putin中arrive的method。
' s, {+ S! M2 q  Z' z
1 Y2 D) y3 _$ a& H& L当到达物料速度越高时,这个报警更多,

9 i7 `$ I3 n/ D$ [7 E另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-26 16:58 , Processed in 0.018003 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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