设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9940|回复: 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'9 l8 i1 w2 R$ [
*/0 j: Z: P) r% w8 _) m0 X; f
is: x; F: r1 T7 f1 M& p
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;# `# s3 @7 e) Q# [
do# {5 k* D( R# u7 ]6 o6 `* G
        Lan := rootfolder.Internal.Tools.AOLlanguage;
$ e  W" T) N' g, r2 k( y        if current = @.Destination -- else return8 f% h9 ]) t" \: N/ \
        then
$ t( [5 F6 [$ N5 @                @.Destination := void;0 @, }1 t; i+ R1 D9 t: U
                if @.occupied then/ _  T! {+ L1 I$ h
                        part := @.cont;2 v! w; E) x; F7 m/ N
                        @.transpOrder := void;
$ w3 b- H$ u+ v& |( l! n8 H/ w8 ^                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
7 O( D5 _1 Q7 U8 x2 x$ g                                @,root.eventcontroller.simTime);: \3 E# W7 H' B& [
                        @.HasOrder := false;
$ W) y) u' W6 F% G5 x4 e5 }0 A                        @.DrivingHome := true;, S- T# k4 l4 ?' R0 P
                        rgManager.tryToStartTransOrder;
! t2 V) g5 R( q4 R0 ?3 H8 _7 K                        if @.Destination = void! c8 W' o2 ]# N- t0 ]* G' K
                        then -- no transport order for vehicle @
, e  ~' Z7 g& o                                @.Destination :=
2 j; S+ T7 R6 L                                rgManager.nearestFreeStation(@,track.~);7 h1 @  U! Z6 U! q$ `; |; M
                                newDirection(@);   
5 P! j& m, {- p* X: F% h- F                                if @.Destination /= void then
7 W! V, T1 O; n# i( f: t+ f                                        @.Destination.NumReservation :=
2 K& k/ D  i# i, X) \; ^                                        @.Destination.NumReservation + 1;2 k8 z& W; X& t) q
                                end;& B! U' ^4 \: h- m
                                @.CurrIcon := "drivingHome";9 o$ I5 g/ W4 r8 {$ A: v
                                @.DrivingHome := true;
: ~  b( `' O* r7 l: T                        end;
) X3 K" W* W% M6 V                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
7 i, q7 Y: m# {9 z, }1 \8 f                        part := @.transpOrder;
! u/ D% X- k) I7 ?, a/ w! D                        part.move(@);-- load part; W5 N  m) l2 ?2 w* w- ^" b
                        @.CurrIcon := "load";" k$ h0 G% l: o% L# l2 G7 X
                        GlobalDistObj := part.globDestination;
" |: z5 g# _2 f4 s5 _+ C  \                        assignLObj := rgmanager.rgAssignL;* \' M0 M& }1 A# ~. ?8 R, x
                        row := assignLObj.getRowNo(GlobalDistObj);! g& N1 x. j" s& `
                        if Row = -1 then -- since 70" f  H9 R8 a2 O
                                if lan=1 then
, Z3 Q6 l2 a# q4 @7 a                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),+ ]$ g' I: Q0 ^& B$ U
                                                to_str("in der Andockstation: \"",?.~.name,"\""));0 O% h. J) O# ?
                                else  v" X4 T0 G$ a) b
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),$ G7 J0 Z: T+ b8 K, A* M5 r
                                                to_str("in docking station: \"",?.~.name,"\""));                                ( O) ]' u2 i8 u4 Q- y9 I' R8 e
                                end;
$ s. V& r0 J$ m                        else: @8 l+ r9 J1 N  s! d
                                @.Destination := assignLObj[1,row];1 C! X7 u+ R; n- Z$ t7 Y/ e
                        end;                        0 H" E+ X: `0 t/ v6 y
                        newDirection(@);0 r: y2 b5 r/ B; G8 X# z
                        @.HasOrder := true;( J5 B; q# v! F; ?& g
                end;) Y6 Z+ M, Y: h) j( q( P
        end;
; v- z6 r; J/ S9 |( m4 v, c7 n4 K# hend;        -- of the method
) b) R4 ~; N. \9 M  g( k6 J8 Q8 M; U% U
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
# n: k! j! t1 z3 Y9 B) f0 `; U0 `/ C0 H  K0 C* A0 h- l: W; i8 A
这是AGV_putin中arrive的method。
  a: ^' u. E, ~; q& |
1 }8 ^& R# ~6 z' f2 G) F当到达物料速度越高时,这个报警更多,/ F7 e! m9 e7 J1 B( Y( C9 n" ?
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。; Q1 O* w$ u' G. G0 e0 r/ g: ]  T5 L
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
( ^6 W) {; w- f6 {& Q# G2 W0 D' r. v. z3 A: C
另外一个小建议,就是move,所有的move都可以这样
9 w: a5 u( f0 Tif not move() then debug end" C1 l% t; S7 ~( z) d
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
  |3 p8 Z7 z* L9 i0 y! H" B9 {plant simulation中的free libraries有AGV模板,( ]$ Z  i5 Y; k- V0 ^5 \8 D
里面也有案例。* T5 S) e: e6 O5 o
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。# @, F% d6 I* p. G
8 p- U# e6 E: Z% ?
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 ! `8 `9 [/ U8 ?% a/ J
" }) o, q7 u) D9 z1 [  `
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 . f, \0 X+ G6 P) {% j* N
这是AGV_putin中arrive的method。
  w# H: {& F% l$ ^& T; D7 U: D+ b6 P/ n4 V% ^5 ^/ b
当到达物料速度越高时,这个报警更多,
& M2 {6 `- z& y: Q) [' c! ]
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-9-3 11:44 , Processed in 0.018953 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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