设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7903|回复: 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'
, n+ T9 S5 c' M$ S+ h- E1 e1 d*/0 p! l# p( B/ _$ ~, u
is* a7 G( y3 |# x
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
  g8 Z0 B* Y. P1 Gdo
3 w0 F2 a0 `$ P. e% i        Lan := rootfolder.Internal.Tools.AOLlanguage;
! O) D7 T/ S% b3 T% |; x, }        if current = @.Destination -- else return, B- @5 J  q! {* @$ w5 B
        then0 B. W- @0 _* s8 G
                @.Destination := void;
' I" E8 b4 Z7 {                if @.occupied then
" V; ^! J* X/ n                        part := @.cont;% I0 C' }8 S- `) ^  g; }
                        @.transpOrder := void;
  y! K9 {( l$ b% Y+ k                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,8 P$ S$ N* c  L) P: T1 I  u
                                @,root.eventcontroller.simTime);4 @+ A! q1 x6 E: ~- `
                        @.HasOrder := false;# p9 s1 }2 p6 J1 s
                        @.DrivingHome := true;
3 e# u2 }3 w! S' q* ]                        rgManager.tryToStartTransOrder;( t0 @# h' P4 {; h' E1 e6 _
                        if @.Destination = void1 Y) x& }5 _6 k7 k% y! G
                        then -- no transport order for vehicle @
# l# T' b& q, A# s. Y                                @.Destination :=
/ s- j) K' {5 o                                rgManager.nearestFreeStation(@,track.~);
: O4 k! S2 T$ R) L6 d                                newDirection(@);   : r$ P5 X8 b3 m: f) ^) H
                                if @.Destination /= void then
$ `8 J3 X! Z  e                                        @.Destination.NumReservation :=
7 p4 }+ v$ \  j% R% H                                        @.Destination.NumReservation + 1;$ T. q! y0 D. L3 B7 P8 A+ e# G
                                end;. F8 J! |: j6 X6 y  J# O
                                @.CurrIcon := "drivingHome";$ T2 I( x9 c6 L, s
                                @.DrivingHome := true;: _7 S' f3 ]2 r5 C5 [8 ~
                        end;
1 Q  t' B! q1 l# c* a; _9 n                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
7 c! W7 |' p% i( J  S' c                        part := @.transpOrder;  y5 Q; U: @$ @% p* n) p6 A; A6 ]# O
                        part.move(@);-- load part# _: g# o; j: t1 y/ J8 [
                        @.CurrIcon := "load";
( T9 n$ p( ^6 r, b$ }# C4 b/ N                        GlobalDistObj := part.globDestination;
3 `1 E  M# e+ c) X& [/ K                        assignLObj := rgmanager.rgAssignL;
2 {. b2 `. G  `                        row := assignLObj.getRowNo(GlobalDistObj);
: M5 [2 V, B9 Q5 I7 Y                        if Row = -1 then -- since 70" n( @% ?1 `) z  d" h3 N) t; ?- I0 j
                                if lan=1 then! E- [0 ^8 ~- N' P8 |/ B. b0 ~
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
& }! E2 h. d' X& R                                                to_str("in der Andockstation: \"",?.~.name,"\""));" y0 l0 x- e! F/ K
                                else
0 L3 B5 F9 c7 |( m8 k                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
6 v5 X( A; K0 l, [# @$ F0 d2 l                                                to_str("in docking station: \"",?.~.name,"\""));                                ' r1 U4 H/ a# z  D7 q: F
                                end;
7 W0 [) o; O" H7 `                        else
8 f9 U1 M6 D' C4 y% K1 Y1 l% q                                @.Destination := assignLObj[1,row];' x( `4 A! o: O, F6 `# d
                        end;                        : w9 f7 J8 h% ~8 f3 Z6 t, m
                        newDirection(@);
2 l$ |3 H' G% a& U( Z3 B) u                        @.HasOrder := true;) W/ ^( ~8 V% b
                end;
4 e' T; `3 n" i( ]! M4 l: K        end;/ K; \% E% c4 L
end;        -- of the method7 Q( T- _/ p1 y
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
# D7 A9 j' [  g( w) c* d$ @$ Q$ A5 x6 f2 S) H8 G( V) j
这是AGV_putin中arrive的method。/ I" P1 V: l3 E! D0 h* T
; C& k4 F' X5 h$ a' b' f7 [5 P
当到达物料速度越高时,这个报警更多,
0 P6 ]9 `5 A5 t2 {5 u可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
' }  ]# M8 `3 I  [4 T# w6 ]程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
# x/ O, j  a) H
! ?' m- s9 |( Z# v另外一个小建议,就是move,所有的move都可以这样
& W/ q& ]+ D4 M' k1 ]; t5 ~if not move() then debug end
2 ^. _4 J8 _0 O& _4 F/ B! y2 _7 v这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。4 t8 i* U: Y2 L9 c1 l7 _- t/ h
plant simulation中的free libraries有AGV模板,! }6 {  o! b# J4 g0 ^8 r; E
里面也有案例。4 V& C& [# g& J, L) v
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。" E5 r) G( G$ d% n

" p$ f; |5 E1 F( p+ g我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 * p2 x+ X( e+ e3 l$ A

3 f8 C6 l6 z( e+ d2 S那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
6 Y  U8 R, r1 E7 h) a这是AGV_putin中arrive的method。
8 y7 T0 [% L% m8 ], |7 v& c3 c1 x5 R" x0 n/ P: j. |+ S2 s
当到达物料速度越高时,这个报警更多,

  Z( @. N' B5 E- P3 w另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-4 06:57 , Processed in 7.540002 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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