设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6961|回复: 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'
$ h9 D. q' R7 x) {*/
3 q- m& X7 J5 f  h, r  W5 Zis; e; @+ ^- `) R
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
- U! e9 q0 O" ]% k5 m( _3 Ido, u  Q2 b+ T# w/ p/ t
        Lan := rootfolder.Internal.Tools.AOLlanguage;
* Y" J5 C6 S, A/ H9 F1 b8 I3 f) c        if current = @.Destination -- else return) k) R+ ]) S( K5 Q
        then
& G6 c+ A  q8 [                @.Destination := void;7 ^( \( `% h  {7 P3 N" s) A6 k; h
                if @.occupied then
6 o* ?' S9 @( [3 t3 U+ q7 i                        part := @.cont;
. b+ W" R' k  I. @7 A0 Q                        @.transpOrder := void;9 V* W) j# F* m3 Y1 B- E
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,4 m  @( E( w+ T5 q; y
                                @,root.eventcontroller.simTime);& ^/ T0 x8 Z; l" Z
                        @.HasOrder := false;
9 c  u1 B- I+ [* p0 R) N" P                        @.DrivingHome := true;" ^, d% E' C: z. A7 D3 R
                        rgManager.tryToStartTransOrder;
0 o) p" h) H3 }& o% \) Z                        if @.Destination = void: g% S% |8 s! V- M$ a; N
                        then -- no transport order for vehicle @$ j- g: K& M0 ~
                                @.Destination :=
! r  |8 j4 M- ~) J2 G                                rgManager.nearestFreeStation(@,track.~);
9 S+ I. A3 S- G" Z* O: U. n                                newDirection(@);   
8 F+ b) q2 A# y) J                                if @.Destination /= void then
9 i, j" z0 P2 Q8 q9 t2 f8 q  u                                        @.Destination.NumReservation :=
# n$ M# ?; W; h0 T# v3 C1 g                                        @.Destination.NumReservation + 1;% ^  _5 Q4 L. H+ y& ^
                                end;1 I7 t5 Y$ `+ e  J
                                @.CurrIcon := "drivingHome";8 L2 u% S' Z4 o3 h3 K& `
                                @.DrivingHome := true;* ?/ A  M1 M% N9 d2 y+ d$ @3 j
                        end;
- D% n# z8 H0 I                else -- the vehicle @ is empty, both vehicle and part are in the same dock station1 p1 y6 W& p: t% D" B$ X4 E
                        part := @.transpOrder;
: ~( M- U3 K7 r                        part.move(@);-- load part
, ?% T. T2 \8 \9 I' A! W2 m- q                        @.CurrIcon := "load";) R+ X$ H5 S" `. |! k
                        GlobalDistObj := part.globDestination;! |, \) }) K7 j% Z) p
                        assignLObj := rgmanager.rgAssignL;
2 N3 ]2 D) V+ {/ V                        row := assignLObj.getRowNo(GlobalDistObj);
- J% G% T& }) S* a5 w* Q$ X( \" y                        if Row = -1 then -- since 70
$ v8 x" Y+ U; B& r( z. [1 N% q                                if lan=1 then9 N+ s! A. e8 X$ i3 m' W$ N
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
4 L9 E2 j2 d/ N0 k6 d/ v6 F                                                to_str("in der Andockstation: \"",?.~.name,"\""));' l5 V" I  Z- d' ]. `3 Q
                                else
2 R, x% K1 ^8 w* |/ r) `                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),& m+ A8 ^- h4 r9 j  O
                                                to_str("in docking station: \"",?.~.name,"\""));                               
. p2 K, L- ^0 A- A) f: T9 ~/ e. t, B                                end;0 c) m$ {$ j3 T
                        else
7 r6 e+ [  ^/ q$ ~, Y, O                                @.Destination := assignLObj[1,row];% i  G( N+ |% Y' q
                        end;                        # X2 @! P) ~. v# r8 ~% ]2 M
                        newDirection(@);
) X' O; l/ I. j+ |8 y5 B                        @.HasOrder := true;
% Z" w- u& _2 T, `/ g( }                end;
5 B+ M8 j$ e3 A& _$ B7 h        end;: \7 M. v$ A* v7 _9 g. u: Q
end;        -- of the method
% ]( K8 H  R1 t  {
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
( i' b7 a. y, C* G0 r! Z% O* j8 y0 b0 l
这是AGV_putin中arrive的method。* i7 A$ L* O6 Z% v

: x& |" H! ?! w2 B* _7 I1 h当到达物料速度越高时,这个报警更多," t9 p0 T( _, p/ t# l
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
% b9 {  }, ]  G2 W2 z& N& y9 c9 t程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?1 E2 t2 P- U  M. U# ?
3 W; j8 u6 m. R/ F
另外一个小建议,就是move,所有的move都可以这样5 e2 e# S0 R# d; z2 q
if not move() then debug end) T# B# g. f0 y/ g7 v
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
, u! v' C9 G9 S8 j; C/ b' fplant simulation中的free libraries有AGV模板," k4 T4 Q0 D( O) I) H- {
里面也有案例。& E7 H# x# n2 _
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
6 a: _1 O  e1 D4 z5 G6 C* `: ^) M8 A2 ~7 j
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
5 O5 y& o0 l$ V; a* X8 p- q
* s6 R/ ~4 U  |2 _) ?( }! A那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08   l3 A2 U1 B+ M  R( g4 p
这是AGV_putin中arrive的method。5 [$ p+ D- D1 I# T6 @

, a% O+ v! M* M7 k. e! s/ a! P: p+ B当到达物料速度越高时,这个报警更多,

8 G! [/ ~% Q( F# j6 ^& Z% }另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-8 11:52 , Processed in 0.021253 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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