设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7754|回复: 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'
1 u* m4 T1 c0 z9 J1 |+ n*/
3 o& P* x! m/ m. M, i" `is
; h, _9 Z3 f0 H. _" O& A: Q8 L! P        part, GlobalDistObj, assignLObj:object;row,Lan:integer;+ X4 j$ N& t% \/ j8 a: H$ ]/ \! @
do" s! z. L7 D9 V7 H3 f4 D* }. f
        Lan := rootfolder.Internal.Tools.AOLlanguage;
4 ^2 v. f1 V  d( p9 P  R5 e% E        if current = @.Destination -- else return6 ?4 ]4 V/ T0 |: R+ Z
        then
% j& Q" N# z8 ^3 a: S- c                @.Destination := void;' _2 q; h2 ]% z
                if @.occupied then
4 C) x' [+ {7 k* y% u                        part := @.cont;/ ~6 K  R6 y# b# g) N
                        @.transpOrder := void;5 b: t: g+ ?0 |/ Q5 I. ^8 R; l  z4 V
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,# j# A  a0 |0 Z3 Q
                                @,root.eventcontroller.simTime);/ m; q. s& {9 X4 j! C3 }
                        @.HasOrder := false;
/ ^  ]( W, B0 |0 i                        @.DrivingHome := true;7 b; i4 j6 k1 \  {6 s
                        rgManager.tryToStartTransOrder;5 h9 g3 A+ L3 K* N- p; s5 G
                        if @.Destination = void
7 W) A1 Q2 Q% c$ _1 v                        then -- no transport order for vehicle @
9 o; H0 q: {# B7 x& C5 H$ x% s                                @.Destination :=
9 K9 }; J1 d, C! z2 e                                rgManager.nearestFreeStation(@,track.~);
5 u0 _/ X8 h% t3 g                                newDirection(@);   
' y# [4 ~  Z) E                                if @.Destination /= void then/ D- i! H! m/ d
                                        @.Destination.NumReservation :=* |# }8 s! {' Y* C1 q- ]
                                        @.Destination.NumReservation + 1;
+ S/ t7 O* n# y7 C                                end;
- X& W/ g8 q- {% V8 _8 t4 w                                @.CurrIcon := "drivingHome";+ s$ a& r' J( Y- a: {
                                @.DrivingHome := true;: u: h8 H) B$ v
                        end;
- D# y- o, G$ k1 G                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
, Y3 S5 {$ R+ t+ r$ a8 S9 q& M                        part := @.transpOrder;( a/ N1 j6 `8 _# W0 Y( k5 X
                        part.move(@);-- load part
5 Q3 O2 ?- ?7 N                        @.CurrIcon := "load";
, `4 w6 `. ~+ G+ g5 Z                        GlobalDistObj := part.globDestination;: I6 f9 r: f6 \+ U# c
                        assignLObj := rgmanager.rgAssignL;; Y: M4 ~- `9 j- [6 a6 O. Z: v* C
                        row := assignLObj.getRowNo(GlobalDistObj);; G  q. Y3 P  e) j2 p* i
                        if Row = -1 then -- since 707 D8 B8 b) A3 v0 @" m9 c4 W( Q
                                if lan=1 then4 N  _! `& y1 P! `& W
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),, E- [6 A5 c  U0 ^
                                                to_str("in der Andockstation: \"",?.~.name,"\""));$ Z2 n8 Q# x; y" G
                                else
- L, M. a2 D, P                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),7 y$ _$ R% S  A  R& `
                                                to_str("in docking station: \"",?.~.name,"\""));                                ! h- Y. d& v% X8 S, U
                                end;, z! S/ U; N9 K) U
                        else
: A9 {7 G- v, ?5 x                                @.Destination := assignLObj[1,row];6 S0 j: P& u; e7 Q. [3 V
                        end;                       
, y/ j2 `! `; S% {1 g! M                        newDirection(@);% B/ b/ s- k, F' z
                        @.HasOrder := true;
$ b3 {9 ~$ P4 O2 n. u                end;
5 J( _+ v: j5 N        end;4 u% e6 O6 U$ J! z, M  g' m
end;        -- of the method
- @: X5 {, [9 ~. x  g
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 " Y* ?; n4 u/ e9 V: [7 f- E% G: K

' B8 S8 w: f: a# w- S, P, [这是AGV_putin中arrive的method。* w% i: j! S4 F2 V) {

3 o: Q, v9 e8 x; l+ `当到达物料速度越高时,这个报警更多,* O0 y3 y9 |+ e+ }
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
0 v, T2 C3 Z/ ?( ]* k程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?2 W9 F; Y' w* W) R

2 ^' n2 b% L* e; p* I2 o9 I另外一个小建议,就是move,所有的move都可以这样
# y. @( F& K# q8 ?+ \3 ^9 bif not move() then debug end/ X3 ^0 s: I# [, E* `) j7 s
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
, @" J% {4 c4 T: Q2 g+ ~plant simulation中的free libraries有AGV模板,
; V8 o, J  \, v3 D里面也有案例。: }% q# Y- }1 p
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。) f& E& P( Q9 _) G* Q! @

+ k) r3 Z9 j! I4 n我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
- v: B& u8 i2 `$ H  A( k" B1 p; g& Q4 l; i" L# R5 Q
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 " l; ], H5 s; W6 U
这是AGV_putin中arrive的method。
: Z/ k- f# \2 ^  |
3 C4 X& N8 v7 A! `9 k当到达物料速度越高时,这个报警更多,

; v, j* L  B* _1 U' y另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-28 01:26 , Processed in 0.018785 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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