设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7821|回复: 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, Q6 L- ]5 n% R2 M
*/6 Q; E$ I6 Z. K! h/ {, J2 a  n1 z, f
is
' V: L, `3 p$ e: `' f& _' U. L        part, GlobalDistObj, assignLObj:object;row,Lan:integer;& b& t6 M  K! F8 t! D5 r
do1 u1 ~7 z6 y: E5 m
        Lan := rootfolder.Internal.Tools.AOLlanguage;
& h$ b3 r" h( M+ ~5 t8 `$ k        if current = @.Destination -- else return1 i3 z: ]: o2 p9 z- L
        then
5 R* ^) d+ |& F6 H  v3 a4 u                @.Destination := void;& |9 v5 m. E) p; f3 e- ?) q7 ^
                if @.occupied then: W% j6 W0 Q1 S. ]+ ~/ H
                        part := @.cont;
$ L2 m( O+ d. N# o                        @.transpOrder := void;
8 z0 r1 C1 [, h' f                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,+ T: z- P! ^4 W
                                @,root.eventcontroller.simTime);
* }. j2 N0 g+ H" @                        @.HasOrder := false;  N7 i& N" W. {; B  c
                        @.DrivingHome := true;( e& D! d3 J. j- i, _) T
                        rgManager.tryToStartTransOrder;- B: K& i4 _# K9 d) @
                        if @.Destination = void. q& L6 J9 T  ~1 ^. y5 p! N
                        then -- no transport order for vehicle @+ i# Q# y1 i( ~3 o6 K) L
                                @.Destination :=& U1 B5 O& k% v8 c+ {
                                rgManager.nearestFreeStation(@,track.~);
6 \0 T: G# b3 I: v: s% e                                newDirection(@);   
# n3 p& m# J* u1 k3 d, {  h0 ?                                if @.Destination /= void then
4 r4 |( {! a. P                                        @.Destination.NumReservation :=# v+ t8 S5 T6 x1 e3 t+ m9 l
                                        @.Destination.NumReservation + 1;
: F' M- h, L* u: e) a6 ]( B$ v                                end;
' t. a1 i, q" Q! o                                @.CurrIcon := "drivingHome";6 X# n9 T5 K9 Q1 z" @9 U0 e
                                @.DrivingHome := true;2 k, J+ M: \: a4 f
                        end;2 u7 I/ _, ?5 s6 H% A% `
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
+ H/ C2 H: T# a" k                        part := @.transpOrder;
' k2 j- ~2 B' @$ @7 B                        part.move(@);-- load part6 V! t" R' [) Q& W7 Q& v$ S
                        @.CurrIcon := "load";
& ^) e) \- z( \/ b                        GlobalDistObj := part.globDestination;
8 n& h/ e2 r* W4 v3 u                        assignLObj := rgmanager.rgAssignL;
6 ]" C4 t7 ~! I3 K, r                        row := assignLObj.getRowNo(GlobalDistObj);5 v8 H" t7 h$ v8 M6 @8 |0 ?# ?, I) m" ?
                        if Row = -1 then -- since 705 {4 }0 t8 p' Y2 @
                                if lan=1 then! Z; z; Q' k: t" @2 L. B8 l
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),* {. S$ U) K3 ~- {
                                                to_str("in der Andockstation: \"",?.~.name,"\""));, k% u- B( L! E0 e
                                else  \0 v! [) e% H7 s+ e
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
) a- d- i; X+ u6 S                                                to_str("in docking station: \"",?.~.name,"\""));                                " B0 m' }  \2 J( K
                                end;
4 L0 ~* o1 }5 D4 r' \                        else
, L' n) u. q- Q! R4 a, l9 l                                @.Destination := assignLObj[1,row];
6 c( E7 M; G% H& e                        end;                        : I* G+ l6 H: ?4 H2 A# R9 s0 f  T
                        newDirection(@);
1 \+ R; Y/ \. [9 p                        @.HasOrder := true;
- ^5 \6 t. b$ x0 `# D0 C; I                end;
& J! ^, C. J0 I6 C8 S$ w. C- a# Q        end;: y& f2 I/ o5 |- l9 j
end;        -- of the method- x4 |8 t) s$ w; D
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
$ A! N/ n- G8 W& {7 w7 F' A4 q% [" e. u
这是AGV_putin中arrive的method。
# c0 a& M3 ~: @3 x2 p
* P0 H6 o0 Z) p! W! j$ Y* F当到达物料速度越高时,这个报警更多,
; c: \! C! \5 [可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。) V, S! N: [8 \$ A9 ]: I
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?( ]8 \) r% `9 C' e  y- @

8 Y. O- Z( \- Z# s另外一个小建议,就是move,所有的move都可以这样
$ k2 t9 Z: e, x1 Z6 {% ~& v, gif not move() then debug end( h9 B+ i6 Z& Z. T
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。6 t3 z$ f8 ^0 j2 I* G' ?2 Q, I7 g
plant simulation中的free libraries有AGV模板," `, j5 a! n8 `/ u4 g
里面也有案例。* s. o, d0 t/ k
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
1 u: W* {% O1 a2 E
/ t2 l5 W9 x* d4 ]; L& t+ G& b: S, E1 \我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
) m! b1 H) Z5 O. I8 K0 r$ Q4 J& s
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
7 u: Z8 m0 [3 K+ }7 t4 G' d3 u这是AGV_putin中arrive的method。
: c, ^/ p: i4 ^; h+ H% A- C6 y9 {$ \' g2 t
当到达物料速度越高时,这个报警更多,
5 I  O- }2 C% f  q2 V
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-30 15:26 , Processed in 0.019599 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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