设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9877|回复: 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'
, E/ o! [2 {4 V; F: s& w+ N: B*/6 M4 d. H" w" N1 Y2 Q0 ?6 `
is
) Z/ T3 }% V# ]0 F        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
: E9 L5 ?, ]: Z( Rdo
% S1 C! \) K, z/ \$ U        Lan := rootfolder.Internal.Tools.AOLlanguage;
2 l5 z6 \# ?, V' h- g: p        if current = @.Destination -- else return, n9 c- u$ z2 |, r0 [
        then
3 A& S$ |# b& g4 Z  i& B6 `                @.Destination := void;
; c( `# x1 s+ x0 B# m' M                if @.occupied then
2 {( s: X1 t! b3 E: i1 E1 o1 ?4 y* x                        part := @.cont;% f5 |/ n4 I8 ^, S* u
                        @.transpOrder := void;" C8 o. \, u6 U% b) n2 q' L/ a3 D
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
; G! B& d+ O( u2 s0 A  m) F                                @,root.eventcontroller.simTime);3 r% A% u* l4 Z  C6 s( b
                        @.HasOrder := false;
" I. a" ~$ V' k9 v+ p                        @.DrivingHome := true;
  E0 K) l+ @# ^% F1 J                        rgManager.tryToStartTransOrder;: G, P) y* M& A# Y  Y3 q" f) [
                        if @.Destination = void' C2 U( u4 S8 r
                        then -- no transport order for vehicle @
- ?$ o: Q. u. G- G# d" k: q                                @.Destination :=
7 z3 ^0 e* j/ y8 b4 m# w/ x$ X                                rgManager.nearestFreeStation(@,track.~);
9 m4 Q+ }& \8 x  j                                newDirection(@);   4 q) _" ^8 _+ X" d0 a# I
                                if @.Destination /= void then
1 v. M6 j" |0 \: B                                        @.Destination.NumReservation :=
( ^; _' ?" \0 G5 c% p                                        @.Destination.NumReservation + 1;) Q+ V; M% k0 f. X' M! _
                                end;" a3 P# L' s. b6 p5 C4 Y6 z
                                @.CurrIcon := "drivingHome";
& N# ^/ I6 d. Q  Y                                @.DrivingHome := true;
* o3 u" y- [+ X0 e                        end;" Z6 k0 U- o* q$ b/ i* W
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station3 X% P6 `$ o8 v1 c3 h# R
                        part := @.transpOrder;
+ @- R" {* P/ ]+ Z0 }8 e- j* l* Y                        part.move(@);-- load part7 T1 d; b/ l6 t/ e
                        @.CurrIcon := "load";
7 G' p- E5 W: M* ]                        GlobalDistObj := part.globDestination;
4 r% _. D/ e) H% `8 T* w                        assignLObj := rgmanager.rgAssignL;6 k5 j+ m, C. {% z( U2 s
                        row := assignLObj.getRowNo(GlobalDistObj);
3 E" a, K, a6 c) A5 Z6 y8 E                        if Row = -1 then -- since 70* q- V& f$ g- Q- ?! f- A
                                if lan=1 then% B# ~/ Y3 P; S9 m5 n3 j& ^  Q, }
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
, d5 b1 V: V: o0 ]                                                to_str("in der Andockstation: \"",?.~.name,"\""));
0 {: G8 U& @2 W8 d                                else6 [7 s' R1 b; y4 ]
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
2 j4 \, G. a( |& l/ x/ r                                                to_str("in docking station: \"",?.~.name,"\""));                               
6 r/ B0 \! P; c# P# C                                end;
  l4 D* K0 g$ K                        else
3 b; L9 o2 g+ q; n6 u- q                                @.Destination := assignLObj[1,row];4 b4 B9 [% ~/ O+ S5 R
                        end;                       
& S! d' C  @3 h7 V7 M                        newDirection(@);6 o" `; u, H/ s: M1 Z8 y( }" k
                        @.HasOrder := true;
* T" H, X# D/ v3 e6 p6 r: M                end;! L! a8 B. A. M( P2 s, F, w4 M
        end;
/ C6 u& H% \: v, b- l) n* Fend;        -- of the method1 @( E9 j4 t- j. z2 Z6 Q! L& I
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
# j& _; _& W1 K# S" G+ d* h/ V& w( V1 x. @+ N
这是AGV_putin中arrive的method。
6 ?6 `- a5 u5 ?. ?9 U  p' f$ a' V7 a2 `7 A
当到达物料速度越高时,这个报警更多,. e) w/ h1 [+ K9 f6 I- A
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
7 j. ?% A8 {4 x3 j. E1 Q程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?8 r) e! f$ G1 C! y- r4 g

( K( r! W4 t; k9 F. X& q7 B) y另外一个小建议,就是move,所有的move都可以这样3 S. Y' U* [2 B" G9 S2 i  ?5 Z
if not move() then debug end: ?. `: \, H- J( ?
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
6 z) i) a/ J+ P/ O* c6 t) cplant simulation中的free libraries有AGV模板,5 M( J$ _* D. g7 p: C! V
里面也有案例。
: l* t. F/ B) Y% @2 b# c我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。  [- N& V1 C1 i1 V+ @

8 m8 {, h( s9 g/ J: d: E我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
8 s2 ]& Q) O* Y+ X. y2 @# ~0 _' ]# q7 _( N  y
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
0 g2 n! @" d+ ~& w/ z这是AGV_putin中arrive的method。
, N+ H6 D5 u/ h1 x! ~5 B
1 S* y! ^' G/ V. n( |* c+ p: U当到达物料速度越高时,这个报警更多,
8 o9 j4 T" O( t  t% o
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-31 00:00 , Processed in 0.023051 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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