设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7661|回复: 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'
/ ]5 H% S1 E* w7 Q*/
! f+ i8 z. s5 o  R7 u" ?is  H6 u/ i' u; E
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;* i+ M$ Y6 P- ?6 G8 V' }
do
$ D6 C( b8 Y! r  e" \        Lan := rootfolder.Internal.Tools.AOLlanguage;
) j' @4 D4 `$ e% R        if current = @.Destination -- else return% `* f5 A, B! E6 V0 v# ?
        then
8 S1 |" n- `3 C5 b/ T1 i( _                @.Destination := void;
' \7 g; ]0 e" }2 c0 j. [                if @.occupied then
, P( r. |. H6 a5 [; O3 _0 C! M                        part := @.cont;
; ?1 s6 ?, R3 Z) H( _. y                        @.transpOrder := void;
  O8 n) N, l! A6 r                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
% {) d, H. D! y5 u' h  K                                @,root.eventcontroller.simTime);
# e2 u7 }/ W" G# N( Y                        @.HasOrder := false;4 m! A4 Q, z6 j# ~1 C
                        @.DrivingHome := true;0 U7 H: ]; |( w( V
                        rgManager.tryToStartTransOrder;; h5 X7 b: B! S. h- l
                        if @.Destination = void3 t$ @" ^$ \* f/ k! p: x. H
                        then -- no transport order for vehicle @5 m4 a6 F  p; J. n- j' W+ f, ]
                                @.Destination :=# h2 |: ?) X! v' V: T, Q
                                rgManager.nearestFreeStation(@,track.~);% O" l. r8 o. b: e' K
                                newDirection(@);     l6 t6 A4 w" _5 h- g
                                if @.Destination /= void then& A1 k% k( z4 B
                                        @.Destination.NumReservation :=
& y: R- a. W5 `8 q4 c3 l$ a6 i                                        @.Destination.NumReservation + 1;  g4 a1 B8 g" l( `9 \
                                end;% ]. J& I# x4 p) ]
                                @.CurrIcon := "drivingHome";
2 @) S2 x! l' V% J$ g6 Y* n                                @.DrivingHome := true;
, a% G& F1 a! [  `# q3 S& s                        end;
- }3 V4 }. J9 B  r( ?                else -- the vehicle @ is empty, both vehicle and part are in the same dock station& k! k9 O2 V2 D" O7 T
                        part := @.transpOrder;) z  S0 N2 Y# ?" H3 H6 ^
                        part.move(@);-- load part  c3 L9 l! v) g, s
                        @.CurrIcon := "load";& @  s* h$ p: Y7 V+ n8 K) W) K( b9 N) A
                        GlobalDistObj := part.globDestination;# u( j7 w5 T* S) k6 F
                        assignLObj := rgmanager.rgAssignL;
9 \7 M7 S$ K: X' _3 I4 e" i4 |9 H9 E                        row := assignLObj.getRowNo(GlobalDistObj);( _8 S6 J) Y" A, [) t9 U
                        if Row = -1 then -- since 70
& H- L4 `  M) }3 W, g& s, ^                                if lan=1 then6 ~' {0 o; Z$ a% t+ ^) _
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),0 C: u9 [* }5 z# Y
                                                to_str("in der Andockstation: \"",?.~.name,"\""));! B" d- }* w7 _
                                else
9 k0 N. a3 i' A6 z) g3 {  t1 f                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),' O5 w8 t7 L0 J& A
                                                to_str("in docking station: \"",?.~.name,"\""));                               
1 Z7 P# _/ j7 z- s                                end;, }: n/ ]- Q0 M" A
                        else$ Z# w+ C" g- P2 k
                                @.Destination := assignLObj[1,row];
+ [# x- F6 W# d6 D                        end;                       
# \  o" ]+ w$ E$ Z3 z7 f7 `7 ~: B                        newDirection(@);
7 {+ k! u( X1 R                        @.HasOrder := true;) d$ y- ?5 x# [( x
                end;7 y; {: K6 n% A9 D, [9 n
        end;
) ?& b" X* N, u0 @end;        -- of the method
" n/ x9 }. `7 K* q- D+ q# S
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 ' j( I( K5 ~: R

* w( [# M1 w7 s2 E: o# @这是AGV_putin中arrive的method。
5 B7 D6 V9 a/ V3 T5 C/ A
5 x5 f; [* p8 Y! B: j. s$ P5 N当到达物料速度越高时,这个报警更多,3 m$ R0 \: ~- D; u7 Z4 Y
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。* c' @2 h4 x( U( A' l# j0 j
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
2 Q! L& o0 Y" j0 v0 h, ]9 D! M8 ~& ?5 r. u# j. Y
另外一个小建议,就是move,所有的move都可以这样# N+ R% m0 G5 f# V: P9 A9 x
if not move() then debug end/ E6 w  T5 `/ l1 n; y
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
8 t" a+ i( U# [/ |! Z0 ~plant simulation中的free libraries有AGV模板,% T0 D8 ~. Z! v4 i2 n
里面也有案例。/ x6 \9 B0 r8 R% u+ L
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。' R: S. G8 _# H5 E) x$ ~4 Z* R

+ a$ L: D1 z, o; ~* J' r我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
: E% h/ z. ?5 r# B6 p% F  y$ t
) t4 W' m& p2 D# I* @( l7 v  g那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
4 L5 ?( W/ f0 G, w这是AGV_putin中arrive的method。  J3 b) X% a. u( N& i
9 Q) s: L: D, q* a' W, }# S
当到达物料速度越高时,这个报警更多,

7 _" I& y( d; u6 V另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-23 00:42 , Processed in 0.022243 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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