设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7656|回复: 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'1 q4 l& k2 t* C5 k2 B* m0 S& Y- z
*/
+ Z) X0 q6 c7 eis: G0 a( J  i$ f0 y3 e  r
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
! d0 i( g/ o# udo
% N! X' X( m: o- y        Lan := rootfolder.Internal.Tools.AOLlanguage;
. c4 O# a) f0 I: J8 v        if current = @.Destination -- else return
3 e0 y4 N4 E* `  ?        then
; M+ F) n! {7 |# K                @.Destination := void;
$ B+ V. F; X' i# b0 U4 s                if @.occupied then
) q* h& S2 C$ I. W( p' [                        part := @.cont;
7 K& l0 R+ a/ e2 ^- `                        @.transpOrder := void;
. L- _$ g' B; G                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
( `: V" B' M! l9 d- a                                @,root.eventcontroller.simTime);
7 S# M8 S1 d+ C1 n7 D& |                        @.HasOrder := false;
7 O# N; V/ e) d' J' z                        @.DrivingHome := true;
( M1 E* n. t* e7 L                        rgManager.tryToStartTransOrder;) B9 v- i4 g* p+ T6 B' C6 ]
                        if @.Destination = void# v: F% G: ?+ O
                        then -- no transport order for vehicle @) q/ j. m7 X3 M- C; z5 L( G* H
                                @.Destination :=+ b7 X: O' q; a+ X7 T
                                rgManager.nearestFreeStation(@,track.~);
' X& N" E0 P" a8 ^, k$ r% e7 `& c                                newDirection(@);   8 M+ ~: d2 T8 Z& n: v. b+ o/ l
                                if @.Destination /= void then4 J$ t+ `' x+ r1 w0 E# G: \
                                        @.Destination.NumReservation :=
+ A- L( E6 M, G, R% J+ O                                        @.Destination.NumReservation + 1;
$ [) K0 a4 d8 L2 j                                end;
% M# Y( y6 w7 R3 j                                @.CurrIcon := "drivingHome";1 Q; {# l% r2 a. T
                                @.DrivingHome := true;
+ @8 T& l" b' ~7 e( u                        end;
9 j1 N2 M% \# K0 w8 `( P                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
9 ]/ H# y5 K5 h5 e' g4 F& M( r5 S                        part := @.transpOrder;
. Y& z: Q  G6 v$ j& j0 g                        part.move(@);-- load part
% @  _+ E' Z7 z- O                        @.CurrIcon := "load";4 |" |2 C, I1 m4 l
                        GlobalDistObj := part.globDestination;
8 a+ O5 @+ I" M" J+ z$ n                        assignLObj := rgmanager.rgAssignL;( f' S3 c6 e- ]8 K9 c
                        row := assignLObj.getRowNo(GlobalDistObj);6 v, m% H: c/ p. ^( D
                        if Row = -1 then -- since 70" K" @+ n# o6 R% n! {$ l2 ]5 a
                                if lan=1 then/ K7 G9 O2 R$ Q6 w# C
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
9 k: {4 s$ @) m                                                to_str("in der Andockstation: \"",?.~.name,"\""));) \/ U1 V5 i4 ~( N
                                else
! i" {! a! y; H# d                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),# a- h: H" q4 ~& ^6 j+ ~
                                                to_str("in docking station: \"",?.~.name,"\""));                                # V7 {0 {% b1 R: ?
                                end;) k; M( n- `) b- k& G9 c" G
                        else
+ n: a9 V- F, }: \2 Q! M" J                                @.Destination := assignLObj[1,row];' C0 ?& S% w& Y4 s' D
                        end;                       
* z  g  p# q5 a- m) K% s                        newDirection(@);; e, @' ^! g' \( N) D+ v
                        @.HasOrder := true;0 p" Y' N) h/ ^: W# f
                end;
1 K0 {- e: }+ ~" N% T        end;
; B+ ]7 E( Z9 Send;        -- of the method4 k! Y- I2 \( t: {( a
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
5 t% B7 n1 k( d# l/ s& x% P3 Z1 r* S4 c- j/ R
这是AGV_putin中arrive的method。
" c4 H3 n, v: f6 m. Z
; p$ {" Q  U" o$ F! h当到达物料速度越高时,这个报警更多,% s4 B7 I  U; l8 e% X- D5 S* }! ]
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
; g' `9 q  h- f- S! z0 H1 S程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
3 `: g8 c7 ]( q1 o+ O$ p
* I# ^0 R! W5 ^  d, ?4 S另外一个小建议,就是move,所有的move都可以这样+ O4 G# @# Y% n0 {+ x2 f& w4 Z, p
if not move() then debug end% {1 [2 ~! {! q; l
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
! o: `) F3 o) n. x/ l  cplant simulation中的free libraries有AGV模板,
' @, \: O- y% }7 G* S$ l1 v里面也有案例。, \: `' f% u* I  m
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
5 n) S" D, _: S7 a3 m/ b7 f8 i3 S; \) e) A
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
: u# s$ L; m2 ^
* J: v5 [6 i% i8 ~2 @- a6 |那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
. W& |' E  c4 ?$ B这是AGV_putin中arrive的method。; t, y, U% H: X8 ~! J
/ e  k) X% ~) \* `( L
当到达物料速度越高时,这个报警更多,
6 d1 \" D% U  S" b6 V1 \1 z
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-22 18:24 , Processed in 0.019967 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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