设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8880|回复: 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'
0 Q/ q/ ^( L" h, f' o*/
1 Y; u8 K% ]$ }. m( his! `/ y7 V% o; D
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
; _9 X  q: {& f+ z  T. fdo
4 l/ h3 {, z4 t4 k! [0 Q( k2 ?        Lan := rootfolder.Internal.Tools.AOLlanguage;
% K% P  V7 U% o        if current = @.Destination -- else return$ o5 C- w: `% ~$ ?
        then* F# k# s' q' R7 f( \9 U, k$ y8 D
                @.Destination := void;
( e5 v* E. J7 s1 a, A                if @.occupied then& X3 T7 x% w' r8 ]
                        part := @.cont;
# |) ^8 n6 L1 x2 K! e2 X                        @.transpOrder := void;% g" U4 h4 \2 u, V2 `. R% T4 B
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,: c1 G9 w( K4 r6 x+ }! _
                                @,root.eventcontroller.simTime);* u) |% y$ W' x7 y7 i( q
                        @.HasOrder := false;4 B/ w+ c) D' I0 {
                        @.DrivingHome := true;
% @9 m1 I6 n- t0 _6 b                        rgManager.tryToStartTransOrder;9 o6 \; }  {' `& N3 K
                        if @.Destination = void! Y4 [( _/ p1 h: ], K
                        then -- no transport order for vehicle @3 G, {# H9 j$ X, k
                                @.Destination :=$ Q5 O& |, u$ `# c* ?
                                rgManager.nearestFreeStation(@,track.~);
8 t6 K+ L/ ^  @! _1 R0 [6 J                                newDirection(@);   ( i' A1 Y7 l. W, l8 D% Y2 \3 v$ j
                                if @.Destination /= void then0 [  p& G- u6 f0 P" D
                                        @.Destination.NumReservation :=
9 Y/ }$ T$ T; X2 g6 q7 h* v                                        @.Destination.NumReservation + 1;
1 U6 V. m. i" G+ `                                end;
! n) R6 m9 `5 l! `( O6 g                                @.CurrIcon := "drivingHome";
  ^! Q0 B4 p1 }! u$ \$ f8 [                                @.DrivingHome := true;" l6 p' h( d- e" Q3 O% w
                        end;1 o4 X% W( P% q6 ^. E
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station% b+ I% S9 }+ E4 r
                        part := @.transpOrder;: ^- Q2 |% z7 s0 }' H
                        part.move(@);-- load part
  N4 o0 R; s8 K( t: u                        @.CurrIcon := "load";
) ?1 |1 D; I& O! H! V3 g/ T. ?                        GlobalDistObj := part.globDestination;
. P! o+ d! w- U- ?+ j+ L                        assignLObj := rgmanager.rgAssignL;
: G$ P# s9 [+ U( j/ f' n- U                        row := assignLObj.getRowNo(GlobalDistObj);
$ N$ K! \' q1 a( P- u! c                        if Row = -1 then -- since 70
, G$ \% m+ f& h                                if lan=1 then; P2 }$ C2 a2 X1 X
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
) j% `7 t5 l! U3 f0 a2 D/ c. B, D                                                to_str("in der Andockstation: \"",?.~.name,"\""));9 F8 n7 X' u9 i  k& X: \
                                else
5 _7 n: K, o: g) J% o                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
$ B7 Q6 ?4 O: g7 u+ h* E                                                to_str("in docking station: \"",?.~.name,"\""));                               
. o' v" D' m2 P6 n, @+ h) p                                end;
! w  _8 {; f; I6 B) ?                        else
# j* T+ w: M( X, i                                @.Destination := assignLObj[1,row];" C7 |, }( {( I# L. Q
                        end;                       
7 d" P& `( n# M  U3 k- C3 }+ {                        newDirection(@);
5 Z2 F8 V3 @4 D% F                        @.HasOrder := true;
. |3 u" R8 i  t) X                end;. z2 W: e2 |3 \2 n! S* u+ P0 u
        end;1 p" s6 X$ y* q# f
end;        -- of the method4 z0 s6 n* a$ B' E3 `6 F- e' z
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
/ d# q# F/ N, x8 n; b9 I; x/ K
  X  z9 k. L  w' N/ ^5 p  D这是AGV_putin中arrive的method。0 Y0 c5 S3 A( I7 O" P# n

! \( v( k$ o& n7 s# Z4 Q当到达物料速度越高时,这个报警更多,& |4 _7 {5 j3 q0 B" I" M. _1 n; e
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。4 j# H7 J' w, U) M  D
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?* L+ r5 Q$ }: w7 ~, ~+ P  o

! [6 v: M+ m: F) X2 n另外一个小建议,就是move,所有的move都可以这样
* W, ^: I1 s3 `% vif not move() then debug end
8 K$ j6 z& j/ b这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。: J0 p" q, R# x- C" ^! P
plant simulation中的free libraries有AGV模板,
2 P- @; f8 L! g, P" ~里面也有案例。
7 p2 P. X9 f' v1 x我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
+ A2 ]6 N# a8 ^) G) y$ Q6 o: B. Z$ T9 c1 l/ \& T
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑   b0 `3 p% `/ k, L" p

' E+ U3 S$ \7 X那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 0 M" z5 }) R% w: N
这是AGV_putin中arrive的method。1 C. I: h. ^; }1 D+ c! m0 v' q
$ Q7 R0 z' P# w4 t0 z
当到达物料速度越高时,这个报警更多,
; \+ G5 N7 |) u  F0 e
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-7-2 01:55 , Processed in 0.019963 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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