设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6029|回复: 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'
8 d5 g: c+ J0 V* K6 K* U6 ^" @. G*/
3 g- g' ~' D( H4 l9 Iis7 P$ A" Z8 L. N$ b
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
7 e2 P! j- o1 J% t% b! {7 T& Ado
: d# l# {; X7 W5 L2 ^        Lan := rootfolder.Internal.Tools.AOLlanguage;
; L* g1 F4 Z% K* K        if current = @.Destination -- else return
1 p7 M$ q8 O: j* F        then7 [' r) T7 I0 [: U) B) O
                @.Destination := void;+ E2 Q8 A  p: F+ Z+ q/ c
                if @.occupied then
2 n1 {4 S) a* i  A$ @! T                        part := @.cont;: _' ^" b7 L; q- e3 g: y
                        @.transpOrder := void;, S. ^1 a& o/ z: t5 B
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
- P8 ]8 n/ E$ @; n. w" t% y; z                                @,root.eventcontroller.simTime);
5 `3 c+ h/ K. p7 @                        @.HasOrder := false;
3 U) C- E8 \) J0 f2 t                        @.DrivingHome := true;
4 ^- h3 i+ C* S& v                        rgManager.tryToStartTransOrder;$ x; l; Q  C4 w
                        if @.Destination = void; E* U' F( \) T( j2 M. R  T
                        then -- no transport order for vehicle @
% c, R2 P! D3 U* t: L                                @.Destination :=9 j5 b' O# S" ~5 u' z6 I  J& S# K) q
                                rgManager.nearestFreeStation(@,track.~);3 g) H7 y$ m! ]
                                newDirection(@);   
- W9 X- |: C. ~                                if @.Destination /= void then0 D% t! f( e9 ?# ?' f3 |! b$ ?
                                        @.Destination.NumReservation :=. [+ _# Q# `9 H& ?" n
                                        @.Destination.NumReservation + 1;
3 a. ]9 V2 K& g                                end;* I2 |+ S; B  \% P8 @+ [
                                @.CurrIcon := "drivingHome";  m0 r2 u7 _( e4 |; X# `" }( o
                                @.DrivingHome := true;
" [5 x) C8 w. H8 i                        end;: v$ H$ q0 X  ?9 `+ a3 a
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station+ N. I/ |' i5 F; T; P9 n: x; n
                        part := @.transpOrder;" T  @' u! s) g# p
                        part.move(@);-- load part
1 t. x: Q2 y2 l                        @.CurrIcon := "load";: p! C' b' C1 T3 Q
                        GlobalDistObj := part.globDestination;) j. P/ e3 f5 @" u5 _* x
                        assignLObj := rgmanager.rgAssignL;
  W/ _& k" }( U" U                        row := assignLObj.getRowNo(GlobalDistObj);6 f$ f' {7 I$ Z) k
                        if Row = -1 then -- since 70
0 J/ K- t$ P; {& m  V( o( r2 W                                if lan=1 then
* p( r6 x. G, O0 y$ Q& D                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
4 L0 j3 w/ A1 R                                                to_str("in der Andockstation: \"",?.~.name,"\""));
5 _5 J, P, p4 j7 E- C                                else% r! L5 G. a$ S% V! S, _
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
6 O0 H7 U4 i7 [9 {0 m                                                to_str("in docking station: \"",?.~.name,"\""));                                ; o  c7 r5 s5 e& v
                                end;
  k; `1 a7 Y5 c2 `                        else9 S' l* V  o5 p( d9 _! q
                                @.Destination := assignLObj[1,row];
; c6 o4 E; N$ \" _! R, Z* q2 c$ L                        end;                        ) C  O5 ^7 _8 ^: B2 R8 M# u
                        newDirection(@);
7 o) ?5 O" h5 M0 W# s( l' ]) s& D                        @.HasOrder := true;* O6 V7 `, r/ V) B0 w, ?
                end;
3 @9 P" l: c7 ~2 L; ]        end;
6 I" l! F( R/ Fend;        -- of the method
; S! ~! k9 g0 h. j" t1 ^3 ~
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
2 G$ b: F! O4 U0 k9 `2 a1 G6 P2 z1 E, p2 j) c7 G. g- R! K
这是AGV_putin中arrive的method。
6 Y3 k% A4 u; F+ m- ~5 N1 Q1 k2 d- G" B
当到达物料速度越高时,这个报警更多,
+ R# A$ b3 K/ F5 w  ]7 D; P3 j+ d$ K2 ^可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。  v# Q8 _1 [0 C$ Z" O7 C3 C
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
+ ~( N0 l& m9 |" x. t
/ s5 n9 n& z! p  x+ p+ p& I/ K另外一个小建议,就是move,所有的move都可以这样
) Y5 G* P  J' l6 `if not move() then debug end
# ]$ D$ ~  T$ e& i8 m% m这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。) O# f: m% k/ N6 ]; g6 s
plant simulation中的free libraries有AGV模板,# t' l8 w1 I6 J$ z. ?  |
里面也有案例。; j  C+ O8 d+ i' a& X. O. l
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。0 G$ A; @# M1 e3 j
: i( k  d4 W& k- M, V
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
+ A, o2 r  p% {, y, l$ J: W0 h2 _- p/ b/ [& ]1 s" G& _
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
4 w6 y$ w! Q- `3 ~9 ?: a这是AGV_putin中arrive的method。! Q  o7 I. }$ o" C* i+ t
( t6 g6 t) `0 K( E
当到达物料速度越高时,这个报警更多,
0 c% o& Y8 X( k  G
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-1-13 17:38 , Processed in 0.018645 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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