设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6977|回复: 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' K5 n4 o' q6 |# L/ Y, r
*/* Q4 \) g4 y0 K# M2 N! |/ R8 w
is8 ~8 Y$ b5 H& @: ?% i
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;* j, t- _8 h- M+ v1 v' K
do
, |0 n+ y( L9 ?- I( I' F' C( Q        Lan := rootfolder.Internal.Tools.AOLlanguage;: H3 }4 o9 e! v6 {# \7 L  J4 O4 ~# G
        if current = @.Destination -- else return
* {8 {" s9 \  _; G" `+ A" b1 J& l        then* z. F* l! S6 s$ X- z7 n
                @.Destination := void;4 O& a% |; u& c/ {0 |: O9 [6 W
                if @.occupied then$ M* B6 Z9 |% M7 s2 P! V5 j
                        part := @.cont;  C0 @. g) [, Z- e% X. c
                        @.transpOrder := void;; i. Z5 V. ~) r  }0 r6 a# b5 t8 R! Q
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,; _2 u5 h4 o  m" L3 ?. X: f
                                @,root.eventcontroller.simTime);
& ?! n# a: G* J9 q( q9 K9 A                        @.HasOrder := false;$ ^3 @. J3 _! O* }% p4 N, w% d8 g
                        @.DrivingHome := true;# o6 H3 K8 Y1 W/ p8 o5 I' z. @
                        rgManager.tryToStartTransOrder;& U( ^0 R: P/ R+ U( k
                        if @.Destination = void- _# _6 a; t% R+ \+ c, n$ {
                        then -- no transport order for vehicle @
! v/ O$ U/ c7 E& u* E                                @.Destination :=
4 Y1 K$ Y+ V, `( m                                rgManager.nearestFreeStation(@,track.~);
4 d2 ?4 S8 S' P5 _( }5 B                                newDirection(@);   
! |! [- C5 \+ ^7 {* u6 v4 v9 t                                if @.Destination /= void then
5 I! j1 z, J, \/ N: g& O# U5 l, c4 P                                        @.Destination.NumReservation :=
1 }+ D3 B* K: ^/ I' j: m+ Q5 N4 W                                        @.Destination.NumReservation + 1;
! P2 _7 v' z0 o& e3 ~- E' T) J# u2 z                                end;
" ?& P+ }6 |' F: p6 c8 S& R. \% S3 H                                @.CurrIcon := "drivingHome";
* Q% G: @# O4 P& V, a# a                                @.DrivingHome := true;
) [% k- q1 Y& s6 t                        end;
& z, ]3 K% g+ g# C/ z' m                else -- the vehicle @ is empty, both vehicle and part are in the same dock station+ z/ W; @) c, o$ n5 f& A2 ]# N
                        part := @.transpOrder;
* g6 _4 L) W. ?, J* f% p3 k                        part.move(@);-- load part  Y( V, f. C2 ~5 r$ {
                        @.CurrIcon := "load";
$ I" \# H* Q: `. r. `                        GlobalDistObj := part.globDestination;, ~/ N3 g; V- U9 k4 R3 W" J/ |
                        assignLObj := rgmanager.rgAssignL;' B: V0 Z6 I. n2 ]/ k
                        row := assignLObj.getRowNo(GlobalDistObj);
9 |6 ^; o) }. O7 @& R                        if Row = -1 then -- since 70
6 i  W  {$ ?, i3 C# a# t                                if lan=1 then0 |3 ~3 {+ c/ f! z4 J4 ?, F7 p' O
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),4 t  m0 Z+ V3 X  y+ B  x2 n
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
- Q, E% b# {" k1 |                                else$ l3 g8 ~1 ~2 {3 P+ V  h
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
0 w  e" }  x4 g                                                to_str("in docking station: \"",?.~.name,"\""));                               
* j  @4 f2 |8 F9 N: n# Y' i- `$ T                                end;7 E7 D! p8 t5 N
                        else' S$ O! J9 y& p  K" x
                                @.Destination := assignLObj[1,row];
: |; h* J" c3 t6 z' R1 Y2 N8 Y                        end;                       
8 \6 p( r$ T$ D; k# L+ ]                        newDirection(@);
) y7 H, {# \! e1 {                        @.HasOrder := true;
3 Y. r9 u9 T, q                end;
9 h' G3 L+ o* {9 E% d/ c/ |8 f        end;
3 `# u: s% i, S: c: M% \end;        -- of the method9 o5 @' w+ a" j) z# a. d
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
% [  |% d/ _1 O5 w. ?- j$ e
4 m+ z7 a- o% F( P6 c这是AGV_putin中arrive的method。
0 W! X; H6 F7 {. C, \
1 I: Z0 y: l: T+ }; j: h当到达物料速度越高时,这个报警更多,9 ~. [. d6 l% g6 s# `1 b1 R  U
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。& {6 J1 L* @& F
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
  {. b$ b0 m1 |4 o0 ^. p
0 W. o( C$ j/ U0 _另外一个小建议,就是move,所有的move都可以这样
* _- i9 f* R- o2 oif not move() then debug end
* o* r  a. K( ^! t- M这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
9 Z( i3 [# f6 F+ j" Qplant simulation中的free libraries有AGV模板,
6 E& T- ^5 N& }, C里面也有案例。- A( q- S2 L$ k( `( P& M
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
  t& s3 z% A. f" |* K0 O
1 h; m/ S( n' C( J( h我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 ! t' D6 E2 X# S/ F! ^
9 N/ |4 `  D9 D" O* N
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
+ ^- \4 x9 k7 l) k& r这是AGV_putin中arrive的method。
0 D& u3 Z+ H: g1 _& h& }9 T: s; Q! T% @
当到达物料速度越高时,这个报警更多,

( H/ Z( {6 i: C( L3 d3 z. Y* d另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-9 13:52 , Processed in 0.016509 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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