设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8756|回复: 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'
% g2 O  u# R6 ^8 M' g% C7 I7 J*/( L: D% R/ G+ P$ L0 Z
is9 v2 S. g! y0 i& P2 l7 @3 c
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
* i9 H3 i' ?" ]/ Rdo5 g2 x: g# m9 m/ @3 i8 [2 X/ ~. X: z
        Lan := rootfolder.Internal.Tools.AOLlanguage;$ W( L; t! L, ^
        if current = @.Destination -- else return0 U6 c; q1 W4 {5 e$ A% f& s
        then* d8 C  o  A' q. M  [: G/ ?9 Q. R0 M
                @.Destination := void;# t  I4 h/ @; R, v- @' P
                if @.occupied then* h, _  i3 O+ b' ]5 f9 L, q7 I2 K
                        part := @.cont;
/ s7 f5 [* [+ O% f/ F) T                        @.transpOrder := void;+ h$ Q+ r- s2 i% Z8 G" }6 w
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,8 \* |8 d/ `4 g& c
                                @,root.eventcontroller.simTime);, j8 i% O7 c0 U1 n: f* w
                        @.HasOrder := false;# G8 p) d  Q8 ?
                        @.DrivingHome := true;; D1 u% Y7 k/ [5 R
                        rgManager.tryToStartTransOrder;! {. F6 A, [/ L1 ?/ ~/ a2 u! X
                        if @.Destination = void& B; ^9 b+ O* W1 J  n. `" H
                        then -- no transport order for vehicle @
" L% r" f1 ~/ ~8 i& V) D! w1 l                                @.Destination :=
0 f0 d- \0 e' d; S                                rgManager.nearestFreeStation(@,track.~);
6 T, s# X" a8 ]: f& b# O, _                                newDirection(@);   
9 A  [; G- L# m2 ~* t& _1 h$ A                                if @.Destination /= void then/ C1 `# y) c/ U. V, g
                                        @.Destination.NumReservation :=
, ]- ^' y4 Y* K                                        @.Destination.NumReservation + 1;3 p+ h- K7 T2 z* W* d/ _5 V
                                end;
% {/ q7 W! V5 g5 S" X2 J% s: K! G                                @.CurrIcon := "drivingHome";
# e+ u: a8 [/ u1 X, `                                @.DrivingHome := true;
" t* s! j0 J$ x/ \                        end;
$ z. `7 V2 G2 o/ v- d: h# R                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
7 _& P2 O* C8 m' @                        part := @.transpOrder;% T! m4 K) Z) W/ x% `# b1 _; j
                        part.move(@);-- load part1 ]8 c: ?; q0 k9 Q8 o% o( Q
                        @.CurrIcon := "load";
5 C- C. Y$ G8 b5 |3 `; f                        GlobalDistObj := part.globDestination;
; z7 \- N' Q/ C3 H                        assignLObj := rgmanager.rgAssignL;
$ u7 ^! q! F$ N7 O                        row := assignLObj.getRowNo(GlobalDistObj);& R* W; b4 S. _/ B  g
                        if Row = -1 then -- since 70+ H3 ]; k( D3 T9 z
                                if lan=1 then
; T. X8 S. U! Y# Q                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
& x) e: v: h4 N" X" R                                                to_str("in der Andockstation: \"",?.~.name,"\""));/ }7 r+ k  I$ P
                                else
8 j6 }* {& H5 a3 j6 ?' V; n                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),7 Y) @5 }: h0 t' B% y
                                                to_str("in docking station: \"",?.~.name,"\""));                               
, E# N; G) N; j/ S0 z4 d+ w                                end;
6 \! ^. }- q; ^6 W+ ^0 L5 i                        else
9 i' j0 D/ W& w) d1 p                                @.Destination := assignLObj[1,row];
, R! V" |) z0 u, R1 j                        end;                        2 W# N0 f" N' @1 S5 i) g- [2 f0 Y
                        newDirection(@);1 g( H+ g3 U# z$ Q
                        @.HasOrder := true;% ]: ]. o% Y2 z/ x0 Q0 m- r
                end;
) T: G* F& F7 [* S9 \        end;' @; l$ t& {8 w. ~! H) {+ y
end;        -- of the method
2 a6 k* i3 F0 c( p2 O; i4 \
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
, V4 }* E2 }% o$ ?, f
- D) E1 S5 v0 }0 w5 W7 I; w这是AGV_putin中arrive的method。
) p) Y! u  Z4 P) {. i8 b- T/ f- ?. Z
当到达物料速度越高时,这个报警更多,; u3 `# p# D- k$ ~3 F/ C
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
, _+ y8 e/ O) [2 M( O程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
  p! g! g. r( p  T: y, S$ q2 z: |2 Y+ W9 p+ F
另外一个小建议,就是move,所有的move都可以这样- x( u( U; T; T: n
if not move() then debug end
" C/ P, t* b8 |这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。8 A9 k( z! m( [. r
plant simulation中的free libraries有AGV模板,5 p# x) x$ z, a2 ~4 K+ T
里面也有案例。% n! x/ a7 M. D
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
3 ]% X! U+ r1 o4 D$ Y8 G
, Z' b" H0 g# D8 k% ?" G1 A5 ?( L我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
, c7 q4 _; |) w- [2 x! K: b. z, T: y6 Y+ \" x. j2 s8 E
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
' t1 B- q- V% K6 s. X5 Q$ O* M& Q这是AGV_putin中arrive的method。
! [; N* ?( Z" |
0 Y1 T" z) h% c- ^当到达物料速度越高时,这个报警更多,
- T1 ]5 B. B' V* T* E6 m( |+ a
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-24 12:33 , Processed in 0.015112 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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