设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9672|回复: 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'# M- F( F  \* J' D) p
*/7 M, r% V* _' W* d& ?
is+ X! k7 b/ q" b& s: q6 Y
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;# U$ g4 k- _7 z( D8 I
do" q7 y; S; l4 {% }, G0 V# F2 n' }. X
        Lan := rootfolder.Internal.Tools.AOLlanguage;
( M' x: [- T- G' y( N# \- |. a) K! h        if current = @.Destination -- else return
) s8 t" [# \) K" W        then- z  l* d5 k' G# a3 P+ R
                @.Destination := void;- M0 D) s0 m5 A6 l3 v
                if @.occupied then
: S4 B& [+ u% F0 e3 Z! j9 X                        part := @.cont;
$ ~& ~0 I$ o; w                        @.transpOrder := void;
' Q. R/ N$ x, ]6 s                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
& g' J4 l5 c2 ?- F1 p. i! d                                @,root.eventcontroller.simTime);5 n, O; Y" f) i  z
                        @.HasOrder := false;
5 T* V2 Y; x6 ~                        @.DrivingHome := true;
4 e, n$ [$ X. P/ i( [; S, a                        rgManager.tryToStartTransOrder;* i- d$ @/ s- d
                        if @.Destination = void
0 S  |* U9 y. u2 K0 m, Q                        then -- no transport order for vehicle @
4 @4 x5 a1 o$ `9 j                                @.Destination :=* G  u& }% h1 k  G9 ]! @
                                rgManager.nearestFreeStation(@,track.~);
: v. D# i* f) B+ F                                newDirection(@);   . s4 }8 l- h( E# g
                                if @.Destination /= void then5 C9 F8 R7 I4 Q, ]* `
                                        @.Destination.NumReservation :=
% R; x# ^0 q/ O* a5 n9 V9 L) `                                        @.Destination.NumReservation + 1;& H( A) |6 [8 `+ U6 ?
                                end;
  ~3 ~5 u, P8 B& K+ r8 s                                @.CurrIcon := "drivingHome";9 W/ b  r8 R. T7 u: A" g
                                @.DrivingHome := true;  x* \8 J: e* c0 ]8 e
                        end;" a' D. d. _" I6 ~# _& r' r
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station4 i7 r2 F) K+ U
                        part := @.transpOrder;
, T1 q1 D- ~4 \                        part.move(@);-- load part
+ {; D+ f& M1 A! y                        @.CurrIcon := "load";" B7 X8 u- F. [8 n/ S' _
                        GlobalDistObj := part.globDestination;3 I3 a# |+ V" V- |2 O9 a8 c
                        assignLObj := rgmanager.rgAssignL;' u2 U  J7 z$ b4 S3 `$ Z
                        row := assignLObj.getRowNo(GlobalDistObj);
. \3 z) ~; U' s; m+ L" K7 o' _                        if Row = -1 then -- since 70' z0 T* \8 N5 m. `3 N5 N( j
                                if lan=1 then
+ \& `+ l0 W; T6 s                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
7 c0 f' ?5 R& B) `' \                                                to_str("in der Andockstation: \"",?.~.name,"\""));
% e( E  I4 z- R5 Z; B0 ]# Z+ _                                else. N8 q. f6 ^- G: j! u
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
* L  p$ w8 Y5 H, h+ m1 w& C- G- k                                                to_str("in docking station: \"",?.~.name,"\""));                                & [! Z: I* |- T
                                end;! B4 T# [( \5 y0 `9 c
                        else
+ u& S6 q- W! |9 q: y) b2 v                                @.Destination := assignLObj[1,row];4 g6 r4 O8 F6 l
                        end;                        1 ], e- [3 m1 v  a; ~, J" e
                        newDirection(@);
: I5 e0 T( A9 u' O' d                        @.HasOrder := true;
1 d/ }4 Z+ l* @/ E2 a; z                end;
1 r/ @2 S" {" T- D2 x# Z5 f        end;
" J/ g) j6 i, D7 e$ Cend;        -- of the method
2 |7 w& m8 x' y# n' G' {; b
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
' l$ c3 r% N9 J9 r  b& t0 i4 n6 i: }4 {. ?! m, G. \8 l2 n
这是AGV_putin中arrive的method。8 z" @5 e2 H, ~$ Q; l
1 M& z7 b6 u* h1 g: M/ s8 c
当到达物料速度越高时,这个报警更多," v1 }) L$ m8 D. p5 x' h
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
, L& Y! Q/ E1 U程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
7 H+ E& v: q4 C3 u% H6 d' x8 q
9 {# x( t( ~) a$ g6 j另外一个小建议,就是move,所有的move都可以这样  d8 i" \9 n: t" f& G+ q
if not move() then debug end
1 Q$ n; @: D0 Y; P3 o这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
4 H5 n" H$ d* q" P4 d  Q8 b' [plant simulation中的free libraries有AGV模板,
, Q2 ^( }/ l# }9 O# S" M里面也有案例。4 K+ n$ c% X1 I, M8 G  Q
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。. f( H) E+ J1 R/ d: p

9 ?9 W; w/ ]! L+ m7 f8 E7 Z我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
( H0 h; f) `. l3 c1 s2 }  ^/ Z4 z" H4 D  P& k0 B% x
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
) m2 n& ~/ {* ]这是AGV_putin中arrive的method。
' m% w# E2 ^/ j; T( h$ T
4 F: ?  D3 ^" Y  q% ?2 `当到达物料速度越高时,这个报警更多,

' z1 s1 C" q0 Z9 g1 @另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-16 07:26 , Processed in 0.021021 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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