设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8521|回复: 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'
# h& m1 d0 t0 o% V  R/ a*/" u8 S5 n/ V+ E$ p. t7 `, p7 q3 H
is
8 S6 W' w8 a: R# a3 d        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
* k9 o& G; Q  w# Y' Ndo
  |8 O9 Q4 {* q4 G4 ~5 l        Lan := rootfolder.Internal.Tools.AOLlanguage;
2 M9 }5 x9 ^0 I* Z5 X# |2 |. L        if current = @.Destination -- else return, L: k  j+ d9 c$ ?$ x; |
        then
- W; T3 w( |: ?                @.Destination := void;2 e' T* ~. Z4 t2 ]5 o1 M7 H9 U
                if @.occupied then. }0 @% X$ i1 O$ g0 @
                        part := @.cont;3 B& {) o* E- }# ^, A1 |
                        @.transpOrder := void;
  g2 H* P& B$ d9 i/ |                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
+ _& u  R; R1 j* o/ S                                @,root.eventcontroller.simTime);
3 c' X$ Q# o( y$ L                        @.HasOrder := false;2 y$ e" x8 e* `+ g6 j
                        @.DrivingHome := true;& g0 c9 k; U; R1 X' x3 i* h
                        rgManager.tryToStartTransOrder;
0 o! v$ T  m7 G/ ^  l- d& Y                        if @.Destination = void% ^9 X  R3 J- Z1 `) H' L
                        then -- no transport order for vehicle @
0 l; w* B# W: a1 g                                @.Destination :=/ @" R4 p; W) D" o
                                rgManager.nearestFreeStation(@,track.~);8 y! S! Q( k; Q6 ?% K# N
                                newDirection(@);   6 d8 {7 G2 X6 a3 Q; ~
                                if @.Destination /= void then
/ |3 z# H& K: @! V: C                                        @.Destination.NumReservation :=8 h. {; n: O* x2 W' E
                                        @.Destination.NumReservation + 1;
: T& d2 p* U# i0 z( t6 ?% s8 `, a                                end;
. }: _7 b: ^! }% p6 ?- @                                @.CurrIcon := "drivingHome";
( Q% l5 w, x! e" t8 i: E                                @.DrivingHome := true;
* J( g* z' F$ t, m0 _  ]                        end;. j7 v  N) j; F6 |
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station% H: d/ q  m0 \, z8 Z; k
                        part := @.transpOrder;
0 l( S* s+ x* Q) L/ C. w                        part.move(@);-- load part
$ ]% R) N" {0 |& t& u                        @.CurrIcon := "load";2 a" Q6 h4 C% j* Y: P
                        GlobalDistObj := part.globDestination;
; R; t2 D) V9 E# _                        assignLObj := rgmanager.rgAssignL;' {  r+ h, k+ {  m& \8 M/ j6 h
                        row := assignLObj.getRowNo(GlobalDistObj);5 N& A$ q# J8 Q3 k  B3 O
                        if Row = -1 then -- since 70, Y4 v0 T6 h3 c' N
                                if lan=1 then
' f2 E% A, h2 o1 N" n                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
# n: U/ r% H7 ^4 U, m; e5 C  B7 E6 |                                                to_str("in der Andockstation: \"",?.~.name,"\""));
* M0 x$ K8 E3 p) x! _2 i( K                                else3 ^% K1 m3 u4 S6 @+ j) a
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),6 L( k( K6 |) _* g7 h# Z4 ^
                                                to_str("in docking station: \"",?.~.name,"\""));                               
( Y) X: V/ @" q) c% L                                end;5 o' `2 J6 R$ c% r
                        else
0 I1 F; ?' p* g) @& x. C0 y3 r* x  J# u                                @.Destination := assignLObj[1,row];
: r+ Q/ Y$ i- v" j                        end;                        + r0 t7 \; N2 B
                        newDirection(@);- D1 [5 e& q  l& F$ Q4 T3 W
                        @.HasOrder := true;- c% u8 u5 F8 [( v- V$ r! g
                end;8 f! W& _; S( S! O
        end;
( b0 k4 O; j; H7 t2 Uend;        -- of the method/ g0 ]9 X& H- z* r5 r
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
( H1 z' o' l! A4 t. f7 l4 o1 [4 @( n1 t2 _* ^, D# z- _" J
这是AGV_putin中arrive的method。4 u+ h$ s+ O4 s" V( A1 I
/ N9 M( v) T. }8 V
当到达物料速度越高时,这个报警更多,; X7 ?! |( O! t5 D: s
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
  g- G* W, u; j, C: N4 |程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?) [8 |$ ]* Z; ?( F2 h4 ?
* P0 W+ b6 f3 a
另外一个小建议,就是move,所有的move都可以这样
, J5 I6 k. C# C9 Z% ]if not move() then debug end0 o% N7 ?2 A7 \5 Y
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。) y& E* X8 Q- V( V3 A+ t; q8 U
plant simulation中的free libraries有AGV模板,+ J( n- E  D* E% @' s& ?
里面也有案例。
1 {; j1 e" A, |我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
4 z$ }( z: M0 h7 v) Y& }/ L; ~6 O- k/ ], I$ t+ A; L! i
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 . n1 D+ A, q: f0 [4 Q
4 |6 P( L, k: x" a2 W
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
" o% v0 [# P. x- B! i0 L  T; W: `0 ]这是AGV_putin中arrive的method。0 q' r/ v% Z$ _6 a% f5 r7 e- d
. r+ C( ?3 b' [. a1 b8 Y
当到达物料速度越高时,这个报警更多,
( J$ W. x3 s* J
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-9 07:11 , Processed in 0.019824 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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