设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6388|回复: 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'7 b/ `1 ~: `/ Q
*/
  T- e; f$ _. f) M3 a( P/ m8 Pis
8 {; d2 Z- w/ ^8 `5 J. e1 w        part, GlobalDistObj, assignLObj:object;row,Lan:integer;8 ?" d4 A2 z- h0 N
do
# n2 Q  m2 R8 e2 U8 x        Lan := rootfolder.Internal.Tools.AOLlanguage;
* E1 I  ^* Z1 ~4 N3 r        if current = @.Destination -- else return
9 [; ]$ c: r' Z8 o. q        then' c9 U% E9 B2 m2 }. j+ M- k8 W
                @.Destination := void;' Q% S$ w: W( N/ q* l4 `
                if @.occupied then
. X- o- _- ]0 |! M, z  R                        part := @.cont;
6 s5 \6 h5 W/ R; s2 R2 l                        @.transpOrder := void;5 D3 {  y) z- n+ U
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,6 d8 H6 F1 ?* |! l6 h: s2 [1 q7 v; w- g
                                @,root.eventcontroller.simTime);, T  v/ k4 g/ H8 S" o/ e
                        @.HasOrder := false;
# r; n6 F! Q* t; F: E% a                        @.DrivingHome := true;5 @% |( |0 r( G8 @
                        rgManager.tryToStartTransOrder;1 t2 A4 n% U0 |: T
                        if @.Destination = void
. H5 W; i! J) h5 J: e) \. f0 ~: N                        then -- no transport order for vehicle @8 n3 D4 B) `6 M( P$ G* z5 N
                                @.Destination :=- P$ I) ~' r9 J* S
                                rgManager.nearestFreeStation(@,track.~);
+ K3 B5 R0 X* v1 B7 P; V2 M3 _                                newDirection(@);   ! k2 [2 ]5 _1 q. N2 E
                                if @.Destination /= void then
: g% R. X4 w- Y1 y- V                                        @.Destination.NumReservation :=9 i/ R* ~( W3 X0 o8 X6 j
                                        @.Destination.NumReservation + 1;
3 ~; a: E' T( m) q+ A4 q                                end;8 j+ J1 y7 a/ q3 o/ Z
                                @.CurrIcon := "drivingHome";- g8 a# k& Y+ W- G! `: Y
                                @.DrivingHome := true;; {( D: C+ q$ `) N
                        end;
$ V: j" y/ }* y/ O& j                else -- the vehicle @ is empty, both vehicle and part are in the same dock station8 T/ Z: y1 H, _( d. [
                        part := @.transpOrder;
6 c, ^; D. @" a' g. p0 F7 P, G                        part.move(@);-- load part
" ~$ V. T5 T6 `( s1 O! |: u7 o, k! T                        @.CurrIcon := "load";& f0 k( D, P0 C/ s' Z) T6 W/ T8 _
                        GlobalDistObj := part.globDestination;
/ c! S+ j/ Z* {; `1 w# _* {  J                        assignLObj := rgmanager.rgAssignL;
" Y6 E; |, D, L                        row := assignLObj.getRowNo(GlobalDistObj);
/ m3 d6 {+ R( g( n                        if Row = -1 then -- since 709 V3 O7 V! k- ~1 R0 r# d4 P
                                if lan=1 then3 W7 O% W6 c: G6 s- K8 V$ j
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
' N' Z8 k% u8 P1 E- X2 ~                                                to_str("in der Andockstation: \"",?.~.name,"\""));/ H  }% t# q+ X8 i4 d# b+ J
                                else
& Z3 }) k4 y0 ?                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),( P8 i7 G1 O' D
                                                to_str("in docking station: \"",?.~.name,"\""));                                9 h& z/ D8 |$ y# n0 {
                                end;8 m4 ]( w: U: B! O( ?/ i
                        else
- w# J/ Q1 i: w. O. ^                                @.Destination := assignLObj[1,row];
$ I6 A# o; K4 Y9 q; b* [8 Q+ W                        end;                       
' a" p% n4 V7 {4 x' v2 S7 P, U                        newDirection(@);
/ ?: a. w2 K2 D8 |: A* m0 ?& h1 i3 n                        @.HasOrder := true;, h' {4 |. ^1 j' Y) L; S8 y: z* x
                end;3 q9 d/ K& A2 D8 A9 n  r6 ?
        end;% c* h0 q! n* m. t* r! |0 N
end;        -- of the method$ D* B  s4 H% a6 R
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
1 T$ i; {. m& w9 L3 L
- V. o# g3 F" K: ^这是AGV_putin中arrive的method。
1 @2 A/ Z, |& K+ F: B; \) _  C; O: v
当到达物料速度越高时,这个报警更多,
  {% N, V, q  |8 `可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。. L1 k% L7 s2 t( l
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
/ U6 H8 K& B" V8 P, R9 F) @% J0 R+ ~0 k
另外一个小建议,就是move,所有的move都可以这样3 Q; L+ b! g  Z  k% Y
if not move() then debug end
; J( O: h( ]5 S4 g8 q这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。' A, A, ?: Q) p$ e( h
plant simulation中的free libraries有AGV模板,1 i- V8 {$ E( }; a
里面也有案例。, t8 S4 F, p$ f3 [9 K
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
, O" }" D( I) r, B* d" s
, I; G) [3 i2 ~* j: V我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 0 d9 t+ {: F2 J- f

5 L+ _) H/ C8 Y1 Z( Y( y/ }! R6 d那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
6 J7 P+ M4 m0 e, S# Q这是AGV_putin中arrive的method。
5 g2 m. @5 Q' C8 Y5 M/ H! C% `- U# H1 K- T; E( t% Q9 B8 k
当到达物料速度越高时,这个报警更多,
  S% d  a! A' K
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-3 13:44 , Processed in 0.020890 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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