设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6162|回复: 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'
0 o8 s; ?6 q. L; G. L. S9 [*/" h: ^6 v% H- C1 j& m6 z
is
8 H* u# `5 o: X, A7 L        part, GlobalDistObj, assignLObj:object;row,Lan:integer;7 u4 J6 f5 d4 O, `
do# Q- ^. q1 p* O, w  j3 T4 H( [3 d
        Lan := rootfolder.Internal.Tools.AOLlanguage;
  R- X0 f+ D* B: K0 K! |6 e        if current = @.Destination -- else return( K- D7 A3 D" C4 r
        then
2 B$ S4 s$ f* e1 b1 R% ^8 H1 Q1 R                @.Destination := void;  D* x4 r2 k6 ~! q9 T' U
                if @.occupied then, M2 {2 t' J' ~; S/ H
                        part := @.cont;* C, _- B+ y( C7 x7 k
                        @.transpOrder := void;( B9 ^/ ~0 o# O) C& x
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,4 ?! X: V1 r, I3 ^
                                @,root.eventcontroller.simTime);* I/ G& y3 x* E% E
                        @.HasOrder := false;+ ^) D" \# r2 ^
                        @.DrivingHome := true;
7 c- i, {- [* V  L$ V6 S. [* p                        rgManager.tryToStartTransOrder;. [, x$ b& l+ q" J5 C8 g& k# {% ~: o
                        if @.Destination = void- f) `; y) j% d0 R
                        then -- no transport order for vehicle @0 w3 G, F* R, n* k7 ^
                                @.Destination :=
5 P; ?# R9 Y% _% I3 j                                rgManager.nearestFreeStation(@,track.~);
2 G7 m# l8 o6 D                                newDirection(@);   
, @5 d9 E6 @# v0 H* {) J4 k                                if @.Destination /= void then
9 F" o) o; F, T6 P5 j2 N                                        @.Destination.NumReservation :=
9 A* S# Y5 ]/ C9 k+ K                                        @.Destination.NumReservation + 1;
; e1 C: N) W# w6 n+ m                                end;' C/ M/ F) t2 M" }% h
                                @.CurrIcon := "drivingHome";
; `& M$ O2 N! I1 v2 c! N                                @.DrivingHome := true;
2 M: }( v) r# ^5 d5 h& A, s                        end;
0 X# A' S2 p8 j; o                else -- the vehicle @ is empty, both vehicle and part are in the same dock station! z% O1 q- w9 q% c3 u- T
                        part := @.transpOrder;
, i4 C& B7 u! I4 X                        part.move(@);-- load part
  G7 z. v" T% ]5 z* k  a                        @.CurrIcon := "load";
5 }+ s$ q/ w- f/ e8 F                        GlobalDistObj := part.globDestination;
( u# h1 m6 c4 [2 @. _                        assignLObj := rgmanager.rgAssignL;) E" Z9 D2 O0 J( n/ M6 `7 z- y/ {" z
                        row := assignLObj.getRowNo(GlobalDistObj);  K9 g- g8 j7 p1 i7 C
                        if Row = -1 then -- since 70
8 l' {  f3 t3 w5 o$ g                                if lan=1 then# y/ \/ O3 g; W& \
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
/ E9 I% q! J* d* s9 X$ y                                                to_str("in der Andockstation: \"",?.~.name,"\""));
$ }" N' q% T. R( S2 i                                else
$ [* g- a" M' X) R, @% T                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),3 }% ?4 Z: V/ y2 z  F6 _
                                                to_str("in docking station: \"",?.~.name,"\""));                               
+ c9 `. c' U  T. j& q                                end;' Q9 e) t) q" [: p6 Q( L3 }
                        else
" H& P; V# f6 i' I                                @.Destination := assignLObj[1,row];
, F/ M# B+ W* |                        end;                       
# Z8 ?* \6 C# v' J$ Q                        newDirection(@);5 l# n. v; t6 E
                        @.HasOrder := true;
& O0 `2 S- i7 W% U4 e+ W4 ]                end;4 m9 T  ?/ c  r
        end;5 x" H$ y5 g4 p1 k% C
end;        -- of the method0 E1 k7 j) p8 r2 f$ }! o
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 5 v+ C) F+ {. Q: R
& E0 Z% K' v: @6 @1 t
这是AGV_putin中arrive的method。) p9 e- I& e1 S
0 X9 E0 x, g4 f# h; Z
当到达物料速度越高时,这个报警更多,' Z6 @4 A9 @! W6 G6 v8 f" w
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
, o3 i! v( y8 A1 g9 C* o7 p6 o* x程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?3 |1 U! X$ c6 C% f+ [

* G9 z7 F+ v4 g! P, o$ P另外一个小建议,就是move,所有的move都可以这样
6 C. z! \6 W: O- p% w: nif not move() then debug end5 E% Y9 `4 m  f1 {/ U% p+ B8 i- P$ B
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。. {# E" s: D' W- F. }& Y# F
plant simulation中的free libraries有AGV模板,& {5 \: G1 m' K
里面也有案例。% g+ u1 |& J( ?/ `
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
$ F* ~% y& j% r" _2 Z
" B! {  m. g% i5 w2 u) h' s* `- P我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 + {9 L1 y" R5 ]' a! J5 F% I9 h7 t

. X7 z8 A: l0 l那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
* J$ V/ g4 }' d' v+ F  d这是AGV_putin中arrive的method。& M7 {9 o  Z$ i0 E) j

7 `9 q* N; G- d) x- \# P1 v当到达物料速度越高时,这个报警更多,

' }7 ]! J; y+ S4 C8 \3 W* Q4 c另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-1-22 07:17 , Processed in 0.018741 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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