设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7941|回复: 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'
9 d3 Q3 E2 ?5 T*/
. \# @5 \; _( His
5 L+ G2 l4 A* k. G0 `' K7 m& p2 P1 Z        part, GlobalDistObj, assignLObj:object;row,Lan:integer;$ r  U9 d0 Z, u7 a6 _  d5 _/ |
do/ x7 n& s/ J- Q7 q
        Lan := rootfolder.Internal.Tools.AOLlanguage;% z! b9 R* F' r0 H/ P
        if current = @.Destination -- else return7 E: l0 `4 E# E' F
        then
) V  }& o+ v. z7 T/ k! O, ^                @.Destination := void;
# Q* K  d5 W; {0 t  w                if @.occupied then
- D# H) P' D, `+ A                        part := @.cont;/ y2 H) o# N7 \3 b" T
                        @.transpOrder := void;
$ e5 l2 C% Z/ j: a4 p/ }; ~3 |; [                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
3 W: t9 I" }3 W' i1 o1 ?                                @,root.eventcontroller.simTime);
* j  k( h' p4 e$ c" V- T( C                        @.HasOrder := false;
; X  [/ S9 U3 m9 Z7 Q& }- I; p* E                        @.DrivingHome := true;
7 G4 q3 o4 a0 \! I4 r1 o                        rgManager.tryToStartTransOrder;
4 E) |! j5 l8 z8 J& c8 X) j/ y( t                        if @.Destination = void
6 E  B& w/ G6 `" ~- p* T! ]                        then -- no transport order for vehicle @
: p$ a8 n0 b/ c                                @.Destination :=
7 L+ e/ G/ w- {5 v8 H                                rgManager.nearestFreeStation(@,track.~);4 y+ ?) w1 Q2 G( ~4 J. s
                                newDirection(@);   
6 C/ h: g$ p: X& b9 w                                if @.Destination /= void then" N* W# p" ~: I3 I- H7 c
                                        @.Destination.NumReservation :=
2 p; ~& |& j" O                                        @.Destination.NumReservation + 1;1 L  Z5 e+ R/ D" @
                                end;
0 s, a% V; o/ `9 X                                @.CurrIcon := "drivingHome";3 A. g  x$ [2 y' h! |" O
                                @.DrivingHome := true;. T0 `6 O3 t$ V' H, M
                        end;( H" J# C' ]8 ?4 l0 `/ R
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
% B' u4 ~) @1 P3 y. L  _4 S/ W4 ]                        part := @.transpOrder;
  Y, A9 P5 e/ n/ u3 r1 j                        part.move(@);-- load part
4 H4 F5 `+ u1 B% H3 u                        @.CurrIcon := "load";: a* P3 ~) O& L/ @/ g" S7 P
                        GlobalDistObj := part.globDestination;" E% w; G& n# s0 v( }: l
                        assignLObj := rgmanager.rgAssignL;- ^  ~# ?# a- x3 t+ M
                        row := assignLObj.getRowNo(GlobalDistObj);7 z* K' `% {) K# s; i
                        if Row = -1 then -- since 70
2 n1 g$ l; B8 i" T                                if lan=1 then
2 d5 G; e) z8 Z( ]                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
  S& J' @1 f( ^                                                to_str("in der Andockstation: \"",?.~.name,"\""));
/ A, T6 F, d7 @) f  s4 i4 H, x                                else
& a% U9 ~4 I6 @; C" e$ t                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
5 B7 ?; y, ]: J8 V* M                                                to_str("in docking station: \"",?.~.name,"\""));                               
, j" s( l& g* x1 e* o6 Q# o                                end;- p7 `- \1 H8 w: C/ B
                        else" _- K0 x7 [( ~. ^% d
                                @.Destination := assignLObj[1,row];. B$ _# D  \  j$ j. _
                        end;                       
6 _" M3 X# U7 O/ n                        newDirection(@);% P1 d' e3 U9 {" \0 |- r8 L1 ?# C
                        @.HasOrder := true;
6 H. ~/ A: T5 T* I4 i% q9 l- I                end;) c8 E! |2 b& ^
        end;
' ?" X% y7 Q7 J6 L% Aend;        -- of the method/ M, _5 ~0 e7 f
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 7 m" H0 B+ W7 o8 ?6 A
8 ^  Y8 J, b5 A% t% a: t- {* d: p
这是AGV_putin中arrive的method。
! a- {$ w1 T6 B; X4 K6 b4 `
+ S4 r: ^* E5 r$ F2 p$ @& U& o当到达物料速度越高时,这个报警更多,
  D, X* \1 ]( r  Q8 x2 x/ N可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
% N2 M) O, J& \; R程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?/ i8 t0 P0 G% v. n1 C- r
. z% v- a$ Q9 w
另外一个小建议,就是move,所有的move都可以这样0 U( ]6 n" }+ X1 n: K' ^
if not move() then debug end
7 V5 G+ Q& I# Q  c; r+ p4 j这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
* }0 t1 K* k+ S* L# G  ?. q: Cplant simulation中的free libraries有AGV模板,, Z+ f) [. I4 N1 N7 |# M8 Z, O
里面也有案例。/ }' w: v& ~* Q0 h0 }
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。  M  D$ ?# ]+ f! D5 W
) [: c7 }; t7 D4 I: W
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 - c8 H1 a, k: I" m- ^
0 n. A  R/ D" H" R7 T7 P
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
  e+ _2 [3 M3 A2 L0 G这是AGV_putin中arrive的method。
" J  J9 R2 M* f2 Y6 b% N
% V/ T& g- b+ o  K当到达物料速度越高时,这个报警更多,

9 }$ R; Y3 i: U* j7 q1 j) u另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-6 18:30 , Processed in 0.017864 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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