设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7579|回复: 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'
6 S1 L7 l) s9 d0 g*/8 G% C3 T: O3 [
is  n7 p: {2 b; P7 o
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
" p- Y& D  u9 t; c  Udo
7 j- T- }( Q* ]9 @        Lan := rootfolder.Internal.Tools.AOLlanguage;
, n( b4 l$ k" ?, x2 G' x        if current = @.Destination -- else return. a6 j8 w6 k" y( s8 E0 g- N! j7 I& `
        then
  P& `" z$ o$ k                @.Destination := void;
, w# A* h$ E. e/ C3 x. W                if @.occupied then
* `6 h8 f$ R( Q: ~$ |3 ~+ l                        part := @.cont;; p4 e8 B+ Q& a7 W1 i4 C+ {  J. C
                        @.transpOrder := void;
: a$ z/ F/ I4 l: C2 K                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
. b3 a0 b- B! |8 m                                @,root.eventcontroller.simTime);
) K4 V0 z/ v6 D+ _3 x' b                        @.HasOrder := false;
/ f, ^/ v& d9 o- I                        @.DrivingHome := true;
! n, m, j7 v" }' D5 c+ x* V$ D                        rgManager.tryToStartTransOrder;. i! Y+ A8 `/ ~' Q* I, y
                        if @.Destination = void
! M1 D/ j9 c6 i) c7 M/ M) O8 m                        then -- no transport order for vehicle @& d/ `9 x5 M4 {5 ~0 k
                                @.Destination :=
4 {( F6 F8 \/ |/ C                                rgManager.nearestFreeStation(@,track.~);
. i$ y! w7 n1 G1 i) w, W; l8 R                                newDirection(@);   9 c9 v. q% P+ S* k  K
                                if @.Destination /= void then2 v. d3 m3 G# i& P+ S
                                        @.Destination.NumReservation :=
) {5 ^$ J) ^* s3 ?# ?' h$ E                                        @.Destination.NumReservation + 1;! m' `# w, u. q) U4 e
                                end;
6 B& H7 }; e+ `! h5 R5 X                                @.CurrIcon := "drivingHome";1 g9 {- H9 K+ a: B) \5 W# Q3 |% X$ z
                                @.DrivingHome := true;
* ^! V% \9 z& A% ~" G- k                        end;0 p( s: X# b7 S
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
6 U: u% Y: W: t$ p" v5 N: B. ~                        part := @.transpOrder;
6 D3 y3 O4 Q1 B# G                        part.move(@);-- load part
  P4 \. g3 f- {* b3 V9 [% I                        @.CurrIcon := "load";  ~, Y# `: Q8 G. s- n% K, m
                        GlobalDistObj := part.globDestination;0 n/ G" ]* Q) u% X& x; P, {
                        assignLObj := rgmanager.rgAssignL;
- P" q, l3 b: b+ ]$ A                        row := assignLObj.getRowNo(GlobalDistObj);
2 V! j4 }  J" N                        if Row = -1 then -- since 70+ Y3 {+ P" b- T. |$ ^% g) h
                                if lan=1 then. c: Y0 F/ v, u  r7 a- A
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
% ?8 O6 N, X& Z7 V* f                                                to_str("in der Andockstation: \"",?.~.name,"\""));/ r# Y% F: a8 V2 l6 C
                                else
; F3 _% k; h2 @% T& A                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),8 X$ ^& z; ^$ U+ D
                                                to_str("in docking station: \"",?.~.name,"\""));                               
% m6 i9 [! v- P7 N( K$ m                                end;
; x. q/ ?8 g3 i! ?, z; i. C! ^2 h                        else
! j8 l: @( j8 R, I1 D                                @.Destination := assignLObj[1,row];
* z) W: w& y* k3 P2 P                        end;                       
* ?, N+ @' h- L7 V. p! p$ ]                        newDirection(@);, Y, S5 J0 T# q7 H' H4 u* K; G0 Q2 \
                        @.HasOrder := true;
6 k; K& Q0 \0 o; h$ v& E                end;
" c# i# ]: O6 r' X* Y6 V1 n, L4 q        end;
( V  K% r& P) ^1 E2 b; O& Xend;        -- of the method2 T8 l) X. I! R; }7 r# J* o& R
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
. ^' v, T0 E$ i8 k
$ I8 j* p3 {8 l. ?6 e+ ?7 ?  z* ?这是AGV_putin中arrive的method。. p0 p. K2 l4 g/ Z7 G
( N( d  {/ b5 ^2 Y2 x
当到达物料速度越高时,这个报警更多,
( i3 b- Q4 t- ^1 m6 u可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
7 U7 C5 J! h' h程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
8 L/ Y# w7 R7 O) y, |; c2 k# |( R
; w# K, v; f" o  K另外一个小建议,就是move,所有的move都可以这样
$ X2 m" C5 Q/ D, j" C& `if not move() then debug end
8 h0 {+ H" g. F9 r  [这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
; ~) G' r$ R. P! j2 R; j  Gplant simulation中的free libraries有AGV模板,$ A( o- n8 ]8 B6 E% g
里面也有案例。# ~6 {( z% T  z4 @, Y) Z
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
( c2 G: e5 N' w" U/ u  r) X! Q
0 v- h- x0 @5 x% }我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 4 w" ~" J. T$ g7 R! ^( ]

6 q' l4 J  n3 h. i* I# k那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 6 l( w. w5 B9 Q$ t' b
这是AGV_putin中arrive的method。
; h: S+ t8 @, E' d5 ?: w( N
, Y: u: X8 |% V5 E当到达物料速度越高时,这个报警更多,

; i$ C' ^2 B2 q- i另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-18 13:38 , Processed in 0.027674 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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