设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9564|回复: 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'2 g4 b; h+ N, \) X  y0 ?
*/
7 Z6 f/ V2 `% c+ }is( a6 |" G. H! L! c2 R- ?
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;. I( B0 ]5 A3 j4 H# ^/ |7 R  D
do( {6 f) U: D1 J' c& N
        Lan := rootfolder.Internal.Tools.AOLlanguage;
' y( y: X: H- m! l( a0 ~) T  Y        if current = @.Destination -- else return+ n9 `; _" p. V2 n% {
        then
. i  b: E2 R' B- N, Q                @.Destination := void;* u# a  x! Y$ x+ w* U
                if @.occupied then
0 \7 w% Y  n* T6 B4 m5 c. D& n9 K                        part := @.cont;8 p7 p9 i5 T/ x) J: ^6 {
                        @.transpOrder := void;
& Z) o$ n/ q" l+ L, B  T6 U                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
9 b  q$ u7 k4 _; r$ x                                @,root.eventcontroller.simTime);4 J% E2 m/ e. ^& P
                        @.HasOrder := false;
$ f! K" S/ Y0 d: ~2 d# i7 p9 b- t* W; r                        @.DrivingHome := true;! ]" B* `. y3 N
                        rgManager.tryToStartTransOrder;
/ R+ w0 |, x- z: ^" t+ t                        if @.Destination = void
# Q. R; g7 ?' ^# }                        then -- no transport order for vehicle @  T3 D& a; n! c% S+ ?2 U% l( E! q
                                @.Destination :=, r8 z' k3 u# F( I, |5 B
                                rgManager.nearestFreeStation(@,track.~);
* ?8 O9 A% L3 X+ a: r9 V                                newDirection(@);   : y$ }& h9 \9 c1 e5 D. ~3 L$ _
                                if @.Destination /= void then4 k$ O7 z! x. x; M; D
                                        @.Destination.NumReservation :=. m! Q, |, }/ }9 Y, p* D+ {/ Q
                                        @.Destination.NumReservation + 1;
' V- U0 v1 S8 R5 B/ [/ M                                end;
; D- i; o5 f1 U3 O; U                                @.CurrIcon := "drivingHome";
& D  A5 v5 L5 N3 y                                @.DrivingHome := true;7 T8 D' A$ C( M# |; N, d
                        end;
1 N8 a! u- Y; ]8 B/ f                else -- the vehicle @ is empty, both vehicle and part are in the same dock station3 U4 T4 Z, t& p- w* ]
                        part := @.transpOrder;/ ]; T+ B* o" u1 j" x+ M8 ?* f* l
                        part.move(@);-- load part
, n% ^! Y# v" V) N                        @.CurrIcon := "load";& K+ r! r. [( h- i0 n1 B
                        GlobalDistObj := part.globDestination;
% ]/ c1 X7 I4 Z( \                        assignLObj := rgmanager.rgAssignL;
* [2 d: K, r$ K- W+ y                        row := assignLObj.getRowNo(GlobalDistObj);
) z# ~, I! v2 r0 Y5 ~: u                        if Row = -1 then -- since 705 i5 `- x# n- B! x
                                if lan=1 then* h: P8 z7 V7 R4 k& a/ j6 ^/ o( A! Z
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),; Q6 M! G: `: X  ]! y+ m5 c
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
7 f5 p* |% L# _  x8 U                                else6 T9 o) n( w9 t$ H
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),6 P, I) Q5 K7 F/ ^- u
                                                to_str("in docking station: \"",?.~.name,"\""));                                % m% \' r# i" s. {' ^1 k
                                end;( }, P) V7 V) T# y6 c  Y8 H+ P3 _
                        else, z+ R. f0 p+ g8 ~
                                @.Destination := assignLObj[1,row];
% ~& x  E- [5 U. h3 }; t: a                        end;                          o+ r* k5 H- w7 l( d
                        newDirection(@);$ N0 V. X" L# I( I. k9 G$ n
                        @.HasOrder := true;6 w6 y6 A) Z$ Z/ [1 I
                end;9 J1 r, T6 ]/ P: _  u
        end;
1 p$ L+ e1 }2 L* \7 ^+ p" a! gend;        -- of the method
* w% e( _! ?' c
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 1 D1 x4 q; c) c

0 u2 d) j7 c) `这是AGV_putin中arrive的method。4 `1 s# R1 y0 ?( e& f1 j. H

- j: N* l- ^+ |% H1 v当到达物料速度越高时,这个报警更多,# y6 ~& }2 K! s4 p
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
! a; Q& Z8 v" u8 E5 j" {8 j3 n程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?1 e% Z' {: X$ M
( `- P! f) `7 P4 k* ]  H# z% c
另外一个小建议,就是move,所有的move都可以这样
3 N' Y" c) l1 U6 ^( ^: k7 H  v: wif not move() then debug end
0 Y9 z7 r6 ]: ], S; s" s这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。; S0 b  g  w# o4 u5 E, |/ ^
plant simulation中的free libraries有AGV模板,
3 y- c3 y# k  U0 }8 o里面也有案例。  ^+ `  S4 J7 v  T, _! |. v6 B
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
- s9 o3 h$ W+ R5 Z. Z* M
0 ]& T. E5 _; n2 Q我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 : I  m  D+ P# \# S0 s1 x! \4 M
  L1 |* h% c4 N4 ^1 w2 w! k
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
+ w( ^/ l# v5 d这是AGV_putin中arrive的method。* F4 {* i/ j4 N) {+ g3 U! i

2 [$ B  k- D& Z) u" n$ h8 G当到达物料速度越高时,这个报警更多,

) `7 O3 V- A6 k5 A" P+ D3 p: c$ F另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-8 10:36 , Processed in 0.019404 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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