设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6099|回复: 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& ]" n- t" C9 V* T, Y*/  j% W( P) L1 P1 ~/ F) B" l/ s
is
8 q1 }6 [# g# V: a        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
; {) V; J$ m/ [$ fdo
/ j. m" U9 F/ R* s) q        Lan := rootfolder.Internal.Tools.AOLlanguage;
9 Z8 `7 ^* w* p( w        if current = @.Destination -- else return% ]8 y+ l9 Z2 x; m
        then
- l7 v, g( ~- }# V# F                @.Destination := void;3 e% O( t6 S. U" j- b4 _/ x8 d# V; x1 Y
                if @.occupied then% ^& Z6 _! ]) H: |2 h) o
                        part := @.cont;  J7 `1 h# W$ Z
                        @.transpOrder := void;
+ ]: q; a0 C9 I+ b" w6 d0 M$ ?0 z$ ~                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,' v8 g0 X2 ~% Q% n
                                @,root.eventcontroller.simTime);
; Z# o9 Z' d1 a" j, M. q                        @.HasOrder := false;
- {1 o8 F( j* g                        @.DrivingHome := true;
* s% @" d% |+ o3 E$ X0 t                        rgManager.tryToStartTransOrder;
' J" E$ i, B2 W( X7 m                        if @.Destination = void, S$ s$ ~5 f' x, B
                        then -- no transport order for vehicle @
, m5 K+ r/ l9 u  S% Q9 q9 t7 g: O                                @.Destination :=7 a. s" x1 n# n# Y% W
                                rgManager.nearestFreeStation(@,track.~);
  ]9 v2 q+ U5 {, ?) V                                newDirection(@);   
7 z" f9 I9 p1 ]7 \1 I                                if @.Destination /= void then
/ U9 Y. L/ ~7 D  l) p) K                                        @.Destination.NumReservation :=# q7 |" f! o% M+ m' }
                                        @.Destination.NumReservation + 1;
4 t  |, o5 A8 Z                                end;7 k3 Z9 d0 O% T  C, J1 ~) `
                                @.CurrIcon := "drivingHome";. Z9 U1 D* o+ u7 ?4 `$ ?7 Q0 M" a% o
                                @.DrivingHome := true;
, t* C, R. N' m# j, k: S2 H                        end;; c4 J$ J: F" X3 O( W
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station2 \4 k' D' a* u+ u+ Q/ L8 Q
                        part := @.transpOrder;5 Q. G  K  `: Y& Y3 x' ^0 h) K
                        part.move(@);-- load part
. v. z& f& ^6 ~4 N9 j                        @.CurrIcon := "load";
) V* b/ j# Z& L7 W* j4 s                        GlobalDistObj := part.globDestination;
1 K; c( H# _% W* S                        assignLObj := rgmanager.rgAssignL;% J) S  e! [" z
                        row := assignLObj.getRowNo(GlobalDistObj);/ Y1 g. t; L+ M! [7 s! l
                        if Row = -1 then -- since 70
# w9 B) X8 ?# N8 B4 v& S                                if lan=1 then: k7 ]2 G6 v/ p
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
# _3 a/ L5 r8 Y( a" v: o+ A1 C$ J                                                to_str("in der Andockstation: \"",?.~.name,"\""));
4 d1 d, C2 F9 c$ [( `9 O$ c                                else2 f8 `; u8 ]6 a
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),; g9 k% b3 {/ A, J; |
                                                to_str("in docking station: \"",?.~.name,"\""));                               
! H$ ]# p) @7 k$ Q/ X  X, N5 H                                end;
6 D7 a/ }0 u' s/ ~9 D* _                        else
# S" u1 y. D8 T$ c( K5 d( ^% l                                @.Destination := assignLObj[1,row];! ]1 q* V  N: f1 [: x, D; O) R
                        end;                        / O, ~. y- V# K9 N0 a
                        newDirection(@);
; F3 d$ b2 A  Q( B1 q0 Y  _                        @.HasOrder := true;2 C6 I8 y' t3 L" n9 x% C; s6 A9 K2 t
                end;
% J7 s+ e- D8 z) |$ W9 c        end;/ `4 U! ?' c+ I+ n' |) n% `! O
end;        -- of the method
9 T6 t& `) N7 _7 W; u
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 1 i. a; R9 h7 @$ W, {

# Y/ u$ n' ~! h: g) M0 R0 x这是AGV_putin中arrive的method。5 J, d% Y% M. R% @0 c

3 J- D$ L, l6 Y: z/ L当到达物料速度越高时,这个报警更多,
6 X; i' ?* @9 G" F0 T4 v可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。3 o- X) i9 S. `; M, d& @# S
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?- ], {& J' T" w. Z7 f
. h+ T' \. J; `; D
另外一个小建议,就是move,所有的move都可以这样1 @* k- _( @  {- m4 e- o: N
if not move() then debug end
; t6 g7 V7 m% Z8 I$ {$ T这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。/ G) S% |3 G7 o& ~" P
plant simulation中的free libraries有AGV模板,8 d$ b9 u: x. m1 M) c: Y
里面也有案例。
$ f. v% U5 C) l) h. Z& R( t3 ^我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。! ]1 J; ~4 W- A7 Y7 S$ x

& g, h) E; a4 P0 Q3 T9 ~我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
3 @& p! x+ }% ?. s  G0 P) _
/ B  _! b4 o! w4 n5 i4 d" T' e* ^7 b- B: F那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 6 `& S$ F( u; [& f0 ?
这是AGV_putin中arrive的method。! M5 e) J3 O* C. b

8 X$ t. {5 T; j当到达物料速度越高时,这个报警更多,
, Q% K8 g; U1 B
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-1-18 11:50 , Processed in 0.024112 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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