设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6657|回复: 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'4 Z! P+ Q$ m. J8 u3 Y7 M- S4 \
*/1 `7 e0 ~& i3 d! `. d
is
' m1 k* [- l( e7 g        part, GlobalDistObj, assignLObj:object;row,Lan:integer;0 O! W( Z1 Z6 h1 A
do( l: M4 [: X0 T8 i2 o
        Lan := rootfolder.Internal.Tools.AOLlanguage;
( ]8 m0 c) b  a% F5 Y3 U        if current = @.Destination -- else return
' h& T! @. g8 W# D  I        then( p$ ^) [- O3 j9 \. {$ \. H
                @.Destination := void;
0 f; Y# S8 ~% E  l. f+ a) b                if @.occupied then
2 M" K' l* Z  C& Y6 f3 H, o                        part := @.cont;! s1 T0 G5 o5 r- y
                        @.transpOrder := void;
7 n1 I2 @2 |6 x' E4 `; ^2 X2 F4 q1 s                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
/ `* R4 ~% j4 v                                @,root.eventcontroller.simTime);
/ Y" Q8 v* k  f- i2 e3 \                        @.HasOrder := false;  G5 m/ w: C/ x; k
                        @.DrivingHome := true;
! ~' q! i; x) J6 U" W                        rgManager.tryToStartTransOrder;
4 N4 D  D; k, \                        if @.Destination = void
, p& [+ q, p2 X5 p                        then -- no transport order for vehicle @
5 ?# ~9 H8 b+ P6 d* z6 C8 w& P% j                                @.Destination :=
+ p5 v- g! k8 P                                rgManager.nearestFreeStation(@,track.~);
' w7 p# B6 u3 O  t, {5 `( Y                                newDirection(@);   - @, H7 Q9 t5 ~  w- S! r$ Z- |: t7 ]& N
                                if @.Destination /= void then8 c; |. v2 w+ P. N  j! W" F/ I
                                        @.Destination.NumReservation :=
1 j7 o6 O: ?0 K2 C7 Z2 b& O                                        @.Destination.NumReservation + 1;
7 `. ?' J& ]0 r7 Y0 E4 q) \                                end;; j* v, b- z+ l" `' a2 F5 B. c: Q
                                @.CurrIcon := "drivingHome";
$ v+ K7 `$ @" T, `; A( _6 Z                                @.DrivingHome := true;
: `% z2 }: C  Y7 c                        end;
, E. J$ Q4 G  x, D1 v                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
" n5 [" W& ]7 r- E/ ]5 `                        part := @.transpOrder;
/ {) ]; G4 e0 ]' h0 U% q( G- F. P                        part.move(@);-- load part
: I) [/ l, I/ ]# K                        @.CurrIcon := "load";
' @2 ?8 n% r* j                        GlobalDistObj := part.globDestination;
& A* m6 F% \- ?1 O5 P. J                        assignLObj := rgmanager.rgAssignL;
/ h+ z& d5 v" L' Y" }# V/ `! _) v                        row := assignLObj.getRowNo(GlobalDistObj);
, r/ \8 f+ e3 H                        if Row = -1 then -- since 70
. {1 ]( D, `; q7 p: Q$ i7 q" R                                if lan=1 then# p$ w+ W' M* `+ Q( ?
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
( A! x3 n1 F7 a                                                to_str("in der Andockstation: \"",?.~.name,"\""));9 V. B+ ^9 h! [( \, e" G
                                else% J, R, K  b& i/ E2 v5 h) Z0 x2 C. x
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
+ W1 U6 B" m: A; r. d                                                to_str("in docking station: \"",?.~.name,"\""));                               
4 E" l3 k6 F, Y& E' Z% h                                end;; H" s, ?% w( v
                        else
/ U+ e' [8 J# i' z" o" n                                @.Destination := assignLObj[1,row];
# C% q; p3 p9 v0 H/ b$ {                        end;                       
1 }+ d& t- ]  K, w  l( h                        newDirection(@);3 I1 l3 H' k, w0 Z
                        @.HasOrder := true;
( X' ?) o( x# f* c                end;: E5 [3 B; u6 i7 Y9 ^; `) U9 ]) Q
        end;
# {4 r; p  x9 ?3 Y$ h1 S: v8 uend;        -- of the method
/ h: y+ u- q9 T- e9 ]& k, X& g. v
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 + s+ [9 I% A, k; X( O3 i% f
- }! n8 [: z$ K1 p
这是AGV_putin中arrive的method。. B" m; N% y8 s0 [! I% }

( G4 K9 Z& N  G3 m0 f) J! @4 z当到达物料速度越高时,这个报警更多,$ ^. ]# S) u( @
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。: _3 ~0 P7 m5 M' o
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?8 A+ Q9 G( T% ~4 K# g8 ~3 Y
7 \5 j! k) ^/ M8 G6 `
另外一个小建议,就是move,所有的move都可以这样$ s2 z$ b6 Q( a/ M1 i, m5 B' Z
if not move() then debug end
& R3 j1 Q, h4 K' K( a这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
' {9 ^2 E2 A- b( S0 U2 }8 s6 @3 cplant simulation中的free libraries有AGV模板,0 g* E  q, Z& A- k- i) D
里面也有案例。: s5 w/ ^* A' D) U8 _' {$ g
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
+ U: {2 F( q  U) A9 X  V/ X0 a' K. g) o
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
' h' o3 Q, T+ T9 x1 _5 E+ J9 Q% x: G& s# b0 b, ]' R
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08   a% ]9 Y' }: ?
这是AGV_putin中arrive的method。# W- l* R. j5 P7 c( t. [: ]$ e( h
( A0 s+ a! s  Q: y9 E
当到达物料速度越高时,这个报警更多,
8 r3 ^% G" c0 z2 P4 d: w: ]) R
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-19 09:41 , Processed in 0.023934 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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