设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9943|回复: 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'. @2 `+ l4 k( [* _
*/
5 f8 i, w' r, k6 F" R1 mis
* v. V5 K3 [; Q        part, GlobalDistObj, assignLObj:object;row,Lan:integer;7 d" p" m: N/ Q8 u5 ]
do
  A) ~1 z# o: y4 V        Lan := rootfolder.Internal.Tools.AOLlanguage;9 R' M$ J" @- {( Y
        if current = @.Destination -- else return8 v; T% T$ A# v, S7 Q) q$ z
        then
) ^; U. B4 P. p8 b; p8 y: }# a                @.Destination := void;
; x( \  x  z4 h8 G8 w* W                if @.occupied then
: E2 E% t3 j2 R5 w                        part := @.cont;) {: W  u9 |; k& d9 e8 `
                        @.transpOrder := void;% b* `, _# D! M$ e* \, N& I5 F
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
" G8 U6 {9 y) i/ j                                @,root.eventcontroller.simTime);8 J! G5 B% n& M. E2 {" ^4 O. e
                        @.HasOrder := false;1 Y' l$ k& d1 Z
                        @.DrivingHome := true;
) U' y5 G4 y1 |                        rgManager.tryToStartTransOrder;
! q) f7 Z8 M9 J1 M+ o# \                        if @.Destination = void! ?/ q" F: D% ?! J) x
                        then -- no transport order for vehicle @
/ \8 m+ S; x- e. Q7 Z( W' {% t  g                                @.Destination :=' w) Q9 ]8 i7 `1 C! v) B0 ~$ r: M
                                rgManager.nearestFreeStation(@,track.~);. V( ^) `$ ]+ z7 D. X, e2 d2 B
                                newDirection(@);   # R7 \6 x( ]5 A+ X; q
                                if @.Destination /= void then: w$ M9 B8 q6 ~& k+ y& H4 N
                                        @.Destination.NumReservation :=
! k6 ]' D8 X  R, u% E$ r                                        @.Destination.NumReservation + 1;
  s6 I1 K7 J8 J3 t$ M8 _! b# Y                                end;: _# U/ Y3 J0 n
                                @.CurrIcon := "drivingHome";
, d! p! w4 v) d6 X                                @.DrivingHome := true;
* |4 [1 j' G4 O1 ?) p  l( h' L/ @                        end;
: L! K% \, j9 K. b                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
! r! q; }* I; ~/ n+ o9 W                        part := @.transpOrder;
- z# G8 Z" ^0 A' Z9 b  t. F                        part.move(@);-- load part
, N  s9 a* t5 n, Z8 X% \) J                        @.CurrIcon := "load";( z% F9 m8 }/ ]3 V
                        GlobalDistObj := part.globDestination;
1 o5 v; H7 u8 F' w8 a2 N. Z; i1 \                        assignLObj := rgmanager.rgAssignL;
$ c0 ]: y9 T% F& E. e2 D( t                        row := assignLObj.getRowNo(GlobalDistObj);9 R2 ]' N8 Y: I% R  e
                        if Row = -1 then -- since 70
; T  z8 M; f8 w7 n                                if lan=1 then
( M/ h% Y  ]$ S0 Y* @* [) Y                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
$ b: G+ A' ?8 `/ t: P. g                                                to_str("in der Andockstation: \"",?.~.name,"\""));7 \3 Y+ S: B& l3 ]+ a9 W
                                else  c# L$ V$ {) v. F
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),# c: q) h/ n  w" w7 q' m) g
                                                to_str("in docking station: \"",?.~.name,"\""));                                . F4 `5 ~* s# ]! T. ?+ _; ?; R
                                end;
9 x$ L; H2 ^% w2 U3 @0 u                        else
( w* F, C2 v) N# }# k5 |+ ?                                @.Destination := assignLObj[1,row];/ b. ^% q* [5 m
                        end;                       
, b8 z8 R4 C; f/ m2 P# Q& R                        newDirection(@);
6 n% C6 \: c7 |                        @.HasOrder := true;# L( ?! j: R. `/ d1 o
                end;4 ?4 P, j' d; n; r2 Q
        end;2 q* f  X: L% `; S# K1 b, a8 k
end;        -- of the method3 J( f6 T- h, s. [" B
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
5 }/ m. N1 H: u0 [$ {
2 l/ j) d/ f8 D+ q, k' C& F! r这是AGV_putin中arrive的method。
( b1 n8 o! w* ^$ Y$ ?- H8 C& ]( i/ \4 r$ K% d4 |' c
当到达物料速度越高时,这个报警更多,: g; T$ H& m/ ]: I( |+ q6 c" |
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
$ |1 C# L" y. G0 o! a程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
& a$ |0 Z4 K9 b4 Y3 l6 q  s# h; _
; K) N) f1 r" c+ E另外一个小建议,就是move,所有的move都可以这样
% s6 T0 }/ T* E/ xif not move() then debug end
0 C- b- m) A, A' h7 N+ [4 \这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
+ f+ H0 ?. H* i# Vplant simulation中的free libraries有AGV模板,& `' r6 W2 z: ?6 m3 U% |+ u
里面也有案例。
! h0 c- X  J) q. }8 z我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
& G9 r8 M5 O8 m  A5 D
9 B( j$ m/ _1 A1 S& ^我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
% P% O( D$ [2 Q0 e
% p8 v/ y- H& @8 f& D那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
& K3 [) Z* l1 H/ B. a$ \, R7 ~这是AGV_putin中arrive的method。+ d* H9 {2 k( i0 J/ _

: l2 }5 d9 P6 R. v当到达物料速度越高时,这个报警更多,

' ?+ ^& ]$ Y: F另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-9-3 15:30 , Processed in 0.015634 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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