设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8307|回复: 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'* s: m" o! O3 H( Y3 \8 ^2 H
*/
7 v9 d* g  R& |' ]: q- Z$ Wis, r! {" K1 @- q, K8 R$ A4 p
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
" _( I( i4 C  h8 Bdo. u# t8 D% r$ R& W' u: F8 W
        Lan := rootfolder.Internal.Tools.AOLlanguage;* Y3 N- c$ y. ~) w
        if current = @.Destination -- else return
1 l8 [- P9 t. B' \        then
( X' ?) l# e- I  j" {+ [6 [* r- W                @.Destination := void;7 R, m& |, c! m$ |8 j
                if @.occupied then
3 L  V& {/ j: P7 _; {& b# M                        part := @.cont;  n) r% l! ^$ f; t
                        @.transpOrder := void;2 o/ ]0 t4 m( A& Z, F! J# i
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
) K* J- O" O2 l+ B; ^6 q4 o& q0 X                                @,root.eventcontroller.simTime);
! m- {  \1 u- w3 u8 j1 w                        @.HasOrder := false;
8 d" q4 @' ?" q6 R                        @.DrivingHome := true;0 k4 e. P3 u& H# |8 G  N
                        rgManager.tryToStartTransOrder;7 X* z7 y0 ^$ W/ J3 w9 y
                        if @.Destination = void
3 v$ ~  M  R, i1 F! {                        then -- no transport order for vehicle @  }6 J7 L4 H6 u
                                @.Destination :=
  k) R# M+ t) c                                rgManager.nearestFreeStation(@,track.~);5 R3 j8 z. d+ x! A  Q
                                newDirection(@);   
+ G( Z" t! |8 F* Q                                if @.Destination /= void then
3 f5 V4 i# N* Y; i3 G9 F( i" V; g9 X                                        @.Destination.NumReservation :=
# \& V2 g. n& ^( M  h                                        @.Destination.NumReservation + 1;# a( a  o8 F& u/ N: L  B  F
                                end;
' m" }- V+ T% x7 V                                @.CurrIcon := "drivingHome";
; ~- R, j+ W7 n- S8 u6 S. ^/ u( Y$ w4 C) s                                @.DrivingHome := true;% M0 m8 J: ]+ ^# Q+ ?: B, u
                        end;
  h0 Z* `9 {8 I! ]5 e: S& A                else -- the vehicle @ is empty, both vehicle and part are in the same dock station9 z0 X4 K3 [: K4 b2 F9 I* H
                        part := @.transpOrder;$ J( T( _9 f, j4 j% i
                        part.move(@);-- load part4 u. {: b; K8 n: q' c+ v
                        @.CurrIcon := "load";
& S5 ]* G- @; O" Q5 p6 z                        GlobalDistObj := part.globDestination;& F9 M* K& e/ `% k/ |- M! s" N
                        assignLObj := rgmanager.rgAssignL;4 M- ?' Z! b; l1 |
                        row := assignLObj.getRowNo(GlobalDistObj);" ?& E' q' Q& @( u0 n
                        if Row = -1 then -- since 70  Z% s# G- n  f8 {
                                if lan=1 then
) l& s3 w' `5 J7 \5 Q                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\"")," E2 Q/ ?* J( ^1 H% k
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
/ o" m/ l6 Z! @$ d# _                                else! y! M" m2 f7 u! c. G
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
  a2 q. f9 f/ @# F6 z+ Q                                                to_str("in docking station: \"",?.~.name,"\""));                                , ~4 i  k- `! a# B% v+ Q: t
                                end;
4 N; W9 h3 ]' W, O* E$ J                        else
# u" V" O6 F: j, q, @, Q                                @.Destination := assignLObj[1,row];
2 ^9 A9 L+ k) G+ d5 r                        end;                        9 A( K4 @: J- I7 Z+ z
                        newDirection(@);
% b5 j+ g3 z9 @. I/ f3 O" W4 |. `+ n                        @.HasOrder := true;
+ Y, @* ^1 A: `, C% o4 a                end;7 B0 c, S( x8 l
        end;+ q, i3 C$ F1 L7 s
end;        -- of the method7 K9 [; }6 a6 w1 x
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
/ Q4 G4 m4 Z& r8 `: _: u" i+ V( w9 C8 }% H
这是AGV_putin中arrive的method。. J- b, O5 n1 ^5 Q, w# V1 M6 R
9 N! c  r5 b0 A3 j' W. v
当到达物料速度越高时,这个报警更多,/ V" P5 F+ U/ M& A
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。% r' |! C  w: t) e) I) t2 J! F* p
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?" U- I( o( k7 h* I" {  A
7 _9 K2 G1 P3 q: _5 k
另外一个小建议,就是move,所有的move都可以这样3 ]1 |+ [. z: q& ]8 _# {! C
if not move() then debug end( ^. Q' V1 J. m/ l3 u& O$ i! J
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
" q+ x0 k4 K  Q6 o5 h3 Aplant simulation中的free libraries有AGV模板,5 ^& D( `6 w0 k# Y
里面也有案例。
/ q- ?# R% w( Y: O) e  A- x# N我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。0 s1 w* R% D% P1 U9 t5 L9 E6 j# c

/ y- _+ G$ K; A: J# `! X# {我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
* ?0 G+ ?2 M' C' Y, |+ j
2 \. c. F, Y# U3 Z那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
. {8 \! A- r* d& K; R  E这是AGV_putin中arrive的method。* M5 u9 o, Q' Q  Y  h
# Z$ p) g# A0 V% Z+ m4 V% r
当到达物料速度越高时,这个报警更多,
1 P" X0 m( D% |$ y: w0 x9 H
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-26 21:55 , Processed in 0.025669 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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