设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8953|回复: 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'9 S; \; H# u/ ^
*/% m# n: c) K+ e( L
is3 E% v, X$ C6 v" ^. r3 f8 E9 A: N
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
, t( Z# L9 H# Tdo
2 q9 L4 S9 b/ `3 T        Lan := rootfolder.Internal.Tools.AOLlanguage;
" n+ f0 k; r0 y1 z0 [& m        if current = @.Destination -- else return
* F$ t% @( d/ U0 U% {        then# F! m4 }* V, d6 l
                @.Destination := void;0 w/ r4 u& o+ H7 K. M- Q/ c
                if @.occupied then
4 w! m" F/ {9 K* b                        part := @.cont;7 |6 X$ W& B# ]$ ~4 T9 g/ B' P( g
                        @.transpOrder := void;0 d3 A8 ~8 A# X+ k8 y" l( S3 G
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,+ {" v- q/ o: d
                                @,root.eventcontroller.simTime);
, N" t/ F) R3 T                        @.HasOrder := false;  E6 ^1 O' W- m1 {4 v" L, y
                        @.DrivingHome := true;% l8 h2 O1 V: [- d7 k$ @4 x
                        rgManager.tryToStartTransOrder;
" }% s. y5 t( ]& Y8 y                        if @.Destination = void
9 Y& V6 s# w, d# p5 \                        then -- no transport order for vehicle @0 E3 b0 A8 u% f. X8 p
                                @.Destination :=7 P# L4 s! f3 e5 j7 S
                                rgManager.nearestFreeStation(@,track.~);6 _5 g4 \5 j4 @3 I% b
                                newDirection(@);   9 V/ Z7 D9 q% X7 _
                                if @.Destination /= void then& P  {6 E8 Z* `9 u, l
                                        @.Destination.NumReservation :=
! w, V/ p+ C) s$ B7 q% J7 n+ x, J                                        @.Destination.NumReservation + 1;
* y( h. r. Z6 ~& d8 K' a# A% d                                end;
% T1 D7 w. Q2 a: |# J. U                                @.CurrIcon := "drivingHome";
9 J1 p/ j& _1 s) J                                @.DrivingHome := true;9 ^6 K4 w+ V; N- c% L& D
                        end;
% H) Z. H* L, E                else -- the vehicle @ is empty, both vehicle and part are in the same dock station. ?" X: _9 w5 d! ]0 F% j
                        part := @.transpOrder;' d, E9 c# a$ Y0 S, U$ O$ q
                        part.move(@);-- load part( K: V# D0 Y( z/ {& C& ^
                        @.CurrIcon := "load";
. u8 D0 y/ W1 F$ D, i                        GlobalDistObj := part.globDestination;
  o+ H, h- X/ F7 o) {" D& k1 \. U                        assignLObj := rgmanager.rgAssignL;
- _! h0 M8 N" r; [                        row := assignLObj.getRowNo(GlobalDistObj);
) X4 M* t+ f* \% h( I                        if Row = -1 then -- since 70
" h! ^, `8 g" P6 G                                if lan=1 then  s6 s) e6 a* A) G8 ]8 C# B. W; P
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),: G* P7 ]2 x- B5 q
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
4 S/ K' l1 O. q9 G                                else
3 [" g2 T6 x7 w/ [3 X' e/ C/ P                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),* L) p0 u, y  }. s% B, O) ?
                                                to_str("in docking station: \"",?.~.name,"\""));                               
9 `; c7 P* E' d2 Y1 E                                end;4 d7 w" F2 _: q* I+ B+ e
                        else# [5 M  F2 y# i3 Y$ B
                                @.Destination := assignLObj[1,row];
  y7 n3 S& ~1 p% U6 I( ?! g, C                        end;                       
) O! E/ D. `4 K, Z                        newDirection(@);
9 F, F8 l- t1 R                        @.HasOrder := true;
( f2 v. ]$ p" E. i2 e9 V7 v1 ^* v                end;
3 ^; Q, Q- @# k5 ~! ~' q# X$ n        end;
3 R7 ~# K9 l! yend;        -- of the method
, {: Y0 O5 p4 `$ O2 ~6 t
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 ( u4 R# v5 i+ r" v9 Z) Y
2 o% k/ h- d9 T+ s: W, }; L$ `$ L
这是AGV_putin中arrive的method。, z, c) A7 ~8 e. \- H/ p
# Z! L1 P! P2 P& a5 D3 \
当到达物料速度越高时,这个报警更多,: x: ]. |! C: g5 k1 w
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
' M; e+ i' A* A9 t- w程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
9 i" p$ L* F/ W; r* j7 j# n
' X% K& `, ?" u3 F另外一个小建议,就是move,所有的move都可以这样
) \. r9 }0 l: ~! @+ Q: Yif not move() then debug end
( K2 U: B, t& U7 G6 |这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。7 ~) q: S3 E3 X" A$ {' N) R9 V6 s
plant simulation中的free libraries有AGV模板,
" O3 G5 T; Q. m" ^+ U里面也有案例。6 o! @( z' Z* O/ s; B* p
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
- }0 y. y, X; Z2 G/ W. u- t6 ^( U6 X# v3 h& \  j7 R; T1 k
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
/ i- |$ ~3 x6 P) {8 N9 s/ N
4 y! G0 u, m$ E, q' b4 p那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 . k) e8 n/ }) H' \% @2 \
这是AGV_putin中arrive的method。+ f0 [  E& g8 j) Z* x$ d

9 O( p" C2 \$ b/ T, c. k当到达物料速度越高时,这个报警更多,
7 r" ?3 Q& a( {- ~
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-7-6 02:10 , Processed in 0.015740 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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