设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8510|回复: 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'
* e+ m8 b1 w* g( Q*/
7 L/ n* d4 z9 Y6 `% {+ Y, R, Cis# X0 C! E3 \; s) W/ q; P
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;3 F; V  y6 c9 g/ E6 |0 m; z
do
' s1 f4 [# [% x! q        Lan := rootfolder.Internal.Tools.AOLlanguage;: B0 E, V0 z0 r' P3 J6 U
        if current = @.Destination -- else return$ @, S. S+ g) @  w* Z
        then) N* C& J7 {( Y1 H4 m
                @.Destination := void;
/ Z' R% ?& @. T1 o                if @.occupied then. F7 |8 g# D# n# K- O# y3 t: `
                        part := @.cont;
% J- Q$ q, X$ {                        @.transpOrder := void;
/ g* Z- N1 r! J# w( P: X( F                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,1 ^- X! y4 |, K5 Z( p: v% Y5 |4 j
                                @,root.eventcontroller.simTime);1 Y+ ?$ M% E, N9 y: f' [
                        @.HasOrder := false;
1 @& J5 D7 i4 }6 T& x                        @.DrivingHome := true;4 N! J, I$ _8 W: u" `
                        rgManager.tryToStartTransOrder;
8 Z- a3 \& m4 G: @/ e" V                        if @.Destination = void
7 n2 ?" W3 I2 C) K8 D; `                        then -- no transport order for vehicle @
4 ]  F8 |  x7 D3 Y                                @.Destination :=; I  M, n4 D% p/ c
                                rgManager.nearestFreeStation(@,track.~);* \7 m& ?+ Y; N- g( a) L3 H
                                newDirection(@);   6 V  V; e2 M( o9 I5 J! v
                                if @.Destination /= void then
- P1 N, N1 H8 A, W8 ?  D2 }- @                                        @.Destination.NumReservation :=. ~# j! }3 W6 q: I5 I( R6 @
                                        @.Destination.NumReservation + 1;
! s& g; y; V8 c  }                                end;* r2 `/ x. O4 H  {0 D* e# d
                                @.CurrIcon := "drivingHome";" U! F5 M9 C3 P" S5 q
                                @.DrivingHome := true;( }6 ^/ q( S( I4 B5 s4 B8 ~! `; X
                        end;
; p% ^1 a6 M2 q' z                else -- the vehicle @ is empty, both vehicle and part are in the same dock station8 |: g0 t% {! }  D
                        part := @.transpOrder;
% V; N& M* F0 D; w                        part.move(@);-- load part
3 L' q, O: C5 q; A5 s+ Z" Z                        @.CurrIcon := "load";
, ?& j) E0 k, C0 x! E                        GlobalDistObj := part.globDestination;
1 u# u. y& {% d, L, p% ^                        assignLObj := rgmanager.rgAssignL;$ M: `- a1 B- j/ p2 ]. A
                        row := assignLObj.getRowNo(GlobalDistObj);
# `6 }+ _; H* R" e! A2 d4 T- t                        if Row = -1 then -- since 70) E: b) I" w8 o: `/ z6 v
                                if lan=1 then
- e" l2 J5 I& C! T                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
0 {8 S/ u6 [0 j4 |, U/ X3 _1 r' i5 c                                                to_str("in der Andockstation: \"",?.~.name,"\""));
# X5 I! g  l( X                                else
" A+ T+ `: T* a7 ~/ u: F2 V0 ~/ g                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
4 V* r: m8 h/ f  {, d                                                to_str("in docking station: \"",?.~.name,"\""));                                * o* z3 O5 D4 W# m$ s9 V  M6 z8 {+ n
                                end;- K/ l! Q9 {; y) s4 ]3 F" T
                        else
, b# j! ^  E: O2 L, K                                @.Destination := assignLObj[1,row];5 A# u8 c1 ?9 U9 }
                        end;                        ; b! Y2 y. L1 ?8 o. G* i
                        newDirection(@);$ M5 Z4 j* A0 ?$ W5 k1 V( w
                        @.HasOrder := true;* O( `0 q& u# }8 h- q. ^
                end;8 H2 b5 c: M- R" i( k7 m1 v* N' v
        end;
. L# l  |6 b2 ]  m% uend;        -- of the method/ ~5 O6 I6 }& a) w1 T
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
3 b6 x$ f2 i( l- W+ U6 u1 o5 K: `8 M3 U% ]% ^6 R
这是AGV_putin中arrive的method。" m8 n  j- n) M: l5 v* h

" i0 Z2 E6 e" p+ }当到达物料速度越高时,这个报警更多,, U# }1 `# E* o" s$ Q, a- D
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
4 I  t4 {1 S/ q# J2 f程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
3 H9 C7 a: Q/ d: A; J0 B) I5 ^( y* a* j! z4 W" k
另外一个小建议,就是move,所有的move都可以这样
2 U& s6 m/ r6 Eif not move() then debug end" `  F3 U* a, {. t6 a
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
! s+ L: K% g8 P2 D) dplant simulation中的free libraries有AGV模板,3 h, n! s1 b4 Z4 e& @* X
里面也有案例。
9 ^8 [0 R. r: c4 y我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。; G6 j9 W& R- U/ r' K

5 d6 z! g- o- E' F- C' ]" |我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
+ e5 R* d" ]% m6 A! r& p3 D3 k1 e) _' z# F2 Q; u
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
/ x# ^% t6 i2 q$ P这是AGV_putin中arrive的method。; ^# t+ x) [7 ^. s

% Z( x, h$ l4 \1 o6 ]当到达物料速度越高时,这个报警更多,
% j) c. H# F5 D& V8 J+ I
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-8 13:33 , Processed in 0.015665 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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