设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8116|回复: 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 r3 D' s+ F7 n5 a- t
*/
% i; f+ N" Z$ N/ Ris7 S$ n" M8 A8 j0 H% |
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;1 B$ V4 t, m+ G& M7 w
do
  S  @/ f- e1 ?  D1 H" I" m7 {4 T        Lan := rootfolder.Internal.Tools.AOLlanguage;
% I4 `+ L8 J! {: x7 [* s        if current = @.Destination -- else return
" y2 h* P3 q# J0 Z  ^9 c* f* }        then
, V( P5 d( I3 u! B8 e                @.Destination := void;
0 t; f" g$ x5 G- {: V  _                if @.occupied then& o' R% N( k( Y. ~/ T
                        part := @.cont;
, j$ N, V1 B; i- H                        @.transpOrder := void;
0 H5 I9 a# K) C/ K8 h, U& m                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,- @% G* `  B$ d: a* Y% Y; d! S8 \
                                @,root.eventcontroller.simTime);
6 _; @+ ?' t3 y6 l" s2 i                        @.HasOrder := false;
) h9 k! c) e' X5 c- t3 `                        @.DrivingHome := true;
' _9 I- l3 {( \' c9 {* H, G4 o                        rgManager.tryToStartTransOrder;
: a6 W' E7 M5 s% D: t" m                        if @.Destination = void
/ D* a" P) C7 Z9 O  m8 m4 T                        then -- no transport order for vehicle @: i: B4 U% S$ t6 Q
                                @.Destination :=
) j6 {6 {6 d" U7 M: X                                rgManager.nearestFreeStation(@,track.~);9 G9 K2 b5 ?- f% q  V1 U
                                newDirection(@);     F; A9 E, |/ i
                                if @.Destination /= void then
4 y  z2 V8 ^' y- b2 d( h                                        @.Destination.NumReservation :=
% {  A' h9 l8 a; m  k* G                                        @.Destination.NumReservation + 1;
" p* q- }% [" _# [9 a                                end;
0 F0 {& c) |1 K+ m4 w, _                                @.CurrIcon := "drivingHome";
# E9 W( @8 P. H5 p  v1 X                                @.DrivingHome := true;4 A* j  Z- L0 P- R7 u9 d9 u% D
                        end;
2 f7 L) m. U5 w7 S+ q5 d                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
5 r# F: S) W1 W  E- ?/ N$ k4 D                        part := @.transpOrder;
' M8 K, o+ M$ o  @' R. n                        part.move(@);-- load part
" K8 B* @& `6 _/ }/ A' _% q5 b                        @.CurrIcon := "load";/ S2 d! m7 d3 d
                        GlobalDistObj := part.globDestination;
" |! ~; f4 v# R7 t! u) |                        assignLObj := rgmanager.rgAssignL;2 i  K0 \+ R$ m9 M9 o2 `9 j
                        row := assignLObj.getRowNo(GlobalDistObj);
' |+ F. _9 V6 N  G                        if Row = -1 then -- since 70
. w# q5 a0 U  @1 X9 U                                if lan=1 then
4 d0 f% t+ {$ `) v                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
1 i6 c3 U& ]) g! y/ Q. p  `% A                                                to_str("in der Andockstation: \"",?.~.name,"\""));
, n, I7 ^. Q# y' H                                else
" [- P" Y7 [4 E1 R9 W                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
: _! R8 ]& [- S, @' D                                                to_str("in docking station: \"",?.~.name,"\""));                                / D, k1 `1 }. K/ Q
                                end;
! Z7 J$ W# e5 h7 V+ `; g                        else
7 L/ @2 _6 i: X: \$ e+ J                                @.Destination := assignLObj[1,row];
& q1 E; y, \2 x2 v; z                        end;                        . v' g2 r3 L" A5 N
                        newDirection(@);" V5 _5 U% F/ H* Q% x# j7 E
                        @.HasOrder := true;8 \2 @/ |7 x& W+ O& `
                end;! U) |1 B+ Q; G0 S, k9 z6 e( ~
        end;
* Y: t' i0 g( V$ _" s! cend;        -- of the method4 D7 l+ i/ p# X. _( n
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 ( d* E& X! t7 \% x

4 s. r- c3 f2 H. P" Q% N这是AGV_putin中arrive的method。! x& E# v0 u: e9 K

2 M/ x5 W! S3 [2 ^当到达物料速度越高时,这个报警更多,% k2 o0 M; m4 `
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。" q3 N% L0 i& G& F4 ^! g
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?$ l: [) C6 r" t! I1 @

8 h. D2 Z4 o3 }8 e! [另外一个小建议,就是move,所有的move都可以这样
% _! S* u' ~% v* l% rif not move() then debug end
7 [0 V- o8 ?% w& E* R; V0 d( s这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。' r: w9 u" ]4 z5 ?1 P$ t
plant simulation中的free libraries有AGV模板,/ c; r8 I4 g4 S
里面也有案例。
. @% w3 Y# I5 F  S+ w8 u我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。9 i7 u! q* p. \; M4 h9 c: K

1 |* U: p; Q6 D1 s) |: l4 V我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
% w5 q8 Q8 S* Z* B" Q. z6 r( S
# R  ]: F5 m4 p那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 * X; @7 K, D0 A3 K, z  S7 Q6 S9 ]8 b: K
这是AGV_putin中arrive的method。
3 _$ k  G* X# R9 y" X# D. F$ O2 M1 T$ {
当到达物料速度越高时,这个报警更多,

9 ]% e( g1 p7 R1 i+ S  v( C另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-15 16:19 , Processed in 0.019793 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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