设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6531|回复: 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'+ [3 i3 a4 y) }: m: }2 B
*/; ~' e! ^/ [6 }- W
is
" m7 z3 o+ i! S9 j        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
9 |: @0 ^" W9 D+ ido  J" p( G. D* Y# x8 o& `
        Lan := rootfolder.Internal.Tools.AOLlanguage;; Z# d8 x) ^" [4 X
        if current = @.Destination -- else return
6 ^% m( F8 i5 L2 V. {        then8 m+ D. Z' O* n2 g
                @.Destination := void;
2 m9 f! D' [5 z3 S  @0 P                if @.occupied then: @0 p. N! k' k' d2 t( A
                        part := @.cont;
9 _, Y7 j$ R2 p' r3 T# i0 \                        @.transpOrder := void;
) s3 B, [$ \7 A, L6 t                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
& ?* p3 c6 K: `4 b6 z) Q, C8 N                                @,root.eventcontroller.simTime);
5 H( }7 m5 P, `' M& ^                        @.HasOrder := false;
2 e9 \2 f. Z, P% V" ?. h                        @.DrivingHome := true;
+ v+ X( u, h+ W0 t$ o1 g; T                        rgManager.tryToStartTransOrder;
0 a7 b1 J; X) K! t$ f                        if @.Destination = void0 _, n4 v: O% x4 s
                        then -- no transport order for vehicle @; }( ~- Z1 p+ w" Q: B* j5 C
                                @.Destination :=9 [4 Q7 r% P% ^9 G
                                rgManager.nearestFreeStation(@,track.~);
% p3 E$ p9 i' e8 s- g                                newDirection(@);   
$ X/ Y6 z( f* h& I) x" N: F. Z& l                                if @.Destination /= void then
% w1 ?# m& {. |: O! I% U7 N& p. O' B                                        @.Destination.NumReservation :=; E6 [. ?, T; S% I7 g3 T+ l
                                        @.Destination.NumReservation + 1;9 x! Y4 U" ]$ s: d' y# e# c! L
                                end;' U: R( E: S' P# u* i* S
                                @.CurrIcon := "drivingHome";0 Q/ V. ~) `& c
                                @.DrivingHome := true;
+ T! I6 p+ r$ M+ R' w                        end;- d6 l8 {5 Q- l' S
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
1 k: f. G: H4 _% \                        part := @.transpOrder;
. g0 \% Q0 k% W& T  X) r* J# {                        part.move(@);-- load part% z- \, p. q, r6 W; G8 \3 I
                        @.CurrIcon := "load";
4 s9 o8 B) X4 h! M3 \                        GlobalDistObj := part.globDestination;
8 q) o% @/ }* ]/ L                        assignLObj := rgmanager.rgAssignL;
& }0 k5 S- N: |- J2 H                        row := assignLObj.getRowNo(GlobalDistObj);
2 }( Y: v2 H$ |6 |4 |/ k) j                        if Row = -1 then -- since 70
- }1 F/ o8 B9 W* h' S& N; O6 e                                if lan=1 then/ a  q! l# [) r# S
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
. \2 u# U/ L% F& r                                                to_str("in der Andockstation: \"",?.~.name,"\""));
  v! t! E4 Y: _1 q; x                                else' p7 j, d9 e' b/ F5 ~- t- \2 W
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),. e3 G2 l* f" X7 C( }
                                                to_str("in docking station: \"",?.~.name,"\""));                                * ^' z( a( v! f& a
                                end;6 U& q2 Y- a! a, I! V9 ?: D+ r
                        else1 H7 c6 q, r( t, c. [
                                @.Destination := assignLObj[1,row];
4 Q9 E- I- K* H) U8 a                        end;                       
( Z( [9 `& S  e& {4 M; W                        newDirection(@);
+ N9 L2 N! w; h* b. K& c                        @.HasOrder := true;' Y% s# K2 I  j/ J/ q4 k+ K0 _
                end;; L3 ]( v7 g1 R* h  [4 L2 p9 [
        end;
+ {* n$ p' G& F) d4 w0 U  tend;        -- of the method$ l8 m$ ]3 f3 m/ b- h0 {; l1 x
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 4 r* a- e, [7 }6 Z1 t5 X& a0 `; X

# p! `" J0 M7 u& N( H; Y/ S这是AGV_putin中arrive的method。' Q! B3 J, b: L
3 l6 M" m: V- J/ c4 }  n
当到达物料速度越高时,这个报警更多,
+ b: w& S8 z' t1 o) x: d6 q可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
5 x/ e( N* `- e' R5 E程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?% s' C5 K+ l% D% d( m
: ?; B& x* z  C& m
另外一个小建议,就是move,所有的move都可以这样
; t4 t; I- Y9 D1 g0 r4 aif not move() then debug end" T/ p# u; v! d6 C8 y
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
! x: f4 }0 {  K1 z( m8 X# Bplant simulation中的free libraries有AGV模板,/ H. I" B* K5 f
里面也有案例。) B3 Q- ]+ k# i3 y
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
% s: ~  F+ W( X5 N) y8 {* _6 |$ I3 O( P' f) |4 j' a: X
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 5 v8 r2 d* X9 X' Y, d8 A) S$ n
7 h2 Y% X9 b" Q  ~1 Z3 y
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
8 W" E* s% M! b' g  N- H这是AGV_putin中arrive的method。
/ d3 ]: n6 Y* ~/ D. U( H4 F6 x. x! H. N+ N6 `6 n
当到达物料速度越高时,这个报警更多,

' q: a3 m% i' Z. b9 f) T/ k! ]另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-11 07:46 , Processed in 0.016596 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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