设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7360|回复: 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'
. G9 ^; @  a' l, Z5 A. u  X*/: R' B2 ^! \/ E  Q! L
is
7 D: ^+ I8 k: _& D* L/ C/ r        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
$ T4 c7 m6 N3 A4 |5 Z8 U0 t7 m2 qdo
  [9 O1 O) \0 k3 V        Lan := rootfolder.Internal.Tools.AOLlanguage;0 w8 y6 O, K: ?/ }3 j
        if current = @.Destination -- else return
5 ^  O8 f7 g8 {0 q- F0 \        then  V: E/ J- X! m. c
                @.Destination := void;6 W3 C, L/ B9 |" V! k# C' W. {1 d
                if @.occupied then
7 H& t  b+ |7 P! ~7 k- m9 z                        part := @.cont;& q/ ]; d. o( B% P9 m
                        @.transpOrder := void;* t: t( H  X2 c6 f1 r5 j3 Z7 i
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,* n7 K  G( S0 o& @9 N
                                @,root.eventcontroller.simTime);
  n* o4 q6 k( o8 G. c( i' o                        @.HasOrder := false;
5 E4 G* Z* I& r  ]2 ^                        @.DrivingHome := true;- I2 ?% I! @, w- e# M
                        rgManager.tryToStartTransOrder;- q+ u! `- x! h( i7 i  c: z
                        if @.Destination = void6 p- h% w: U/ i' P3 V. m
                        then -- no transport order for vehicle @4 i( ?, s; u' ^/ n+ i
                                @.Destination :=
( K' L' o( O; M                                rgManager.nearestFreeStation(@,track.~);, p! `4 P; Y9 Y' I4 L3 O
                                newDirection(@);   
6 W' I7 X* E3 s6 w5 O* \, O                                if @.Destination /= void then7 F6 p* Q( ]4 ~7 o1 j
                                        @.Destination.NumReservation :=
4 z' y9 p+ K6 q, g                                        @.Destination.NumReservation + 1;
2 y+ y' c0 c* Q0 C                                end;) ]& R5 K7 m! M2 C' Z
                                @.CurrIcon := "drivingHome";
' ~$ v% e! _% T+ m4 T, u                                @.DrivingHome := true;
9 P, C6 R6 w: ?                        end;4 ]( I" V1 U. j6 e. `
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station6 H9 V5 M( G4 C! Z6 i
                        part := @.transpOrder;( C- y+ ?: ^$ B* O6 X# P# h% |
                        part.move(@);-- load part
" D" J2 L6 w0 |& W                        @.CurrIcon := "load";
* w2 d8 Z3 C7 Y; n                        GlobalDistObj := part.globDestination;
" p) _; a9 y/ _" f5 f2 p                        assignLObj := rgmanager.rgAssignL;
; u( i: p7 |3 v% e2 j9 ?, Y8 Y7 E                        row := assignLObj.getRowNo(GlobalDistObj);/ V" D- K% O2 U. u: g" ^6 e5 D: w
                        if Row = -1 then -- since 70
  b% S7 |( B! Z! W0 e                                if lan=1 then
* D& J) r% J( B                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
+ _, {' j: Z* X# [) E& E                                                to_str("in der Andockstation: \"",?.~.name,"\""));( J. u6 T" H- i2 U, Z( {
                                else2 e4 Y9 g$ m+ A5 Q3 J6 T
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
& }: V! z1 Q8 h3 ]                                                to_str("in docking station: \"",?.~.name,"\""));                               
( t- J$ v" C% A: K                                end;
, y! a( c: r" O" [" K5 U: F, c# X                        else
. ?3 N% p+ S$ N1 h2 P                                @.Destination := assignLObj[1,row];+ U1 S$ \( n3 r8 d, n" [
                        end;                       
' f( X) S$ q: B7 P. a  _/ z) B" T                        newDirection(@);
& B2 M' S, {8 G9 V6 x                        @.HasOrder := true;
9 @5 ^$ i' I" t) V( R  t                end;: B+ Y* l( g: \+ C: j& J% \2 L' Z
        end;* E" {& N: R* Q1 Y' u
end;        -- of the method
/ G* [% m; O# c8 u/ k! @
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 * _! s* E$ ^( j8 m2 l: o
: {8 y3 Z$ \, t5 W4 K
这是AGV_putin中arrive的method。
. M1 A5 ]) p3 L2 k# i% Q
) ~+ |) x9 @* A/ m  R/ E当到达物料速度越高时,这个报警更多,
) }5 s: o5 M$ m- w' o% V可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
" U/ ], Z2 v# B8 o. l1 X程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?2 b% @7 }9 g4 ^, M( q
% C6 P5 |0 }. a7 k8 g
另外一个小建议,就是move,所有的move都可以这样$ h( t& j5 `% ^" H
if not move() then debug end
9 e, B4 i) J: }" W' `& B& b6 {这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
4 |2 |/ |2 H" X! d& i' Z3 J" n) |plant simulation中的free libraries有AGV模板,! G/ @2 W# f1 _
里面也有案例。
( Q# U. b2 c$ ^$ b4 c, j" }2 v我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。  [& K$ i* v4 T3 b
' ^  T* O6 L2 R+ `$ K3 y. R
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
$ s" O: i# _$ O4 u- o, Q
( H6 s: D! g/ G2 L# R* I# D那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
, r3 [4 N. z; H0 U) d8 r这是AGV_putin中arrive的method。
. ~) ]" U5 u5 t7 P: ]: N" e5 i1 q, q, x  Q( ?( N" U1 }1 ^
当到达物料速度越高时,这个报警更多,
1 Y1 U6 L, P. h6 W# u6 A
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-6 20:10 , Processed in 0.018256 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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