设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9175|回复: 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'1 m* d2 a: B- `. y. h% ^! e/ O
*/  y3 b7 c$ q9 n. A/ ^
is
9 A) v8 n$ x  f8 u        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
- n% L2 a" v$ z, gdo
7 E8 W! }9 z5 v8 m        Lan := rootfolder.Internal.Tools.AOLlanguage;
) v! c2 B, f- s; [$ b- j        if current = @.Destination -- else return. Q; n: @/ ?- j
        then/ \! [  G; o; X7 E- {
                @.Destination := void;
$ @( L3 l1 C% y, j: |$ l& k! a+ L                if @.occupied then
; F* \6 @0 p1 H' F' `                        part := @.cont;+ W* k. D) @5 k
                        @.transpOrder := void;0 T0 \; c4 Y2 l5 c: F( u
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,$ k8 s8 |6 S# ~& L; z) C- t5 b& j
                                @,root.eventcontroller.simTime);
0 d: l! z6 ~4 G! Q! E                        @.HasOrder := false;
# ^; j7 B5 [% k, l8 T3 R                        @.DrivingHome := true;( n4 C% T1 d5 ^9 s
                        rgManager.tryToStartTransOrder;
/ V" I! ?5 j) {% {5 u  d                        if @.Destination = void
' o- o% o4 k" H9 J) u: n                        then -- no transport order for vehicle @! @. r! Z" J% ]8 T) n
                                @.Destination :=' l" [7 d8 ]# [
                                rgManager.nearestFreeStation(@,track.~);
1 r, j  G: E6 I1 ^* `                                newDirection(@);   
. c) e! {2 N4 h' K                                if @.Destination /= void then
6 \. q1 d( S1 w                                        @.Destination.NumReservation :=; F( Y  B+ t# j! u( Y4 n. g
                                        @.Destination.NumReservation + 1;  f6 N5 J7 {+ B
                                end;
2 [6 q4 ^' b" o1 e* ~                                @.CurrIcon := "drivingHome";
6 u4 t: u1 S6 }; v                                @.DrivingHome := true;
1 M2 Z; m$ d; D& Y+ u- K; a                        end;' Q8 x/ S7 E) o. Z
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station: J& Z& Y1 u. p$ R& q9 U* i3 S
                        part := @.transpOrder;" `$ ^8 y) I: I3 B4 F, e
                        part.move(@);-- load part; X/ K0 x! Y& _# q
                        @.CurrIcon := "load";: ^0 i* ]7 @2 ~& s- v$ S5 j% N9 f
                        GlobalDistObj := part.globDestination;6 m& V9 ]" _' F/ t' ], V8 S% u
                        assignLObj := rgmanager.rgAssignL;  ~+ |8 |4 y. y% v% a
                        row := assignLObj.getRowNo(GlobalDistObj);' n7 m7 m/ T  W& q5 Z6 P# H1 G* \) i
                        if Row = -1 then -- since 708 a) v5 h3 L* K
                                if lan=1 then; `* a$ M7 T; d
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),* c6 J  V8 \, D( s7 u  j3 N9 }
                                                to_str("in der Andockstation: \"",?.~.name,"\""));6 ~# e. t% ?) B# A4 R+ M
                                else
  _- h) P, [% G: t8 l                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
- l0 u& A3 X4 D2 X3 q7 |4 ?2 F                                                to_str("in docking station: \"",?.~.name,"\""));                                + h  X1 @* u# b2 S3 q; y
                                end;/ C! C/ g7 f, {( p" N
                        else
( ?/ f4 P* o0 m: Z/ d                                @.Destination := assignLObj[1,row];# a6 ]  M! _( N! B) u
                        end;                       
+ W7 {! \, D/ S/ t! C                        newDirection(@);  t* _) ]4 q3 |/ S7 c1 X! |+ Y
                        @.HasOrder := true;" J- _# A0 l3 G2 g' G0 U8 D
                end;0 s/ `! C0 F* M  G& u! @
        end;
8 W7 ~, A! R! W/ E  @" wend;        -- of the method3 {8 L( F0 L% B$ n" q
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
4 ~" J' S1 M1 `; g) O+ B( e/ P5 L5 a3 S) X
这是AGV_putin中arrive的method。
0 t: C' P7 O$ \* _6 x' S6 w+ g! r
当到达物料速度越高时,这个报警更多,, d$ `) n5 A  i5 P& C: `# C
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
( {( q& q. n# i; H; r' H程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
% ~; L/ w" q+ B6 @* q
$ X$ Y, v/ I% ~( b另外一个小建议,就是move,所有的move都可以这样) |' u9 `  t3 K+ G& ^
if not move() then debug end
# q6 w$ t" Q4 {5 s( _8 e这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
- H0 h: U5 G4 f- v, P& R8 }plant simulation中的free libraries有AGV模板,$ E% A) ^2 g( V' Y# W$ K" N
里面也有案例。( |  r7 s# ~- k% M! y- Q0 ]5 v
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
1 t4 |7 E" }" X: F5 B" `, ?0 Q- ?  w
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
9 w( s9 }9 s: ~/ `! F( \: `0 [* [4 x9 }  B3 r3 l/ u" [, z
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 1 E- N4 W4 Q: @, G4 X
这是AGV_putin中arrive的method。9 {1 {# i3 d1 V5 l2 j

4 Z- s. X) _- v) d; e( b/ x8 P& ~当到达物料速度越高时,这个报警更多,

5 D! O! R" C7 |  U. k1 t5 T4 Z, e5 W另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-7-18 00:25 , Processed in 0.017032 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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