设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6179|回复: 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'. r: g( R; s6 S# G) d' G& f
*/
  T# g3 p6 o9 a# ?2 S, mis' _0 I& }2 h8 ^: E8 t% r
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
7 r( F$ @8 Z8 }+ Ndo  j* j  ]9 z: K  w
        Lan := rootfolder.Internal.Tools.AOLlanguage;, I1 x% g# B! i
        if current = @.Destination -- else return
( k+ B: F# }( Z        then( c3 n1 N1 A5 J) x1 C7 j8 y
                @.Destination := void;
' B6 u2 Y1 s' c  F. `5 I                if @.occupied then8 ?. r( T  `$ ~% o& j
                        part := @.cont;5 t" d' ^- y: ~5 E" l( t" Q  h
                        @.transpOrder := void;
6 Q  L" B  i" E                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
9 F; O3 x+ y4 z+ ^; M                                @,root.eventcontroller.simTime);7 Q% a) m. r1 h5 y! q# b
                        @.HasOrder := false;0 ^. Q, e0 o8 P$ m0 I# q
                        @.DrivingHome := true;1 l' j/ Y9 ?% t7 T
                        rgManager.tryToStartTransOrder;* v# G% U9 d2 R+ d: @
                        if @.Destination = void
8 w6 \  t' @* D2 j; G                        then -- no transport order for vehicle @
) _& O* x6 U7 M& ]                                @.Destination :=
- a; J+ h5 l& J                                rgManager.nearestFreeStation(@,track.~);  v2 t$ z# A. @5 d+ z
                                newDirection(@);   
4 k3 V9 `. Z' Y5 v6 O2 O) M                                if @.Destination /= void then1 @1 M4 s- z+ U, K  y4 V( H, B
                                        @.Destination.NumReservation :=
1 m8 R0 M0 K1 J# H& `                                        @.Destination.NumReservation + 1;
! D+ c/ }2 {$ s: u! ]# C! o( i, x                                end;5 M+ D# P- e$ U& U7 G
                                @.CurrIcon := "drivingHome";
: l2 N# o1 e: S) L  g) Q                                @.DrivingHome := true;
; B$ L  h. Q# y& s2 I7 [                        end;( Y2 ?8 b5 @( b! ?/ ]" _
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station4 A" K. Q; {  z  h; b/ B
                        part := @.transpOrder;" C. J7 F! @9 K7 w5 w. k; c' l* f
                        part.move(@);-- load part
; h# ^+ n8 L! q                        @.CurrIcon := "load";
7 K6 b: f% `4 O, q6 s                        GlobalDistObj := part.globDestination;2 z' @9 p+ }. e1 I
                        assignLObj := rgmanager.rgAssignL;
# l. K# X( Y* c2 G/ O+ K4 U                        row := assignLObj.getRowNo(GlobalDistObj);; F  D9 P) e% I. ?: v$ ?7 o
                        if Row = -1 then -- since 70; @* p* H. b/ q) @3 V, ^, h3 {
                                if lan=1 then& e; b5 Y/ x$ m
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
7 _, G8 \% ]: `3 a" s0 O                                                to_str("in der Andockstation: \"",?.~.name,"\""));
) w1 X2 e+ C% ?4 s& v8 t+ K0 t                                else- o/ S% o' j6 |' h; ~8 w- \
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),; A' {2 `$ q/ k! q  F; A
                                                to_str("in docking station: \"",?.~.name,"\""));                                , Z1 m" N* u& r0 c0 s9 Y1 A
                                end;
) G$ ?1 }: B. o                        else6 n& z  T6 t. v/ ]. ?) P
                                @.Destination := assignLObj[1,row];
: O0 l* L% F0 G( T                        end;                        0 Z: \8 L4 ?/ v
                        newDirection(@);2 |- e0 W& Z/ {* U9 s
                        @.HasOrder := true;
) G0 [6 q" J7 }                end;) z$ Y/ C: u0 b  D3 E: [
        end;
% G- p9 I8 n* q  F5 ^0 }* g! |end;        -- of the method
" `) v( w+ U7 Q0 ^! C
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
9 a# P! S3 B3 U9 Y5 z3 q
; [6 V1 O* t- a1 T+ ]) M这是AGV_putin中arrive的method。5 Y9 ~, x( h) o" n$ Z$ F8 G

3 t4 ?9 L, p! s* L0 e9 Q, o当到达物料速度越高时,这个报警更多,5 J' P0 C4 o: {- w
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。1 u  a+ i+ R$ l8 R; d/ q% c
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?" B6 P% F# |' [- Q: P  ?
* |5 B# w( Y+ I. O) V8 h
另外一个小建议,就是move,所有的move都可以这样
0 Z  U* }" A& {& ?if not move() then debug end1 v7 O% N  E9 c& x! S6 _
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
0 Y* q' Y. A8 q) i( Hplant simulation中的free libraries有AGV模板,$ o  ~2 o2 o2 G7 A; |  `* W) p; j
里面也有案例。& F1 m& K! N* q. |: K& i  p
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。; M( [9 j, D( ?

$ L4 U: @7 J) O/ O+ [我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
4 D% L9 x) |: ]( M% B; D6 v# v
9 G9 W( j' L, @' `+ Y那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 / F; u+ s6 a7 G0 J0 y+ J% U
这是AGV_putin中arrive的method。1 i- l& K# e. V/ [+ n. R& r  P% G
: k3 @- r% v( d* \0 q5 j; t/ Q+ Q
当到达物料速度越高时,这个报警更多,

. Y- Y  C! R$ E9 G% W0 h  h另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-1-23 04:29 , Processed in 0.019427 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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