设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8435|回复: 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'
% p; a: Z3 E0 R- R6 U*/
$ [: ^- A+ v( xis
: J0 t8 O8 g; }        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
/ f2 c9 {5 j* A3 N2 ], U8 Wdo
- f" E3 u. \# M1 c' }8 l& D: u        Lan := rootfolder.Internal.Tools.AOLlanguage;8 v/ _" J: x  O
        if current = @.Destination -- else return
# z; K+ D! y! m: h+ K8 @+ x        then% T+ @* X/ J* b- I- ]8 O: r
                @.Destination := void;
1 I) X9 m* k$ B% G. x9 Q                if @.occupied then
) C' ]( Y: p1 C0 P% a' d, i                        part := @.cont;
, [/ J* n" R' d) [9 v5 h# I                        @.transpOrder := void;
+ m  f- w4 w" M5 P% k                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
# {+ s( C  B9 t! ~1 X9 A: ~                                @,root.eventcontroller.simTime);1 Z1 F, A. u6 l( ]8 q; T: o
                        @.HasOrder := false;
7 K6 |* t+ b' |) c$ I9 a  O: |                        @.DrivingHome := true;
# P8 R# P  _! r                        rgManager.tryToStartTransOrder;- u9 ~# U! E1 ~( e/ x
                        if @.Destination = void
2 X- ?, |' s, Z1 s, _) o4 Z  T                        then -- no transport order for vehicle @
+ M$ ~) j& C$ m                                @.Destination :=
! C! ?9 |+ z9 o+ `  {, S                                rgManager.nearestFreeStation(@,track.~);
6 A' Z# O2 \* A- n# [                                newDirection(@);   . D6 \! a. m4 L' s7 N$ c
                                if @.Destination /= void then* M( Y; x/ j  A! d$ z
                                        @.Destination.NumReservation :=
/ m4 V) A& _! m) A4 ?) C1 @1 U                                        @.Destination.NumReservation + 1;0 D/ Q- {9 A! F1 i' k1 Y/ q1 @
                                end;
5 Q: f) e$ T+ t/ k3 @8 l                                @.CurrIcon := "drivingHome";6 j) t7 K6 [' p- ]$ r" J, S( l
                                @.DrivingHome := true;) W) a& Y& f$ G6 L9 J
                        end;/ v# c% W8 j$ B2 c4 O- v
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station5 V/ ^. O9 r( k$ r3 z9 V! y9 C
                        part := @.transpOrder;
8 f- Y# a$ ?; E! y/ M/ v) J                        part.move(@);-- load part
7 v: m/ l( B9 d                        @.CurrIcon := "load";" a0 P3 B. r: Q# o
                        GlobalDistObj := part.globDestination;- I; c. ~- R" @0 q
                        assignLObj := rgmanager.rgAssignL;6 j6 P8 s4 b2 e; l) v
                        row := assignLObj.getRowNo(GlobalDistObj);
( l5 R$ Y2 Q4 D9 }$ \, u                        if Row = -1 then -- since 70
5 s; @7 U7 A5 k6 s                                if lan=1 then
% z% O8 z9 K: c( ?0 o& p4 |$ |                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),* q3 L% P- s# T2 z& E* G: m
                                                to_str("in der Andockstation: \"",?.~.name,"\""));3 m# x2 K9 s3 [) K
                                else, b5 L$ Y; O. W, H
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
& P' G; N" \5 w9 C                                                to_str("in docking station: \"",?.~.name,"\""));                                ! z$ z8 P. \! s$ N2 `
                                end;
- z# |" t! y; r, r                        else
' F8 \7 W; C- h                                @.Destination := assignLObj[1,row];
/ @' t# d* J( k$ p7 G                        end;                       
  F& |+ L; g8 m- @. m1 m0 A0 h                        newDirection(@);& v0 z* t# Z, y/ s) O$ o# k' O5 ^
                        @.HasOrder := true;
, b9 W' E* g" o" C  ?- g                end;( [& K! D' y6 |) T& g  }9 }
        end;, _6 q/ {2 ^# k+ [4 P
end;        -- of the method
3 ^) U8 z0 c3 d! D2 B3 P& w3 m
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
; a; B; {- r4 {9 t* Y  m" v( A) X6 R6 z
这是AGV_putin中arrive的method。
1 ], v' H/ }+ t6 D. d6 C
' N* ?! T- v  B$ i当到达物料速度越高时,这个报警更多,
7 g3 R% Y$ B3 ^& K$ d可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
3 E; W) r! A$ z" Q  |程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
, u7 H4 \+ H3 _
# T* m2 C; y6 V* C8 `. m另外一个小建议,就是move,所有的move都可以这样
- r, e1 G7 M9 uif not move() then debug end% a9 h7 ]2 A  y, q; k0 ?' r- t
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
( P$ i2 k$ k: J# f. f* o+ Uplant simulation中的free libraries有AGV模板,
) x7 F9 Q( J( K: @9 u# m里面也有案例。* M7 l1 j7 Y' x0 v. Q- L6 o; |+ m; p
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。% ]6 [. @( [* R6 p; i& l$ O8 Z
& f( S. U/ p* ~5 N( J
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 9 }0 Y4 V2 o- c; X% ^" [7 e: P
# a" [, @: x1 M2 s" q, q
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
  R6 s, [; V! R3 y1 l这是AGV_putin中arrive的method。
5 e) h7 z: Q$ k/ D* [2 j7 @4 F4 t9 Z
当到达物料速度越高时,这个报警更多,

4 G2 ?. T4 m. v9 Q# c另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-3 20:06 , Processed in 0.016299 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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