设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6702|回复: 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'
) d7 {9 C2 `, S4 e, ^*/
" d/ |! {' ^' Z5 |is
3 J1 X$ W3 |7 L: r% j        part, GlobalDistObj, assignLObj:object;row,Lan:integer;- ]; N1 r, w7 o5 ^: K2 C" a* e
do9 x1 J+ f, V; o  q- {. _8 ~1 k
        Lan := rootfolder.Internal.Tools.AOLlanguage;7 T7 l3 |% b# r+ c3 q! D
        if current = @.Destination -- else return/ ~% Y& Z6 }7 m5 t1 V
        then
, s# J# p/ y" t- A7 _: O$ j- T                @.Destination := void;5 L0 |& _$ V+ N6 M" E
                if @.occupied then1 Q5 {0 W2 d6 A; V
                        part := @.cont;
$ q! j2 f' A2 ]                        @.transpOrder := void;+ \. K) u" R% ?+ |+ b0 A* g
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,, {1 J& s: L- p$ m3 n8 T1 I
                                @,root.eventcontroller.simTime);  e+ n5 N* f, a6 A3 E- n
                        @.HasOrder := false;
( Q* O5 G- H3 ~) Q8 p                        @.DrivingHome := true;5 x  t0 V8 U' o, t% \
                        rgManager.tryToStartTransOrder;
4 h3 {7 e4 r9 ~" O: a; v                        if @.Destination = void* b2 E& g& e( J( d
                        then -- no transport order for vehicle @% F$ }5 L1 l! a6 I6 p. w
                                @.Destination :=
3 O$ O6 |" X' z9 b, M, d                                rgManager.nearestFreeStation(@,track.~);
) V$ s9 K) D" l$ T                                newDirection(@);   $ ?" }% D* K* Z& R9 C8 M% b! G  e: d
                                if @.Destination /= void then
7 ~% x2 A! |0 {, K2 I                                        @.Destination.NumReservation :=
. g# C0 Y+ @; K2 E' P9 C                                        @.Destination.NumReservation + 1;
+ \& \, H2 x5 O9 O  h1 G                                end;$ l& `; |9 j3 u- @. B
                                @.CurrIcon := "drivingHome";
" B- g4 y5 f0 D2 O, P. G; G3 j8 X                                @.DrivingHome := true;
* D# C. h8 ^0 F                        end;
' C; @# v* I6 n" i                else -- the vehicle @ is empty, both vehicle and part are in the same dock station) E: Z2 Q$ ]0 z' U! @7 I# U6 h4 h) Z
                        part := @.transpOrder;
$ v* ~7 ^+ Q! p* Z# {                        part.move(@);-- load part
; U* Z0 l6 z# t7 ]                        @.CurrIcon := "load";( @/ `4 A" }* U9 W
                        GlobalDistObj := part.globDestination;
. K" M7 s2 t2 m  L4 f7 {/ r                        assignLObj := rgmanager.rgAssignL;% \6 l/ Y$ U% t& z
                        row := assignLObj.getRowNo(GlobalDistObj);* Q& h) Z, x; L! r3 c6 @$ M7 @
                        if Row = -1 then -- since 702 \+ F- {. Q& x0 J# J9 L
                                if lan=1 then
; r! g* X7 N% [; e; g; \1 N& H                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),7 z2 ?2 S: d. U- v  f4 t
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
3 l5 m! P7 V5 V. H6 b                                else
& L4 g/ P! n0 g2 J# b! e( d                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
- h0 V* }* l4 T1 O1 D+ O7 g( d1 D: W, V                                                to_str("in docking station: \"",?.~.name,"\""));                               
3 _$ K: E, B' }& T                                end;
; W4 s3 k) Q+ Y  _  v/ V7 D                        else
, F- [) F3 K; f" Y! ]! G: x                                @.Destination := assignLObj[1,row];7 t2 S) V$ S7 W3 `1 c% Z
                        end;                       
6 }* e, h. \7 E1 t                        newDirection(@);& _) A! i" D) d9 m+ n2 P$ C- b
                        @.HasOrder := true;
/ `! q. _  r/ Z# q8 S                end;# Y$ C) T7 G; @' |/ P$ j4 {. G$ d
        end;
- X# x* T/ U" `( |/ X( G6 Mend;        -- of the method+ B& U7 l; f+ F# w& c
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
' K. ^' y8 W0 E  z6 ^
. q; S" `  U0 t' k这是AGV_putin中arrive的method。0 m3 L& j' v! q' k( k
( g1 v" y/ s2 i1 r$ [
当到达物料速度越高时,这个报警更多,
& }& W" P4 U" K7 f5 X1 y可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。! ^6 R+ R1 U- r
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
( }1 C3 q9 \1 J' ^6 ?
+ g$ _8 m6 N/ y+ B' M另外一个小建议,就是move,所有的move都可以这样
: j- G. b5 I* d/ V2 dif not move() then debug end
: B$ j& v0 `0 c9 f这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
2 w: l% b' F% d8 ]plant simulation中的free libraries有AGV模板,
6 ?6 s' \5 Y$ \* q% \" n3 C里面也有案例。
. h: {* S7 Y4 d' u我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
% V- g6 F9 e, @2 X" s. h, Y/ o# J- ?, I! z
# q9 z. l; [) y, Q, M  W2 k我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
# r" N" t6 w" ^- y' |; G9 j( ~- r1 _2 c  d" i
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 / }. e$ q! ?' Q" H( ^
这是AGV_putin中arrive的method。6 e* B2 w  w; w+ h
/ R! ?- G2 r" N) S7 t: h+ z5 p
当到达物料速度越高时,这个报警更多,
; V( R/ m; X; G5 N% j/ l3 {
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-21 15:39 , Processed in 0.020868 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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