设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7460|回复: 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'  u+ r/ ~  a0 z1 t) L- y5 X* a; ~
*/
5 F: S0 {0 I5 K+ q' O# Ais# F* E; ^1 p5 y" ^3 S5 m
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;; V7 v3 h/ `2 P
do; i+ x% C- K5 J' X0 i  M6 M
        Lan := rootfolder.Internal.Tools.AOLlanguage;: r9 O; e8 H- `% R4 I
        if current = @.Destination -- else return
$ o2 T  e) J3 G8 k. E) {  R        then
5 N  [5 m& K8 y0 |$ q/ t                @.Destination := void;2 C( u4 W7 f8 A8 O7 e7 {
                if @.occupied then
4 `1 N! u9 m! e3 a4 f                        part := @.cont;
6 T& L6 g1 N2 w0 [  {2 Q                        @.transpOrder := void;/ K6 F0 e* d, r& d6 e6 `5 i+ p
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,( i! [; R6 x% w( z0 G3 B2 f3 M
                                @,root.eventcontroller.simTime);
6 R/ \" o3 n) B# g  ~: q! T8 d' [. D                        @.HasOrder := false;
6 u4 z4 `. K3 p/ ~9 A7 G                        @.DrivingHome := true;+ u: e' p6 b* Y% |
                        rgManager.tryToStartTransOrder;2 n0 M8 b* |) U# T# N3 z
                        if @.Destination = void% @. N: [+ m3 T( p
                        then -- no transport order for vehicle @
" m# u# |+ E9 I, Z; B- t$ V                                @.Destination :=$ F) v* |- N! z- o1 S" z
                                rgManager.nearestFreeStation(@,track.~);6 l) }; a' z: Y9 e' Z' ~$ T
                                newDirection(@);   
2 D) p% b3 ?/ G# D& q- e                                if @.Destination /= void then& T! o) T3 }8 \6 i  P, o0 X
                                        @.Destination.NumReservation :=
& a# X  r, d" P. z4 T( g3 X( F; d                                        @.Destination.NumReservation + 1;
9 n: R' L9 d7 i9 x! u, p, Y+ T% e                                end;
0 J% z+ j( \+ f( L                                @.CurrIcon := "drivingHome";
# `$ X& n, f3 `8 W1 \/ ^                                @.DrivingHome := true;
8 o& m3 `- p3 E9 Z- L                        end;
3 j" O2 P) D5 V( \& v4 R6 g  Z                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
8 @' f4 S( P. }1 V, l8 L                        part := @.transpOrder;& w( {) a1 @% m: Q7 W+ T
                        part.move(@);-- load part
( A/ N$ Y5 N0 u- S                        @.CurrIcon := "load";
) I2 y+ Q3 S) e( c$ s) X                        GlobalDistObj := part.globDestination;
' M1 w8 p: w8 h3 Q- D' l. T2 V5 F                        assignLObj := rgmanager.rgAssignL;
1 n' ^4 ^- d" d                        row := assignLObj.getRowNo(GlobalDistObj);: _. w  p; w! `$ k5 A2 S
                        if Row = -1 then -- since 70
* f) `- T8 R4 T; {) v                                if lan=1 then
9 W3 W4 f9 f! \4 K% m1 o$ R' f                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
% t6 M* U' Y% {& K$ M: d" ~% ]7 |! D                                                to_str("in der Andockstation: \"",?.~.name,"\""));
4 m; j+ r8 w0 b. u                                else
1 S$ ~  w' f2 ?                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),6 {) b) u+ Q$ W% g' T- s
                                                to_str("in docking station: \"",?.~.name,"\""));                               
# e; d" u0 Z1 r: d! w                                end;1 s3 ~3 L& e; U  M3 D+ ^
                        else
0 _1 D* F8 I" C0 _" u                                @.Destination := assignLObj[1,row];: c) Y: I3 i! o; N1 I
                        end;                       
' j7 f  ^' c- A3 N                        newDirection(@);
+ @$ h, s9 O$ M                        @.HasOrder := true;
; o) V' c$ e8 t! s1 N6 g7 e                end;  e! F6 o1 \# G' J
        end;0 W1 b6 t( H3 n& P
end;        -- of the method6 N- U2 r, Y2 M, A+ c4 @, f
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 6 r" C4 V$ J) Z% m* y1 ]
/ l9 Z; G& P$ _+ E
这是AGV_putin中arrive的method。2 `/ T- |/ y- t& ?

+ D. O  M; O- l9 C+ g, K3 _' a# C# k当到达物料速度越高时,这个报警更多,
5 U( G$ I" m. c3 b1 |" }可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。: g- h; U) l# t3 N2 A3 F
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
- X% @# c4 b/ J  D
! A' |. e. i( ?( R4 S5 V- s* u另外一个小建议,就是move,所有的move都可以这样5 c2 p8 g" ]# q
if not move() then debug end4 h( I% A0 d, h
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。4 n0 }+ \$ z% q& M  E/ v
plant simulation中的free libraries有AGV模板,% `3 S7 K5 Y5 W! k$ r% M8 z
里面也有案例。
" N- u0 F3 m+ w: W我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
" Z; s! F/ h4 y; |' L. N
) ?' V2 I( D# w- [% `' `$ ~+ O1 Y7 T4 a; I1 ^我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
: Y' A+ i, p" H6 F7 R# ~$ e4 }  b6 k* c* A& T, D/ Z% I( j
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 $ v4 N8 ?7 p) n4 s0 [: x; g( V# n
这是AGV_putin中arrive的method。4 D, A/ q3 M0 j8 @

! n* z$ Z' t7 Z7 @% P' |+ K当到达物料速度越高时,这个报警更多,
: j3 J" l  {8 |9 X' F+ n+ v  _
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-12 20:14 , Processed in 0.017941 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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