设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7501|回复: 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'
$ ~8 t2 x" T/ w) J- |- c$ C*/1 N0 f" P  i- X0 k1 u5 Y! l
is
& _& @" L1 p+ f0 {, x! k" E1 ~        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
! Q: f3 s5 T7 A) N5 |& Udo
; g2 Y3 F7 i6 B1 T2 G0 E% m        Lan := rootfolder.Internal.Tools.AOLlanguage;4 G, t; k+ e" Y" \
        if current = @.Destination -- else return
) |" @& F5 g. c( l' t6 [        then
% q0 G# M. ^- v; z                @.Destination := void;2 e- J: T. v& d: b4 N& |: ]
                if @.occupied then6 @- j2 o' R- r5 \& [# ?
                        part := @.cont;
, `* I/ x" H7 s. R) i+ H1 M                        @.transpOrder := void;- {8 r$ b- ]/ [4 h' S
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,! @, F& N2 {$ D, H( D* J( e1 L
                                @,root.eventcontroller.simTime);
9 ^2 c8 B5 z0 J4 H! z                        @.HasOrder := false;
3 t" O  w3 O, R  d/ W. n                        @.DrivingHome := true;; H7 R9 ~2 @* C+ l; \1 u  k2 `
                        rgManager.tryToStartTransOrder;6 ^; {' @3 F/ [3 R7 V# [
                        if @.Destination = void) g' e) |  u  r- H
                        then -- no transport order for vehicle @
6 J9 e+ y0 `. H2 ?                                @.Destination :=$ y  F8 R; m- @0 f  f4 p
                                rgManager.nearestFreeStation(@,track.~);
7 c! e9 l  V. ], L. g                                newDirection(@);   
% H1 f" j+ v) d1 `% n- k                                if @.Destination /= void then
8 s$ K' L9 C. ^7 A& L" N- o$ N2 t                                        @.Destination.NumReservation :=0 x2 F" B' T: u% Q% X
                                        @.Destination.NumReservation + 1;
' p" E! |& W" L, g2 w                                end;2 ]: U+ m8 z7 Q2 H
                                @.CurrIcon := "drivingHome";: C8 L/ k9 W) E! A; u( e( K
                                @.DrivingHome := true;0 Q" l% W, S% q3 Z9 s
                        end;2 N7 G3 J3 U/ r+ i/ s6 b
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
: j, o: S+ E  g+ T' W, o% ^% K                        part := @.transpOrder;; f  Y2 Q5 x: g4 L/ |
                        part.move(@);-- load part* a1 X$ y' _/ k6 @7 {
                        @.CurrIcon := "load";  ~* p5 G# s7 s
                        GlobalDistObj := part.globDestination;
1 b+ O% Q' g1 f9 x/ d                        assignLObj := rgmanager.rgAssignL;0 T6 A# E, _1 g/ p/ W
                        row := assignLObj.getRowNo(GlobalDistObj);
& r! L* c5 D: ~& J/ d                        if Row = -1 then -- since 704 p8 I$ N7 `$ j. x0 u2 C
                                if lan=1 then3 z: n. g# x  f% A- Y! w6 g$ m
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
, j& A7 Q" |8 n9 r/ y1 T5 b                                                to_str("in der Andockstation: \"",?.~.name,"\""));; {1 z6 @5 V5 Q3 s6 j: X
                                else
4 n) [# j: m/ v; x2 ~                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
! }3 d% e, s' K" J, o+ E                                                to_str("in docking station: \"",?.~.name,"\""));                               
2 i; M3 j- T9 C5 K) u8 a: G2 N: K                                end;, z2 s6 n9 Z, q/ x) O  A
                        else! P8 K& M, g4 N* @. P
                                @.Destination := assignLObj[1,row];! x3 a6 b: @! n2 M
                        end;                       
9 D8 E6 Z  ?5 P+ q  m3 r( ]/ ]' |                        newDirection(@);
& e$ E$ A$ W) D4 D, g                        @.HasOrder := true;
0 ^/ u1 L% X9 N# ~  h5 e                end;1 B  s& U7 K  U( T
        end;
: M; v9 e7 s9 q: L, oend;        -- of the method' g" R8 e2 a: \5 g- u5 r. E
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 ' u/ O& p7 r4 S5 M* I/ J' J4 P
: h5 D; u) F6 H
这是AGV_putin中arrive的method。  d9 e, y# A+ C# \6 f
4 |8 F7 k: F5 S1 W; [! j" Z
当到达物料速度越高时,这个报警更多,
5 W8 J; ^- \2 h6 v0 f可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。+ l. H. a2 W' W5 F1 z0 m4 p4 g
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
+ _2 a4 \& Y% j+ P# L, K- d3 w* S& a/ N8 W
另外一个小建议,就是move,所有的move都可以这样6 \! g* N; v) s+ ^. C9 e
if not move() then debug end
- m/ k) }2 @4 f6 M! O4 I这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
7 y0 m3 F3 B& S0 g- k, k9 {% @" k. ~plant simulation中的free libraries有AGV模板,
# A, V3 j/ |6 X7 A里面也有案例。" X4 {9 {- A1 ?) Z+ g+ l6 \" ]
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
; n% y% ]6 o9 |
, j1 i, O$ |( C! e4 h我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
, y6 M) K2 S% x' ~) T1 v& E6 m7 k1 t/ Y9 ]/ \
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 ' N' ~! |9 k+ d6 g1 T
这是AGV_putin中arrive的method。
9 e9 |: ]. j$ n5 Q; \  h/ ]3 ]. S: m4 r$ B3 e! V# h
当到达物料速度越高时,这个报警更多,
' h6 o: C; }+ N+ y* g: K" x
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-15 01:50 , Processed in 0.018420 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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