设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5411|回复: 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'; O' T6 K& ^% H3 I
*/" b* c1 h$ C3 F" w
is7 N" Q7 Y% T$ k' u) r
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
$ S! a9 a8 @; W) U- s, kdo
6 a: p9 {3 \" ~& n. j' G/ G8 [        Lan := rootfolder.Internal.Tools.AOLlanguage;# M$ J2 z6 J- i+ i( ?: q
        if current = @.Destination -- else return
% w, ?* Y7 R- D% ^) P* l( ?5 c7 |        then+ a- w8 L4 L+ j) h, K/ I8 N
                @.Destination := void;
7 i& T1 z6 m! B& U                if @.occupied then8 y: m" d$ P, J# u; m
                        part := @.cont;
0 c' S9 I# v1 n                        @.transpOrder := void;) @, A$ E& F4 c0 B9 Z; u1 F# b
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,% S3 t$ a% B  r+ F
                                @,root.eventcontroller.simTime);- h, d, z" \$ g( V) m( j
                        @.HasOrder := false;
# C& B, _0 O' r0 n7 j                        @.DrivingHome := true;# d' [$ x3 ?" F! m9 v
                        rgManager.tryToStartTransOrder;
3 |1 c$ Y7 c) @6 l                        if @.Destination = void
/ V) c7 K. a# H7 l/ b                        then -- no transport order for vehicle @" y, k/ o9 x2 n6 W% V, B* q
                                @.Destination :=
* u: q& y) C  \7 Q+ X* n! `                                rgManager.nearestFreeStation(@,track.~);2 T4 B6 X/ ~& |9 T0 ~! ]4 @
                                newDirection(@);   ' ?, l, A  E9 i/ B3 Z- m
                                if @.Destination /= void then- A0 x& C# H$ V$ l; P9 X' A
                                        @.Destination.NumReservation :=
& ]) D/ k1 {" ]8 G                                        @.Destination.NumReservation + 1;
- S% u3 J4 h) D0 X) L9 ^& K$ i9 k5 }                                end;
2 I5 ]0 j3 Y+ s# X8 T                                @.CurrIcon := "drivingHome";& K0 `- I4 b0 _
                                @.DrivingHome := true;
* f* K4 a/ j0 C7 W5 S                        end;
' r. L0 }4 ~1 o9 c1 d% ~                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
- x4 `3 B6 L+ h- X' ?- Z                        part := @.transpOrder;$ M1 J/ M" W; X, a9 d, K
                        part.move(@);-- load part- N2 V3 a" m( I
                        @.CurrIcon := "load";5 M: c6 v" N. J
                        GlobalDistObj := part.globDestination;
4 D8 r- V: p# v9 [% K                        assignLObj := rgmanager.rgAssignL;
) }& J" Q6 C8 y, L9 |                        row := assignLObj.getRowNo(GlobalDistObj);
# z! ?8 Z7 S! @+ [1 b9 H( d2 U0 |) g                        if Row = -1 then -- since 70# }4 m+ ?2 F2 c$ h
                                if lan=1 then
2 C0 T1 |5 Z3 D5 h1 J4 D                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),. }- w/ `! U! n7 ]
                                                to_str("in der Andockstation: \"",?.~.name,"\""));3 U# J" ]8 s6 S# l5 E
                                else: X5 K& v0 H3 w7 R0 `) J3 _
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),$ p. V& `% ~5 Z; |+ v3 L
                                                to_str("in docking station: \"",?.~.name,"\""));                                1 }; X+ {2 v, @  r- [
                                end;
6 K4 }. M% W+ g6 V                        else4 A# f* S6 x- g, q* u
                                @.Destination := assignLObj[1,row];8 B6 ?7 `4 q6 a: e0 r/ F1 B1 s
                        end;                       
8 X2 b% U; Q  |9 j1 o3 C0 _                        newDirection(@);
" N  e: C# N( [' q5 R9 W                        @.HasOrder := true;6 ?- p( E1 \0 |9 B$ l4 H
                end;
# V! V6 Y6 S( X; b: P: i, S        end;
9 y3 X3 ^" j# ]$ t* {% T0 Zend;        -- of the method
* ^$ I/ P6 x) r$ P" [
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 $ ]6 m* U( [- T1 H

& u0 o! b6 b- T5 ?这是AGV_putin中arrive的method。* v9 y8 i7 N4 v2 \4 B
5 ^$ c2 z# d+ b
当到达物料速度越高时,这个报警更多,- ~2 R% s/ Z: R& |
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
! U' I, V# y3 d- t: X8 n- [程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?: k* q* l8 V6 N

) h# ~6 l" D( b' W" k2 I' J4 L另外一个小建议,就是move,所有的move都可以这样
) @# X: D% }8 j2 v' ~$ q. }6 {8 Xif not move() then debug end
# F7 w8 V0 e# b. ?/ O1 ~% Q7 V这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
0 `3 U) w6 x1 A) P( A! p; e4 v4 wplant simulation中的free libraries有AGV模板,% r: C0 f4 D' N$ d# u
里面也有案例。
. J1 U; g7 O  q$ `$ G- L+ h6 J我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
* j1 B, S; p$ @: o
! E4 b2 V& ^% h4 `" d$ j我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 + Y- q* U! f7 M* F( }  B8 B/ H

4 Y' P' a" m" a( w* N1 {$ w那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
3 f2 e& g9 p& h, e这是AGV_putin中arrive的method。
' w9 H4 W* F% V" m1 m$ P. [' Y5 _
当到达物料速度越高时,这个报警更多,

2 S: A% \8 P% D; j6 |另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-11-21 17:52 , Processed in 0.017367 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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