设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6303|回复: 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'
0 Q9 S- G4 i  U1 g$ X*/
2 D6 Q, ^" p0 k9 b; ^3 Wis; Y8 o9 _- G" o
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;( Y$ w: t$ k8 m# v  d5 |  o  _% h
do
# R/ F% |2 [4 r# k% e! D- ]& X* F        Lan := rootfolder.Internal.Tools.AOLlanguage;' w; O$ y# T) T; ?8 E
        if current = @.Destination -- else return
) {( l5 ~9 d! f1 N: `/ d  }$ h- a        then4 r* p( T5 C+ J9 }+ k
                @.Destination := void;1 j3 D3 a$ f* g3 E, P
                if @.occupied then4 ]2 y6 E0 ]: k& r4 L
                        part := @.cont;
1 s, J4 B' Y% L7 D7 r                        @.transpOrder := void;
6 S# {, C; z  ^1 H                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,, [% o9 H+ c2 |" M
                                @,root.eventcontroller.simTime);
3 Q( A, I1 \0 p) x                        @.HasOrder := false;, J( h4 c, W; B
                        @.DrivingHome := true;
6 b* U! Y7 A( I- a" b1 T                        rgManager.tryToStartTransOrder;: R2 {. M- P8 r- g# v  T( }7 {& x& W
                        if @.Destination = void
! j8 a; X0 P  I2 Z  R3 B                        then -- no transport order for vehicle @
* K4 D. ^8 V- y) J: d- X                                @.Destination :=
3 Y& D4 O+ }% x) d                                rgManager.nearestFreeStation(@,track.~);2 ^0 t1 a8 `) l
                                newDirection(@);   
! x$ {% ]8 M" X" l                                if @.Destination /= void then  V6 d+ \2 t3 o
                                        @.Destination.NumReservation :=" S+ Q3 ]& s/ w6 h" V# ?4 D2 S9 ~1 w
                                        @.Destination.NumReservation + 1;7 P6 T+ x7 l, B6 D* P% G, ]- ^
                                end;
' n- s1 F4 U/ p9 G/ y& k+ Y                                @.CurrIcon := "drivingHome";' a( B) t. Y* e& Z: F2 l! e. h
                                @.DrivingHome := true;
/ N, c+ j$ v$ f1 i                        end;3 w3 R( Q4 ]: Y
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
9 D, B/ k  C4 a* ?                        part := @.transpOrder;
# o9 l4 d" N) j5 s( Q                        part.move(@);-- load part
0 L+ h  r. @( G% D1 o                        @.CurrIcon := "load";
" M* ^$ {' n' b8 d# y: X$ v                        GlobalDistObj := part.globDestination;
! t4 L- }: H$ G                        assignLObj := rgmanager.rgAssignL;) I% C9 Q, a8 k+ ?, K/ g
                        row := assignLObj.getRowNo(GlobalDistObj);
: \6 l. U4 m  L2 Y2 b) G                        if Row = -1 then -- since 70. D# m5 e( u7 v( k7 v% W
                                if lan=1 then
. q$ \( o- M% X3 Y+ r! m, f; S, P: `                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),5 D6 }) U+ K! Z* W
                                                to_str("in der Andockstation: \"",?.~.name,"\""));$ V: u! o+ U$ h. c) f- @" [
                                else
- X. V- Z* @  z/ c2 d5 {                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),4 J9 O$ l8 Y! f4 i
                                                to_str("in docking station: \"",?.~.name,"\""));                                ! M1 _8 |5 D6 E: k2 c( Q
                                end;
8 k+ a4 v3 {6 a- X                        else
+ I4 X4 |3 V2 p9 G+ d1 Y                                @.Destination := assignLObj[1,row];! G; J8 e% Z9 v, ~; a  d  k
                        end;                        % a8 q5 i) y' V
                        newDirection(@);7 y2 [# e# V3 a8 p2 ~
                        @.HasOrder := true;
" h2 \' O# j: V. j8 E                end;
" S/ ?! C% Q4 N, p1 g2 E        end;
( i, P, |; _  Y# C. v1 x1 qend;        -- of the method
6 A/ R# l+ T! {9 w. c7 g. {
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 ) S0 x& Z2 y8 a- [
, H7 `. t: f- N6 d. Q: P8 T
这是AGV_putin中arrive的method。
* X9 J! L! H. b5 O+ e" s/ C- W8 A! T" G
当到达物料速度越高时,这个报警更多,
& {& Y4 Z& N5 e3 S7 Q可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。2 k+ g/ ?3 Z  r
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?! H2 B0 E2 s! K: @( F) F

4 `! R/ ?6 b: i, b( v另外一个小建议,就是move,所有的move都可以这样  C3 I; O9 h, h0 O1 ~
if not move() then debug end
! J% C" g+ f& N) d/ f+ H这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
/ z% K: z. B# E2 B4 pplant simulation中的free libraries有AGV模板,# Q. I/ h9 v+ A, d! `( n
里面也有案例。  H$ b" S6 F" j% k
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。7 h8 x: I$ }9 y2 p5 b
, X( @+ D+ _, O  \5 q
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 + M$ w; p8 v, z7 W0 N/ x* K

2 `, }2 W1 w* C: _- u: ?. g" z/ I那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
% I/ ~% ?' Z! F2 U7 z# D1 t这是AGV_putin中arrive的method。
* U2 {& _* K  x8 Y# L
5 k5 l1 w' d' x; S- m+ I$ r& c当到达物料速度越高时,这个报警更多,
0 w- Y) c  o- B) x
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-1-29 18:51 , Processed in 0.018070 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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