设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8595|回复: 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'5 V* W* v6 a6 h" k8 i! m
*/" w! J8 J4 v% H0 H; U9 T  C
is
3 D) ]4 `. G3 t  }# `2 k4 ]        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
/ G% t' ^# Q& \4 p5 j. k" ndo
" P4 ?7 U3 {- R: i        Lan := rootfolder.Internal.Tools.AOLlanguage;3 L& D+ d! @$ r& P; P
        if current = @.Destination -- else return$ x# U6 M9 a& n
        then& D, }6 E& X8 B/ E3 v( A; }. j
                @.Destination := void;
) h0 s' ~* T9 S; W3 M                if @.occupied then2 D% Q7 J. Q" B1 J' [* v; ]. i
                        part := @.cont;& b6 P3 k8 y8 M8 L; {
                        @.transpOrder := void;
& w6 t3 m. T. {! [) X                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,/ C+ T- J0 S+ z
                                @,root.eventcontroller.simTime);
& `% t' T5 O% w8 a% S. \7 G                        @.HasOrder := false;+ N9 f- J2 t& g4 d; Z# p
                        @.DrivingHome := true;
2 f7 h4 {; F2 s; I3 W# g8 G4 I+ ^' z3 z& @                        rgManager.tryToStartTransOrder;6 @; D+ i5 a5 [
                        if @.Destination = void! i: y, J4 i/ v- D
                        then -- no transport order for vehicle @
2 J# w, E7 M* Z  B6 \                                @.Destination :=& S3 L: A, z" u* l: s6 t
                                rgManager.nearestFreeStation(@,track.~);
' |) l3 g8 K3 t+ R5 n% ^( p8 x                                newDirection(@);   & P* Q; b$ t  S/ b; [
                                if @.Destination /= void then
. c8 d/ h$ x: C3 t                                        @.Destination.NumReservation :=
/ c9 R7 W7 R' I, Y8 Z                                        @.Destination.NumReservation + 1;
7 y1 h$ d7 I) V$ o+ R" ]' j                                end;
/ l) V  n- e0 p/ g                                @.CurrIcon := "drivingHome";
# V5 C8 o5 O* g! n+ z! V                                @.DrivingHome := true;
% k  u! F1 y" _7 c) `. E! c4 ]) h                        end;
0 s+ j+ p2 @2 j6 D5 j" Q5 @                else -- the vehicle @ is empty, both vehicle and part are in the same dock station. A; {- Q& {9 g( k( k; t0 P
                        part := @.transpOrder;, n. w/ W8 n5 b1 A2 R* ^
                        part.move(@);-- load part
2 E3 f* K, e9 q5 A9 |2 u* {                        @.CurrIcon := "load";/ c' l/ E2 T7 _) J0 r0 K: q
                        GlobalDistObj := part.globDestination;6 x+ g& j5 [3 P1 C$ j& Y
                        assignLObj := rgmanager.rgAssignL;
; }4 ~/ X9 ^) m( b" G                        row := assignLObj.getRowNo(GlobalDistObj);
0 {) p5 a) `8 b2 x) }                        if Row = -1 then -- since 702 F( ~$ n) d! |, v5 a6 `. ?
                                if lan=1 then
. C& i$ v& {8 L& ^6 Y; `) T                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
4 i, n1 w& ?$ b, J1 w3 T                                                to_str("in der Andockstation: \"",?.~.name,"\""));- U1 q6 o9 y2 ]# t
                                else( l. s1 F3 n% r4 V1 v
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
4 `( H' s- F" x! u# k                                                to_str("in docking station: \"",?.~.name,"\""));                                5 p2 g/ R# T% L+ C- [
                                end;$ ^9 r9 N$ n& D; x# U+ h
                        else6 B9 b, p7 ]7 v9 u5 U0 \
                                @.Destination := assignLObj[1,row];
* y: z6 u7 E" g9 ]1 p' k( b                        end;                        ( a; ?# R1 }' O5 u' p. \5 m% U  V: b
                        newDirection(@);$ m( o% D$ x' U5 E6 W9 M
                        @.HasOrder := true;7 k$ s# B( Q, ~$ E, y1 Q- m4 d
                end;. W8 E/ U, w0 y. A9 [
        end;/ F3 o- T" I! k
end;        -- of the method
+ x: Y9 O- S0 {8 |* d: Y8 A
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 " j. i& @$ M0 p" Z  x

/ \' B3 Z5 h# P% \4 T$ b这是AGV_putin中arrive的method。
+ N) d4 e  ^7 M7 L, o3 M. R* S3 [1 S# q/ P  R/ P+ E4 C8 m  p
当到达物料速度越高时,这个报警更多,- Q1 ^' n, u' w1 ^; H. i0 f2 r
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
2 W) Z: V# l- w9 H' ^& k程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?+ R. [' |: |; A, G: S
- s+ X( J" Y: U; k% V0 M
另外一个小建议,就是move,所有的move都可以这样; O! }6 w/ D. R1 ~, u9 A* p) y1 a
if not move() then debug end. w$ k( n" L6 ^. G6 j  t# C' g
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
0 m* [+ S5 D* z: [plant simulation中的free libraries有AGV模板,  b2 r( t) ^3 q0 d( |& U4 r0 I) \
里面也有案例。
( c" J4 c0 p2 y5 d: l, [我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。6 `: u, b. U3 v; N' ?, k2 |, ^

  Z+ m1 Q4 @5 u7 |0 d我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
7 {: n# t* V' H' u
+ m# C9 b. t  ]3 l' p那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 8 P  `) w$ t3 d* j
这是AGV_putin中arrive的method。
! B" t1 ^( m# A, A, d5 A/ Y6 x- u2 C$ l1 P& Y4 l6 C- H
当到达物料速度越高时,这个报警更多,

3 c1 T( f/ U0 |' ^$ d另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-14 13:00 , Processed in 0.025200 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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