设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6766|回复: 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'* P8 X1 g" w7 ?, O- f
*/
# V2 ]" h# ?3 |7 S% Tis
: ~* I  j: ~( V3 F        part, GlobalDistObj, assignLObj:object;row,Lan:integer;8 s4 ^0 a$ `! z* V8 z  |1 ]# r) m
do
7 o& |; a& U& D6 o        Lan := rootfolder.Internal.Tools.AOLlanguage;
/ e5 j6 _0 x; k& _; k        if current = @.Destination -- else return
! p2 a- u: T2 S# w        then
' C2 R! c" d' z* [+ U$ s" T1 O7 m                @.Destination := void;
5 j$ r; g8 p- c1 Z                if @.occupied then* A$ k) m" @  q6 z# j8 G
                        part := @.cont;
8 r4 S) t/ ]5 Q$ X( p& g                        @.transpOrder := void;
$ ^, C( }; `" E$ T3 r- J2 i8 j                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
5 j9 N& X: C) t3 V  k/ d                                @,root.eventcontroller.simTime);
0 M1 @! F4 j8 N$ N6 f6 R                        @.HasOrder := false;
* u( U* [- Y/ k  y                        @.DrivingHome := true;
; V) j$ L8 J( b9 ~4 H                        rgManager.tryToStartTransOrder;
4 ~0 S' o$ P& N1 N2 i* _                        if @.Destination = void
+ h4 z. F* k) W, n2 K3 k                        then -- no transport order for vehicle @
$ h4 T0 f9 w- e& \% j1 u  ^1 E                                @.Destination :=
- l: ~4 ^" V2 {$ |" N                                rgManager.nearestFreeStation(@,track.~);
+ T2 U! Q. c' p" Q+ @# ]- c                                newDirection(@);   # f7 @. P+ w: C* k
                                if @.Destination /= void then+ F0 n2 K+ \: Y2 o, j# n
                                        @.Destination.NumReservation :=( U* u* Z; X0 E6 x% f+ ?" e! H9 J2 r, ^
                                        @.Destination.NumReservation + 1;3 ~+ `2 {' R( R8 ^7 D& E( P/ z
                                end;2 l  W) p6 ^! p# a$ G5 E, ?
                                @.CurrIcon := "drivingHome";
& g; ]2 G- J5 e7 ~                                @.DrivingHome := true;, i+ K& I4 C4 \/ M, J. |
                        end;( U) t5 S+ _  k8 i
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station1 B' c) ?: Q# K+ a0 w6 x5 ?# S  M
                        part := @.transpOrder;5 N  w2 m( f& ]' H3 K
                        part.move(@);-- load part' B" j  O% R' o
                        @.CurrIcon := "load";! `' H7 e2 K- G1 a9 ~: `
                        GlobalDistObj := part.globDestination;" ?7 \- D+ }2 t* v* v4 ~2 [
                        assignLObj := rgmanager.rgAssignL;" J& R7 m: F0 S+ v6 D; a$ s8 o1 N+ Y
                        row := assignLObj.getRowNo(GlobalDistObj);5 L7 h' }5 F) s7 B8 s
                        if Row = -1 then -- since 70
4 o- C  j7 a/ r5 a' ?8 R: ^                                if lan=1 then% r0 g! w2 r0 A8 M
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
$ y) f# N5 O8 S9 b                                                to_str("in der Andockstation: \"",?.~.name,"\""));
& L: o2 [3 _: c/ X1 R9 G                                else
- n: c, l& y( F" |0 p4 w                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),( ]' i: ^' w& n$ ~7 y& [/ ]
                                                to_str("in docking station: \"",?.~.name,"\""));                                # \! N( g$ T: s- H3 R) Y0 j
                                end;) ~, L, E7 ~) O( |9 A
                        else! `3 M9 o, o- c( p
                                @.Destination := assignLObj[1,row];# i* L" A/ J* e
                        end;                       
$ X/ Z& D+ D* u& w$ ^2 }0 F% `( L                        newDirection(@);2 ]* ^# z" O0 t2 x* M* {
                        @.HasOrder := true;6 R5 E% q9 I: @$ |, l
                end;
! n% |3 B2 y$ e) L; {# e; Q' Z3 M; m        end;
; r8 s: p9 ]: d9 Eend;        -- of the method
& l. z) E- s# s( i; j
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 ; V* }6 f; b; i3 v. U5 w% M

. E4 F9 A0 I* Z" t# [3 Y这是AGV_putin中arrive的method。1 B* G+ z0 a. a! O8 C1 a+ e
9 [! G. H6 X! [
当到达物料速度越高时,这个报警更多,2 i" n4 j( o: \
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。9 L) n6 y; Q; Y  A! i
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?$ B& M9 q  i0 I, C
3 K% _! B. h, m/ S
另外一个小建议,就是move,所有的move都可以这样
3 e- Y9 m. X9 Jif not move() then debug end& e0 |: Z, c5 ~: U% I2 P
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。# q3 n5 a5 o& i
plant simulation中的free libraries有AGV模板,' @, {. U* E5 D
里面也有案例。; y/ j. L( O2 [8 M0 `
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
8 {# q' ?1 e, S. i7 v/ f
& |) `5 i% k+ \  w! U  n8 t9 J我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
$ J3 b$ B" S: H- t! e2 M
$ w6 w3 [5 N. p8 i6 \1 K那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 6 x0 d" v9 O/ [) S+ L
这是AGV_putin中arrive的method。2 |$ {# v/ C3 T. ?* `
$ N4 ^6 u5 {) j7 c
当到达物料速度越高时,这个报警更多,
: t! C. O# b4 a' u$ c' U
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-25 13:34 , Processed in 0.019780 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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