设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7723|回复: 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'6 f+ b% Q1 p0 u8 X8 o6 r  w# A" m
*/
- \4 \. S, u: r& M8 ~) K$ vis0 E7 B% V* ^6 Q/ o( ]8 _& W
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;: t/ K7 L  {1 A/ Y6 H8 U
do
1 Q; V" K& E, B" u8 ?        Lan := rootfolder.Internal.Tools.AOLlanguage;7 k7 D) U" c& f: c/ Q3 D! c
        if current = @.Destination -- else return
7 n8 Q7 n0 C4 x  W$ ~$ S% q        then1 r: G9 a6 u& e- t
                @.Destination := void;
, z9 u; h1 ~2 ?9 N( v: v                if @.occupied then! o) F4 p! d5 I7 F! O# G) N
                        part := @.cont;
6 d( C& {& i. H' x# x: r5 Q                        @.transpOrder := void;( A% d7 \: z8 D4 ^4 D
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,9 t$ j0 t& w  L& p+ C
                                @,root.eventcontroller.simTime);
, v  q5 ^- |+ p/ e+ a                        @.HasOrder := false;
4 C+ }; B; I1 v" O$ z* ]                        @.DrivingHome := true;
3 V/ s& O% j! X# P* x. }% I                        rgManager.tryToStartTransOrder;
8 E/ _- i0 w- }( G* v  L                        if @.Destination = void( Z: a# U% P# ~2 O' t
                        then -- no transport order for vehicle @
2 n" o" r, g) r0 c                                @.Destination :=
# U8 T. Y" t! m: |9 C                                rgManager.nearestFreeStation(@,track.~);5 N* x. t0 S2 g/ Q' h! v, a( z
                                newDirection(@);   
& F5 T# X3 k. `; d/ }) }0 ^. q+ ?                                if @.Destination /= void then
- V2 ~- a: T: O                                        @.Destination.NumReservation :=
" t6 I& s( x' Q                                        @.Destination.NumReservation + 1;
- m. v& _' Z/ E+ P" W! u                                end;, q$ w) `% T  N2 b
                                @.CurrIcon := "drivingHome";& W' Z  [0 J- p- Y$ x+ H, t& G7 e0 V
                                @.DrivingHome := true;- k- N0 p* L6 a( \
                        end;
: E6 a, ?( X' f                else -- the vehicle @ is empty, both vehicle and part are in the same dock station( Z0 t- T5 V. p, y' C/ H+ D  N, V# V
                        part := @.transpOrder;
- ?1 u8 z6 e: Y                        part.move(@);-- load part
2 z5 a2 |- r) i7 I4 r/ X                        @.CurrIcon := "load";
, }: x% x3 S5 H0 z- j                        GlobalDistObj := part.globDestination;; _" A+ b# g5 h1 j+ ~2 w
                        assignLObj := rgmanager.rgAssignL;2 Q  G8 M. y2 z# L0 c& k. C
                        row := assignLObj.getRowNo(GlobalDistObj);! p4 K6 m3 Z! j4 [; o9 l  J7 F  H: N
                        if Row = -1 then -- since 70
# E( Z4 m6 g' I                                if lan=1 then
/ \' y2 G7 W1 H3 C' l                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),  B. q. r( V% M! L& O. Y
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
- I4 C# h( s9 G9 A/ N- b                                else
8 @2 ^# Z/ u+ l1 x- B1 G, U- l; s                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),1 g0 s9 ?) _, Y
                                                to_str("in docking station: \"",?.~.name,"\""));                                0 w, G. F  v- ^) d6 D" I
                                end;
0 L) h( v7 c& y# y) G8 M. K                        else
0 U5 [# Q% O/ J) c6 M                                @.Destination := assignLObj[1,row];6 g& n# V3 L* l4 J7 T  n* H
                        end;                        9 T- q) ]# |7 w5 v. ]; o( ~
                        newDirection(@);
. b% z6 J4 ~* N/ b: I% ^3 H) e) Z                        @.HasOrder := true;- i; |9 S3 U# Q4 V; d6 y8 }
                end;% B" L6 L2 T- g9 ]; K
        end;
6 _2 I" e) {" E% h. D/ qend;        -- of the method
9 E2 A/ H) X% y7 M+ v
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
# h8 f: I' e$ J; {# y( Y0 F' D0 P' N" O( y# d& ^  e: f
这是AGV_putin中arrive的method。
! _6 f( n. l! U* E
' [7 h+ y: z% C当到达物料速度越高时,这个报警更多,
3 C+ h  K3 N; C4 _$ c$ G可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。* i3 \4 n! m: D
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?0 ?" w! r2 t. \, e! f
% [/ s/ }6 T. a$ \
另外一个小建议,就是move,所有的move都可以这样9 o# t: j$ S* G
if not move() then debug end
/ k% w) p$ @- r这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。# D$ L+ m) X; `& }
plant simulation中的free libraries有AGV模板,2 r- P& M2 A' C' ^! p
里面也有案例。
; s+ O0 w8 I& d我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
+ |) o  ~( o1 J6 ~6 l& y2 }/ Q- S
$ c  V% m' P/ P0 }' ^) P我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
# A/ W8 i" y$ }! n% F+ J' ^
: O2 Q* ?, t, U- o3 B; u那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
: C: f7 m9 R+ D( D) V这是AGV_putin中arrive的method。
! F2 M4 l& u! x' d# v0 _& U
$ F' A# M0 |3 w" z当到达物料速度越高时,这个报警更多,
% @: y9 D% g. h+ T1 }  R3 B+ y
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-26 03:12 , Processed in 0.021123 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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