设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10042|回复: 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'; _) ]4 |5 r6 E- Y) g
*/: f5 Z& c0 V  t% w! P
is, y6 D! t+ _! X
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;8 Z) |( E" m$ b; ^
do
' I' ^; _: O$ `- W        Lan := rootfolder.Internal.Tools.AOLlanguage;
4 J6 [$ Q9 S% _6 F( Z1 l. v+ T  [        if current = @.Destination -- else return; m" k7 A2 g( T/ l5 {
        then# Y' }9 P+ C; {2 O/ z; ~
                @.Destination := void;+ v' {/ [, z$ F! v5 B
                if @.occupied then; F; [! S3 p# t  o( y
                        part := @.cont;6 P- e! d1 M( S$ S% A; a) I
                        @.transpOrder := void;  v3 n; l( l: W' b: |, R
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
; Y2 a% S/ h* k- z, @8 ~% k( }$ _                                @,root.eventcontroller.simTime);7 |, E' Y8 e$ r; B
                        @.HasOrder := false;
0 d5 }# r9 g; i3 b) T0 J3 R                        @.DrivingHome := true;# G8 j6 |% x6 Z" M! ~
                        rgManager.tryToStartTransOrder;
4 J1 E3 k: W; `4 k: v5 U2 i                        if @.Destination = void
# _/ i5 u2 a  i% W3 X8 p2 P                        then -- no transport order for vehicle @2 A/ ]: ?5 c0 Y/ ]7 |- u3 h
                                @.Destination :=. K* y) i% t7 N
                                rgManager.nearestFreeStation(@,track.~);
+ b0 J3 [* h4 @' d& e; ]+ y. Q                                newDirection(@);   
1 {* Q# a; h; m                                if @.Destination /= void then$ O$ K1 Q. o9 l1 ^" A
                                        @.Destination.NumReservation :=. _; M; O2 ~, c% Y$ p
                                        @.Destination.NumReservation + 1;
8 y" O6 Y3 Q4 W& Z. ^  `6 k                                end;
6 ]* z# l3 @& ~% j                                @.CurrIcon := "drivingHome";* A$ H$ f: O" q# [" \
                                @.DrivingHome := true;# }% _1 B- z9 e9 L- m+ \
                        end;
  T0 _+ |) |: K* B" ~# F5 N                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
) P+ i7 V/ }' O1 c                        part := @.transpOrder;
. k: T4 p9 |2 _: h- E' R3 a                        part.move(@);-- load part+ B- \/ s0 N, X( J* K/ w' o1 ]  b/ `- h
                        @.CurrIcon := "load";
4 J9 T& ~7 ?* l. W7 l: }0 G                        GlobalDistObj := part.globDestination;% m; A. \1 {4 s$ E2 \% {' k
                        assignLObj := rgmanager.rgAssignL;
7 N8 v3 [* D6 B4 y$ `- a                        row := assignLObj.getRowNo(GlobalDistObj);  U) H. h; Q) `7 C) G+ h
                        if Row = -1 then -- since 703 _4 D8 q# i2 T2 x! g9 T5 ]; [; e, O
                                if lan=1 then
' F2 U, ]; |- K4 b9 o  V                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),  V; m: M# Q/ ]1 {7 @
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
/ s# c/ D% n# d6 ^& c                                else  Q. w6 F# |& Z* `0 o( \* {
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),% e* i8 [/ ^6 [: w% M. h& B
                                                to_str("in docking station: \"",?.~.name,"\""));                               
1 D1 j: k% p/ e' ~' Z+ [* n                                end;
9 M/ U3 h* s: f. c; N                        else
5 P' o  h0 t) i7 g5 c                                @.Destination := assignLObj[1,row];' j1 A$ t* X- V  A
                        end;                        2 P& C2 v, ]2 u  C/ Z
                        newDirection(@);- r7 P2 t4 ]( ]4 J
                        @.HasOrder := true;; Z! A* i$ ~0 E
                end;
, S$ A( ~3 _% @8 H' e6 B: ~/ d        end;
2 r% V  L1 n+ l, i) Z/ x, f$ ]end;        -- of the method
) a  S4 ~  M2 Z& K# G( Z
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 - i' y8 y2 p0 d+ X
) k5 o  W- k& R; X6 s/ H; q, W. ]
这是AGV_putin中arrive的method。
% g' q" U) W3 N, I: A# |8 q# C1 x3 C2 Z
当到达物料速度越高时,这个报警更多,2 v) O2 \1 a. y" l0 _0 ^
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
% U" }& X& J9 D1 j0 x4 ]程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
, o1 W2 m6 j3 N3 {: Z7 x- B4 q7 z. ?7 x; F& u; B( E
另外一个小建议,就是move,所有的move都可以这样0 I, I: O: i, w+ P
if not move() then debug end+ \2 K+ f: C/ c2 {1 R1 r/ o
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。# [: D& s2 S( [* n
plant simulation中的free libraries有AGV模板,9 ]: s. h8 e8 |- K7 Q' k
里面也有案例。/ d6 v" R8 B" X/ m
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。/ U8 n- F: n1 B3 t$ D* }
4 }& H% m$ x6 ^
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
; Y2 U" @( f9 q$ O3 }/ f, Q
- D6 i' u7 y9 n4 A那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
; `$ a9 y8 h9 E这是AGV_putin中arrive的method。
3 U0 `# t  L- B' t+ v1 h) g4 F; [0 l9 L+ g0 U
当到达物料速度越高时,这个报警更多,
0 x9 i8 i2 ~( L; y- f+ d. p
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-9-9 16:06 , Processed in 0.022117 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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