设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9262|回复: 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'
% m1 I9 C" n  l# C2 R*/
4 J! r8 w4 |: U: J) Tis2 X1 U, g" v9 l1 i* M. }
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;2 I/ O  _8 Q; h3 w2 ?
do
# S: x" V: d, s2 f7 L        Lan := rootfolder.Internal.Tools.AOLlanguage;3 R! }3 C6 {3 W) U2 T
        if current = @.Destination -- else return3 p' f7 e' I8 P  Q* L+ b8 [
        then
6 c  l3 L% W8 H9 {                @.Destination := void;2 ^/ {' F& z4 |. ?2 X* V: t5 ~
                if @.occupied then
$ X% J$ o+ X" @& V3 P0 i                        part := @.cont;4 a2 P* M- D! {2 }
                        @.transpOrder := void;
4 f9 O& b# V% e2 B5 F! c) e                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,# j0 z* g& _5 c9 G5 F4 ]1 _
                                @,root.eventcontroller.simTime);' Q- n2 _8 N: V, U
                        @.HasOrder := false;
; M, t( U: j# Z                        @.DrivingHome := true;
' Q; Z; Y* K0 }1 o0 n8 `                        rgManager.tryToStartTransOrder;
% B; u, {1 i. V6 z  S) G                        if @.Destination = void
: O. ?9 v$ i$ |+ `3 V. B+ J                        then -- no transport order for vehicle @; a; h6 Y* |3 P3 Y8 @1 y
                                @.Destination :=
, k! {+ J' t( w1 j1 ^; j                                rgManager.nearestFreeStation(@,track.~);- T* j1 F/ o: m0 r2 U! c
                                newDirection(@);   
7 m4 \' U2 Z4 H+ }2 d) D8 [. K                                if @.Destination /= void then* D1 V3 U+ b: C  e+ O3 q- l
                                        @.Destination.NumReservation :=
5 n* x# t2 }2 i! k                                        @.Destination.NumReservation + 1;* e' q# L- u2 J; ~4 S$ u" F) E! P" s
                                end;! F0 [( q1 i# m6 S
                                @.CurrIcon := "drivingHome";
, U3 y7 s* c8 D' }' W. Q( q  K1 V' p                                @.DrivingHome := true;
0 A2 g& G3 ?; [) `$ H                        end;# K+ T( f* `- n9 V
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station8 e+ D3 u/ ], |* v3 ?  e$ z# e
                        part := @.transpOrder;
  X( f, h& X5 d9 ^0 u                        part.move(@);-- load part
8 U1 g7 J, i, P! _4 d                        @.CurrIcon := "load";
; r" A1 S* O8 M                        GlobalDistObj := part.globDestination;
4 T, ~6 t9 z) G0 t: w& t                        assignLObj := rgmanager.rgAssignL;" p2 M3 M9 D6 L1 l4 R4 Y: e6 u
                        row := assignLObj.getRowNo(GlobalDistObj);
4 z8 Q6 I9 p, P                        if Row = -1 then -- since 70
2 G  q1 x* h: S2 H! n4 o' F                                if lan=1 then
, k7 B6 i+ e" Q& n' }                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
  i: O- X1 F2 j. y                                                to_str("in der Andockstation: \"",?.~.name,"\""));: ^& ^  d# y* t6 `+ T- ?
                                else
4 W" E' x1 r; z& O: ?2 J7 r% [% t- t                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
7 k5 z6 q9 h9 U0 n' `                                                to_str("in docking station: \"",?.~.name,"\""));                               
+ q# V# D/ R' b* @2 V$ ?/ D$ O                                end;" E  R7 {* f' `, `
                        else
0 f6 O1 X7 T  B( p                                @.Destination := assignLObj[1,row];3 P5 m3 s7 u) M& y1 d4 g
                        end;                        3 r: n% O$ H/ {1 E3 P# o
                        newDirection(@);& A- x1 b( o5 N
                        @.HasOrder := true;
- y3 r! x$ G$ S- A  ?                end;5 b' H6 N* S; O% P4 ~
        end;
# C) r5 Q- [2 H* nend;        -- of the method
( k3 q5 w- R* w* s& C* [
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
+ U' r' c: y' i6 t, A
' Q- L0 Q- s& c' ]这是AGV_putin中arrive的method。1 ^  D& K' O4 S  e/ n5 Q1 t

7 i; ^9 v6 m6 ]2 d2 G! t6 k当到达物料速度越高时,这个报警更多,
( M) g2 s- ^6 F1 c( F4 r可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
+ W! k1 ?2 |9 R- }. O程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
5 D9 j. V8 z2 X& {1 Z( Y% j9 U* F  O
另外一个小建议,就是move,所有的move都可以这样
7 r6 {+ h: \- I, @9 P' r4 F0 k! S' cif not move() then debug end
" T# L$ Y+ ~8 @这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
( q# d" B3 W8 Y* Q8 x0 t* `plant simulation中的free libraries有AGV模板,
2 H/ @. @$ j# C+ P8 c里面也有案例。" J, C" K: l( L1 h8 o6 P- q: o
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
1 u2 g$ [# K2 f. o! z& S) ~, d+ ^! ^# R+ c
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
) t5 }+ A; {0 v( x1 n: [) I1 i8 W" I, E/ J: X$ {% P' B
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
: E9 \, L5 u  V1 w6 ]0 b5 w这是AGV_putin中arrive的method。% H" j$ o# R" n0 \
8 N2 j' n" p0 c* U3 o+ s5 ?/ Y
当到达物料速度越高时,这个报警更多,
3 B5 V) j: m1 U% V& K, ?3 a( w
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-7-21 20:46 , Processed in 0.017495 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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