设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7465|回复: 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 c. W2 t% ]- [2 g5 w*/6 c8 B. f$ m6 @+ z0 z/ q& P! N- P
is4 N4 \  H2 h5 |1 v- y9 \
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;& C: Q4 U- I; C: l
do2 E" E, f! O) |# C' [% |
        Lan := rootfolder.Internal.Tools.AOLlanguage;
; X: i8 ^8 t9 c1 Q        if current = @.Destination -- else return
: M1 ^# }+ G; |" |/ K2 Q        then
' E# x, x/ r' I8 V2 v5 k( v                @.Destination := void;
+ b; F1 Y. N4 h6 D% C7 N                if @.occupied then) v" b; B8 c$ g1 A# \9 N5 t
                        part := @.cont;% {6 j/ g1 z  X2 x5 x
                        @.transpOrder := void;, A  {$ {, ~8 @# e! H
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
  _: h9 B4 `6 q                                @,root.eventcontroller.simTime);  ~6 l' `! h; L4 C" L7 F
                        @.HasOrder := false;
' w* k7 f; i$ x6 K                        @.DrivingHome := true;# R; q+ w& {+ p, S- F
                        rgManager.tryToStartTransOrder;
/ u: L" o4 f$ G3 d" p* M& {                        if @.Destination = void
2 q4 i- O& u4 t9 f; n6 n                        then -- no transport order for vehicle @
  C/ K. U1 ?/ e# p  Y                                @.Destination :=
( }# s0 o" S0 e                                rgManager.nearestFreeStation(@,track.~);4 c# A- x' t6 v' M! s! M9 D; o
                                newDirection(@);   - y( D5 z- G: n1 o, [
                                if @.Destination /= void then
1 X6 ?; l: ~: f# H                                        @.Destination.NumReservation :=, z! D! X8 v$ \3 P
                                        @.Destination.NumReservation + 1;, l& v" C: c0 z; {
                                end;
4 U0 k1 f8 r- r- s+ Q6 S( L                                @.CurrIcon := "drivingHome";5 |; \+ G% z, `; \
                                @.DrivingHome := true;* [; j0 A8 m3 Y* N4 O
                        end;
7 f; m2 B7 a# [( A( g                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
) p2 Y1 b* {% j! q* y7 G                        part := @.transpOrder;4 \4 g8 ?, x( H1 h$ n9 t; y
                        part.move(@);-- load part/ E$ V4 q6 ]3 N
                        @.CurrIcon := "load";+ o; O) w' F( V. M
                        GlobalDistObj := part.globDestination;% D! f2 t2 ^  D4 ?3 [- }
                        assignLObj := rgmanager.rgAssignL;
4 u2 P7 e7 A/ C% L- X! ]! s                        row := assignLObj.getRowNo(GlobalDistObj);2 C5 b3 q& H; [; ?
                        if Row = -1 then -- since 70
2 {9 O& C" n/ i7 @+ V4 Z% l& c- }                                if lan=1 then
! a5 k# }1 n/ Q( \                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
" M: _9 y! x8 B* n* v6 _3 u3 s( ^# c                                                to_str("in der Andockstation: \"",?.~.name,"\""));; P0 Q% A, i  ?* H1 G+ M* t
                                else) f) x. s' C, e8 E/ v1 X! B
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),3 I) K( v9 k; G9 j& s& s: j
                                                to_str("in docking station: \"",?.~.name,"\""));                               
" ]& B1 u+ o" N" Q4 S$ o5 z, T' y                                end;3 Q$ \  s# u9 ]. v& A- A4 }, f* h
                        else$ t4 k- N3 R4 N8 @
                                @.Destination := assignLObj[1,row];
$ G- G* E( P% X9 d                        end;                       
5 S8 E6 H7 W+ e* ?) ~                        newDirection(@);& {8 Z1 i6 V. O- w, x; I( {
                        @.HasOrder := true;/ ?* u/ c6 _! X, f& R
                end;9 k: J& J0 I/ [8 }: J
        end;
* V, G" ~, }* D4 i7 dend;        -- of the method
  J9 o, L, x* y2 v% ^; |" r9 M' f
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
8 m" V& O# S! P$ z* O* C! k; h- V  A% W4 C
这是AGV_putin中arrive的method。
, f% c/ U0 ]: k# \- k  s+ Q4 K9 J/ s5 z6 X6 |0 q
当到达物料速度越高时,这个报警更多,
7 b3 k7 Q2 j0 J( O可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。) G& W" d( ^# n& E
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?1 p4 ^0 h1 q3 s: e0 n' o  h: m& Q
8 y3 ]. V" e0 P8 t
另外一个小建议,就是move,所有的move都可以这样: b2 k3 n! E$ n
if not move() then debug end0 A/ w" b; c5 X7 c
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。) D, u: y3 t  s7 U% z( {7 P
plant simulation中的free libraries有AGV模板,; Q3 R8 I& U# l4 `! Z! a6 X# {" Q. T
里面也有案例。
1 }# b* |: z  Y我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。% ^3 e+ W  M- R0 p7 y7 r* u

  l6 w( W( G0 ]: @8 B' p3 o我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 8 t* @5 J) ?  k* ~

# r2 W0 r1 W! G2 O那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 & D7 P; G6 t4 o
这是AGV_putin中arrive的method。, t- i- g/ O$ A0 Y9 N+ M/ r' D) s' X

+ v; {: c4 }! C4 q当到达物料速度越高时,这个报警更多,

$ V! @2 ^3 ~2 z* Y, {2 M' G! L另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-13 03:42 , Processed in 0.020735 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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