设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7179|回复: 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'% M9 x" u1 ?# P" Q8 f( V
*/
6 N; r+ _$ Z0 ]+ u- ^4 x! ^- i5 eis6 g( a8 w% g( Q0 t2 g1 W
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
0 a  _; T, s4 Y4 u7 U1 Rdo
$ ?* f8 o4 A$ S# F: B8 \        Lan := rootfolder.Internal.Tools.AOLlanguage;: p. h; x) j: b7 v- Y+ C  V
        if current = @.Destination -- else return
- T7 I0 v4 C4 ]  U3 X; R& s) x        then) X$ k% N9 Z* Y, E+ R6 v, f6 p
                @.Destination := void;- o- _8 K& G  e& W; m# u9 u
                if @.occupied then
% s; L1 c+ C3 b8 f! ?                        part := @.cont;
' E* Q3 i  q7 Z' {  T                        @.transpOrder := void;
3 S" k# Z; E  A- l9 F7 k                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
( Q& i0 G( m7 T+ W2 y* c                                @,root.eventcontroller.simTime);
! }- H& U' J7 q- S                        @.HasOrder := false;3 h: s) t2 P# r9 H( b/ z6 E
                        @.DrivingHome := true;
/ r8 A1 t" M% j8 p+ n                        rgManager.tryToStartTransOrder;5 P% I/ ]4 G, e( Y* ~( T, C% V4 W
                        if @.Destination = void
! R: S. s5 Z# t7 I9 W' ]6 A                        then -- no transport order for vehicle @1 G, O) t2 A/ `9 s
                                @.Destination :=
0 s' V' k9 n  ]                                rgManager.nearestFreeStation(@,track.~);' J& y6 O- I! W( M; g0 E
                                newDirection(@);   4 f3 d: l6 ~- {& H1 @
                                if @.Destination /= void then1 [( G& ^/ `# B4 S
                                        @.Destination.NumReservation :=) E% V# P+ }3 C6 O: j
                                        @.Destination.NumReservation + 1;
9 J  J* Q+ ?7 U5 O5 O# ?' f                                end;
+ D& K) C6 s- N+ W+ v# }                                @.CurrIcon := "drivingHome";& c' k) Y2 J3 x) {" O" f1 h
                                @.DrivingHome := true;
, H+ b" P0 R. l                        end;
$ }* c! P, R2 d2 [' f2 ~6 t; K                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
( ~. T3 y- L. P2 \8 h1 N1 ~                        part := @.transpOrder;# R1 d( {3 \6 |$ D" N
                        part.move(@);-- load part
" U4 {0 x* y. y7 y: c% B                        @.CurrIcon := "load";+ i* p  t6 u4 e; {/ q
                        GlobalDistObj := part.globDestination;7 I% b7 ?6 l) N8 y# W
                        assignLObj := rgmanager.rgAssignL;
8 i/ k3 w  G( o                        row := assignLObj.getRowNo(GlobalDistObj);/ z% @! i  S, P: ]
                        if Row = -1 then -- since 705 t3 O" |8 h$ q, h6 A8 w
                                if lan=1 then7 w% j8 o; {1 K( g
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
8 ~( Q5 Q) U; V: r                                                to_str("in der Andockstation: \"",?.~.name,"\""));3 N6 @7 H1 l1 J
                                else) \* r  w! u) W
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),4 n* G( n. H5 x3 d0 c6 ?
                                                to_str("in docking station: \"",?.~.name,"\""));                                1 p/ l" i+ _4 B& B7 W; f
                                end;# U& g- E2 E% s* \- e. o$ q
                        else
7 \7 R! @9 b, H4 a7 [% N- e3 Q: a                                @.Destination := assignLObj[1,row];
5 n' }$ m9 w/ I/ {7 ?8 p* }, b  c0 ~, r                        end;                        5 k" E% ]6 e" h5 Z% i
                        newDirection(@);8 G* v( T$ E5 y$ E6 K; v
                        @.HasOrder := true;
) {$ L8 t! P% \& Y! {                end;$ O: h5 ^& ~# t2 ^1 ^4 \
        end;/ y) U& r* X$ m
end;        -- of the method
  O. L! O1 e- ^
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
1 t, F' i% ^+ `
8 ~3 p  W+ x! {" M5 f" H这是AGV_putin中arrive的method。
1 g4 P; }" U+ g9 t/ i! g/ Y$ F$ W' L2 F( i8 I  k
当到达物料速度越高时,这个报警更多,1 R1 b( j1 J4 X
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。: x2 K' \! L& U/ j( V5 D
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?- M/ t  _  E6 v, M

* ]% b1 W9 `( S9 E; _4 \另外一个小建议,就是move,所有的move都可以这样
6 r; B: W# k# K% `0 Dif not move() then debug end" b+ o8 R8 k; y2 X( \9 t' ?
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
6 R4 m8 g1 L5 u9 G! Tplant simulation中的free libraries有AGV模板,2 l% _- }4 ?( ^2 x! ^4 M
里面也有案例。( @. T+ ?5 d% A; Q
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。1 A: ]2 J" d% I/ V, d. v
7 L/ ~& R& ~2 b4 Y' F+ r
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 1 J! n7 ~9 N2 |+ J" U

# |# Q0 A$ G; [7 b) D那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
1 i, ]# L; f7 U. D; h这是AGV_putin中arrive的method。' t: h" h0 N/ D% r) w4 V

% i+ ]. K' x" J5 n; ?: S8 G当到达物料速度越高时,这个报警更多,

3 F1 g; @" a. G, c" |& T- {$ d% `另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-25 03:21 , Processed in 0.018822 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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