设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7295|回复: 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'9 U* L5 S* u& p0 m" ]
*/9 P" {" e* k% `% I& C4 D
is
  [3 z$ v' t, w        part, GlobalDistObj, assignLObj:object;row,Lan:integer;: J% r; M# n3 u: [7 r# |
do
/ H  q$ G: j/ u5 t2 b7 _! E        Lan := rootfolder.Internal.Tools.AOLlanguage;
+ \& Z: p  ~( o1 I1 p        if current = @.Destination -- else return
$ M0 s1 O3 {- K6 w% P9 v' W+ h        then+ z1 e, Y& u( v8 V
                @.Destination := void;. [+ \+ n9 |; a( G. i$ Q7 |; F
                if @.occupied then
( `& m6 m9 d  K( j                        part := @.cont;
3 ]6 ~$ G' B& D" s* E! Z                        @.transpOrder := void;. O- Z1 o) }, ^3 C5 ]
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
1 B1 d7 p5 @, A* c7 b3 A                                @,root.eventcontroller.simTime);
6 l% ^4 V+ Y1 V. Z% i- z2 E                        @.HasOrder := false;
0 _" h3 m7 p: N5 |6 k* n                        @.DrivingHome := true;  w6 z' D4 }4 B( F( t$ h
                        rgManager.tryToStartTransOrder;
2 q  f7 }/ c+ Z2 Z  o                        if @.Destination = void
9 U! u0 ?# U! E; W5 I1 h                        then -- no transport order for vehicle @
7 W' A" X) g1 u& U: J- L# R                                @.Destination :=
% _3 _9 E% q+ `. u+ p6 s  J                                rgManager.nearestFreeStation(@,track.~);
  H+ ~. g: B( \4 Y$ u* P                                newDirection(@);   2 B) I/ i2 ^, G" G" h' I- h: |5 S
                                if @.Destination /= void then
3 C  A4 o7 t+ J* A( g+ v                                        @.Destination.NumReservation :=6 i9 H0 D# x0 ?6 z0 L; y( p
                                        @.Destination.NumReservation + 1;. F; k/ u3 |0 _& w8 T
                                end;! v! N" N( }6 D% ]8 D5 q3 A
                                @.CurrIcon := "drivingHome";
  Z! X) ~. M$ W3 S% U                                @.DrivingHome := true;
3 ~; g2 w1 S  \3 h                        end;# N$ a" u7 b2 X
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station5 N/ ^4 g  z: U- K7 O2 g
                        part := @.transpOrder;) ^5 M& D3 d! ~- d4 x: s
                        part.move(@);-- load part
% P6 a7 k/ s* s& Z- W- E2 L" `                        @.CurrIcon := "load";
5 ~% N, U+ Q2 A4 ?) Q. k                        GlobalDistObj := part.globDestination;
( ^; f. f. [# Z/ [. W( D: ]& O                        assignLObj := rgmanager.rgAssignL;, F6 F) I0 u7 J( P6 Y6 l! y
                        row := assignLObj.getRowNo(GlobalDistObj);
6 O4 M: f" p) K) Z. ?                        if Row = -1 then -- since 70
: ?0 z, z1 @' H' s+ G4 Q/ v' k                                if lan=1 then
# z* H0 Q- B/ n/ w7 F8 I                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
6 p0 Z& T1 C! y9 U; \- [9 T                                                to_str("in der Andockstation: \"",?.~.name,"\""));- @' v9 z9 c) Y" @4 D
                                else. |: {$ u% M0 R( l
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),! l/ X% a* t& y0 z+ H
                                                to_str("in docking station: \"",?.~.name,"\""));                                2 E, ?% W+ A, e' r, e- \' V0 _2 @
                                end;
' n, A* q+ R8 k$ c                        else
+ h4 P6 u4 _7 |' e7 V                                @.Destination := assignLObj[1,row];
( ^! B% V1 n+ r/ Q                        end;                       
+ r3 c4 z& D* C( g& e2 j' k                        newDirection(@);3 |; l# t! z4 }3 e
                        @.HasOrder := true;
- O2 D5 d# ~& K  R6 ]6 T                end;7 l$ z2 F" b1 F& P/ u
        end;/ N- m. z3 n) `* V
end;        -- of the method
" D' J9 N! V7 ]  y4 z
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 2 _6 r* ^! |8 T& z6 `, }

0 B- U+ a! T! W这是AGV_putin中arrive的method。" I# E8 A, K1 @% L# k6 U' q* ^
9 {6 g2 \6 q! \. `5 L
当到达物料速度越高时,这个报警更多,  |- ?+ d7 N8 i
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
' z8 X: O, E; R/ q程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?9 w- L) w' H' @8 C
8 W) [  w/ _" \, \
另外一个小建议,就是move,所有的move都可以这样
# X0 d& U( p4 z6 I8 |$ J' Y/ E6 uif not move() then debug end3 ]3 x8 D( x$ J6 W9 e: a
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
$ F5 G: ]1 w6 s1 R2 \. s6 fplant simulation中的free libraries有AGV模板,
7 E; J2 ~& v( q7 S里面也有案例。
* H# j" h, p" [+ `; O& t( f- S: e我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。8 V4 _# A* z6 e- Q0 W

0 c7 m. k* I, R7 d5 H我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
( a6 Z) f' p7 P& P; x2 A/ X' X8 `! _: N
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 4 c5 u* p% P' d% M
这是AGV_putin中arrive的method。. y4 B. R4 V! M& v! T; S* _& |

* o# o+ O4 j; H' \当到达物料速度越高时,这个报警更多,
9 K, h$ [. N* P, V6 J; |3 a- M
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-2 10:37 , Processed in 0.022162 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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