设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7263|回复: 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'
( `/ s5 t/ \$ m*/5 f5 {6 X( _; k; Y1 z
is! Y4 }  @; F! u4 y, v# y
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
$ c9 s6 m  _( E. B! K' v; b" O  jdo
! j5 }2 Q( S* v: k7 t  y        Lan := rootfolder.Internal.Tools.AOLlanguage;$ @6 L9 h" X/ ]3 d! D2 G) a+ k
        if current = @.Destination -- else return
5 u3 Y: N; Z* S  F5 J+ u% h" Q        then
# t% L, Q: Q* v: C5 u% V# K                @.Destination := void;% k/ L; x, p4 h
                if @.occupied then. f! U/ T7 o% ~' t0 a7 j" j' r
                        part := @.cont;: M5 j/ g) Q+ E; {' y$ _5 ]
                        @.transpOrder := void;
, g0 V  L2 ~2 H0 U; v                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
8 w8 f0 y  r2 M; E) ^+ C1 b6 q" V) t                                @,root.eventcontroller.simTime);
6 a( Y. D, `" I8 {                        @.HasOrder := false;( z/ s! E7 i  |( n! D: C
                        @.DrivingHome := true;
$ e! t( Z2 S9 _3 O) n+ k: M                        rgManager.tryToStartTransOrder;& R2 `  p$ E+ G; K1 g& V
                        if @.Destination = void' q+ r& c# w, V) B
                        then -- no transport order for vehicle @6 b7 f! b/ D" i! {5 [* ^
                                @.Destination :=* Q; F. h+ K3 R4 `1 V+ L* G$ }
                                rgManager.nearestFreeStation(@,track.~);' l2 w0 S2 r. d
                                newDirection(@);   ( z9 A& g9 G$ x* Z9 @' C$ }
                                if @.Destination /= void then
4 {+ G) s4 p% e. e/ Z                                        @.Destination.NumReservation :=" G( H/ E, U0 I
                                        @.Destination.NumReservation + 1;
. E, n9 X* q; @0 Y, R: D                                end;
9 j$ X$ w1 h, S1 V6 @* \                                @.CurrIcon := "drivingHome";% G" z! }5 B+ s9 a+ ]' g! n( O
                                @.DrivingHome := true;& f" u" i- M- C& p) B$ M* I
                        end;& d9 \$ j. W+ H5 n( O' O/ Z+ S7 z
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station1 w- ^5 w' u$ O- G( g) P
                        part := @.transpOrder;
9 f, }0 [( g" d1 F5 s' Z                        part.move(@);-- load part
$ s; `( a3 Q$ [: N                        @.CurrIcon := "load";6 F3 S% r( ^6 }/ H) q
                        GlobalDistObj := part.globDestination;
$ y# B) e7 C  F' w                        assignLObj := rgmanager.rgAssignL;+ v3 \, U! p  Z5 g: \! U4 D4 e, D
                        row := assignLObj.getRowNo(GlobalDistObj);2 m6 K/ L" r: c8 x- Y( w
                        if Row = -1 then -- since 70) _, }$ O3 w; J
                                if lan=1 then
% u2 y& s! u# S4 g0 F                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
5 N  b2 q# x7 k8 h, w                                                to_str("in der Andockstation: \"",?.~.name,"\""));
" P8 i/ Y* F8 W                                else
0 k3 ~5 t2 C% b& t3 k1 v7 L" y                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),, r: C+ a# G$ E# y
                                                to_str("in docking station: \"",?.~.name,"\""));                               
* T2 M7 O! ~* @. H( P, t, f5 }" q                                end;0 I) d7 g) O1 `4 ~$ S
                        else" n# J) }2 m% }/ u
                                @.Destination := assignLObj[1,row];- M& _) C" z2 o8 A+ a2 ?3 ~) D
                        end;                        - E: Y8 ], `1 N/ Q0 q' n  p; \
                        newDirection(@);
/ F, G5 M: L2 i                        @.HasOrder := true;; L/ Y5 b$ d! k
                end;
" g  Z  A* A+ z8 W        end;7 K% U7 c) N7 ]2 _7 {
end;        -- of the method: W- Y& \5 |8 W5 [- Y3 |
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 7 K5 r' d+ C9 D' i. E. z+ s; N

9 L" J& |* Z' ^* b这是AGV_putin中arrive的method。# q5 Q) N0 a5 [; g# B& F
7 m! M8 o, E  w3 ?: w
当到达物料速度越高时,这个报警更多,5 s4 q0 \: b2 A, z
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。3 p( n- v. s" C. V$ e: x
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
0 D8 L" \! Q. C: ]$ n7 u0 {, L0 [- Y& O& @- `
另外一个小建议,就是move,所有的move都可以这样
% \. \+ m8 _3 @7 d3 q( z5 B, _if not move() then debug end" R. C/ F0 Y* P8 H1 {+ e
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
, n! @2 g  u/ ^4 G( Bplant simulation中的free libraries有AGV模板,
5 c4 x; g, z: U. e2 Q6 m里面也有案例。
, O6 n0 F. v/ t8 K* K我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
( f: i9 q' b" G! ^! [' g' a& z5 B4 p( ?5 W1 a/ L
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
: u: z& s6 B1 s* {+ }& w3 v  w+ \, x
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
6 x- K8 [" f# U6 l' H5 C这是AGV_putin中arrive的method。4 `% s3 Z( u; l. F8 l  {$ b

/ o' W' T1 Z" S' V当到达物料速度越高时,这个报警更多,

! M8 m$ Q& a" @/ v6 U6 V1 M另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-31 14:44 , Processed in 0.026026 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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