设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5652|回复: 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'
; b) c+ E7 h& n3 g/ V0 N*/4 t) w+ k, e2 X* H; D
is! @- ~* G3 b8 A3 v$ n# {6 C  _
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
( m; s8 ]1 U2 Gdo* v. O5 b: I" W' k- V+ F6 y
        Lan := rootfolder.Internal.Tools.AOLlanguage;
1 _1 ]0 G/ y- W2 [1 ]2 X$ x5 M        if current = @.Destination -- else return# [: c$ q/ }  G; _0 d( Q
        then3 _+ ]4 J5 ~8 R: j+ o- ^: u
                @.Destination := void;* ?) ]$ s* r5 ?/ K( j
                if @.occupied then9 F' z  x9 ~0 X! `
                        part := @.cont;
+ ^, I( E2 B* U( E                        @.transpOrder := void;2 v3 T) h0 M. \0 Z5 E* l& N
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
" E" Q8 v) r9 s# v                                @,root.eventcontroller.simTime);# D5 ?8 u9 J% f
                        @.HasOrder := false;0 h/ @; O  @$ Z0 y! _1 y7 [
                        @.DrivingHome := true;
! B$ M3 w. c; D) R5 E* r                        rgManager.tryToStartTransOrder;
$ q; ^4 y4 [: \1 K                        if @.Destination = void
, c' h# d9 [* c% Y. T# e                        then -- no transport order for vehicle @
4 t% P- d6 o4 l; d                                @.Destination :=6 X0 m" Y# x) [0 i7 k* Y. B2 Z) K( H* K0 `
                                rgManager.nearestFreeStation(@,track.~);( M* h8 J. D5 o9 \2 v+ ?9 {
                                newDirection(@);   2 T0 \7 {1 }3 z( z. z
                                if @.Destination /= void then+ M; ~" s1 _- {; s& z% j. t/ [
                                        @.Destination.NumReservation :=2 d) T) t8 B' P  X7 G! C4 f
                                        @.Destination.NumReservation + 1;. Y" j3 j$ |6 A  p9 [4 d: [
                                end;) ?+ e9 \, T0 A$ s
                                @.CurrIcon := "drivingHome";" z. z! Z3 b6 v: _; h
                                @.DrivingHome := true;) b+ {0 k) ?  P
                        end;
% \8 }9 \5 O! ?7 g3 n                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
; b, M' K. D4 ]- u2 v                        part := @.transpOrder;
4 u& x$ ]+ q* x$ y                        part.move(@);-- load part
1 Z, N9 {8 d2 s                        @.CurrIcon := "load";
) L9 Q; W1 O! q7 B4 Q                        GlobalDistObj := part.globDestination;- W# M! I1 H2 i( P4 t1 f( O
                        assignLObj := rgmanager.rgAssignL;, D, j- N2 ^5 d& [. d/ ?! [
                        row := assignLObj.getRowNo(GlobalDistObj);& ]) l( k2 b, ^- X: ~+ ]. ?
                        if Row = -1 then -- since 70
; O! x4 O  D. L  \# ~3 n1 o  ]8 f                                if lan=1 then8 C- e7 Q" j- z7 y7 L
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
/ [8 {  d% [. U; f5 H                                                to_str("in der Andockstation: \"",?.~.name,"\""));# R+ k3 H! p; c0 u) A
                                else
  C# d. ]3 l. F" n% d; v8 t6 _                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),% x4 a% V/ P$ F! l( G
                                                to_str("in docking station: \"",?.~.name,"\""));                               
. y. i, Q$ H: Z* C7 E: B# I                                end;/ m: {+ X1 d  M) ]
                        else! L* B/ E" q! m" I$ j% ?. l
                                @.Destination := assignLObj[1,row];7 v' o6 f# }; e8 E  b; W" F, F, F. Q
                        end;                       
) m& Y- U1 |0 d1 r                        newDirection(@);
4 m$ N1 }) c4 X7 r                        @.HasOrder := true;6 z% a" d8 E& C- U5 z; S
                end;! S( m; R& |' C5 G' H6 u+ g
        end;
$ z, q; N1 G3 F* h( X2 Wend;        -- of the method. G* |: [# s' L5 V3 v+ Z
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
3 P% l7 m# C7 S8 _) v+ ?0 ^: v3 ?7 h/ e$ h6 Y( y
这是AGV_putin中arrive的method。
  A9 L0 ~9 J6 B. }  o
7 u4 k! z$ }& c7 K$ ~: u当到达物料速度越高时,这个报警更多,5 v1 E6 o' I# ?$ T) r
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
6 R+ _" O& X) b1 y- B程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
% ~) G. `$ N, H+ N8 F0 j/ f* O) T6 N5 T
另外一个小建议,就是move,所有的move都可以这样' k+ d* q$ X' ^4 [) y4 X
if not move() then debug end5 e; @* I# S( E
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。- I2 f* u6 v7 I; {
plant simulation中的free libraries有AGV模板," G. m7 e) j- `1 ~
里面也有案例。: \7 A( R0 q/ M! V, |
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
3 y& p: c( ]2 R! f
9 o1 s) S5 W' V! `8 t* S! N我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 & S5 F# T- e/ l8 }

  V( P% `2 Q3 z% G0 R那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
- `* J' x2 N! K' l+ ~$ \4 \1 \这是AGV_putin中arrive的method。
5 s8 b, G0 B- h
$ m/ K3 X: m  g/ v  E9 ?当到达物料速度越高时,这个报警更多,

4 c. q$ \: e8 i另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-12-11 16:07 , Processed in 0.016853 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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