设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6889|回复: 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'3 Z, O; y8 [8 w5 J
*/. v; Y/ g) K7 w% J. d, d
is1 A& [/ j1 P0 `8 X1 O1 o
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
9 j/ c* k+ C; y' m- _) Z& jdo3 b+ w9 ]7 C; O# ]' P1 e
        Lan := rootfolder.Internal.Tools.AOLlanguage;8 E" n: R; p1 n, o
        if current = @.Destination -- else return
4 S+ o' {- V# _, \5 P1 m        then
# D& @  V: \$ e                @.Destination := void;9 @* V; Q* ]7 |$ [6 g: e
                if @.occupied then# m/ b% W0 `" l$ ~. m
                        part := @.cont;5 E3 L! b; ]. l- A0 @
                        @.transpOrder := void;* K3 ^! A( `& c! {* c; g6 S/ E3 l
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
$ p7 S7 z* o+ C; Q                                @,root.eventcontroller.simTime);8 y" e8 ?( }' R  E9 L2 d
                        @.HasOrder := false;
" i  s$ z( U# x  Q7 r                        @.DrivingHome := true;
7 n" s/ L: B5 d/ }$ H                        rgManager.tryToStartTransOrder;" X$ o% m0 S0 B, V! J- y
                        if @.Destination = void
" |/ _6 v; M& _. a& W0 `! |                        then -- no transport order for vehicle @0 J9 I# ?1 p7 V6 P5 H, L4 |/ q
                                @.Destination :=9 f" u, h( q! z) E1 u- C: i
                                rgManager.nearestFreeStation(@,track.~);
  G/ k4 P# z9 k1 k7 ^) P                                newDirection(@);   9 C% M0 z1 K# e
                                if @.Destination /= void then3 X$ x. S5 l/ I: G; [
                                        @.Destination.NumReservation :=4 y9 x; H& i& G: R# W3 ~) k& ^
                                        @.Destination.NumReservation + 1;8 t) H! N) i7 r% A$ ]% t  \0 ~
                                end;  G! d0 i, K3 `2 O2 o1 p
                                @.CurrIcon := "drivingHome";
" {/ c* o6 J) A: K7 n- j                                @.DrivingHome := true;
0 C' \/ _" q5 A; g- G) \                        end;1 C8 I+ g# h* T$ i
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station% q  U9 t0 F% Z4 M
                        part := @.transpOrder;
- L6 O- r7 P" @/ y( b                        part.move(@);-- load part& r2 `- E, r' g0 ?: s/ [
                        @.CurrIcon := "load";" ]/ `9 S# d4 \# K4 {/ [# f* K# X
                        GlobalDistObj := part.globDestination;
" Z: G+ q$ I" v6 ^9 q2 v8 m" Z                        assignLObj := rgmanager.rgAssignL;
, K% h5 ]! E+ J! G( y( ]! \                        row := assignLObj.getRowNo(GlobalDistObj);% t5 \+ ~$ t9 p  E" V
                        if Row = -1 then -- since 70% l; T: [. Q" W6 m( F
                                if lan=1 then* P* ~2 G4 @. G5 t2 v( N
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
' }7 [5 _; ]- A1 `. V                                                to_str("in der Andockstation: \"",?.~.name,"\""));
1 m5 b  u& Q5 w$ }$ Q0 G# |                                else/ C/ ^6 f% l% _' k
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),  ^' v- D/ m/ J0 }) C
                                                to_str("in docking station: \"",?.~.name,"\""));                                  O: @6 d7 [; L4 M  o# M
                                end;
" u& _  V% p% G                        else
* H' Q1 W+ \2 Y- O                                @.Destination := assignLObj[1,row];" L, g) u$ O0 x, B2 d3 @
                        end;                        4 Q, i5 I2 c. I
                        newDirection(@);0 W9 v( b1 B' M1 ^+ [2 L
                        @.HasOrder := true;
) C3 {* I/ R) T; w                end;& p" i- Y# ^  b# {1 W+ [
        end;
6 |9 x1 f3 K9 |! E, ^  @end;        -- of the method9 K8 ]3 X6 c4 |1 v, u$ p
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 ! G% E; s5 O3 j/ O) D. R/ a' l4 Y
0 A4 W& M. }( p$ P: G! ^9 j# P
这是AGV_putin中arrive的method。9 K, V" w% H! ~- u+ A3 O+ p
; a& ^  }0 M' X! Q- k. t* H
当到达物料速度越高时,这个报警更多,
) V: b: C& a! Q( B9 h可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。4 G! w) C- l( Z1 ]6 n8 X' r$ a
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?) x8 k7 e) F: U0 V3 s
7 ^1 |1 y0 |0 v) c- U  `* Z
另外一个小建议,就是move,所有的move都可以这样
/ Y$ d; ]2 x( ~2 Tif not move() then debug end
5 x1 }3 \- }8 E这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
: W) x/ O" H! F: K# w% Fplant simulation中的free libraries有AGV模板,# h+ r* l6 [3 B! {( m
里面也有案例。% z' T3 _& z2 a) z% n
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。0 ^- ~4 b: h2 a% L; C5 K1 ^
3 E; z4 u; {3 X& D3 e' M5 c: S  G
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
2 r4 u3 R$ z% N% [5 K' w, B1 ?5 d7 @- C7 S
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
; a: t* y( ]7 j. t- e这是AGV_putin中arrive的method。. q. T$ a- E% U( A% x% R& Y

( `4 ~# k3 K4 h当到达物料速度越高时,这个报警更多,

  q# Q+ `" n& g' G# Q5 J另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-5 01:50 , Processed in 0.020709 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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