设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10071|回复: 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'; t! T# l$ v/ }# ^: S& g
*/
- n* y9 A3 M' Xis
% {/ a1 z% v* J6 Z        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
( _& p2 q0 N7 ^( g7 O3 w; {do
4 R- t, I- _' \( D% ^* a% O$ w        Lan := rootfolder.Internal.Tools.AOLlanguage;
% R& J" ?. d4 x4 A' U3 a        if current = @.Destination -- else return7 q; t" f7 A9 a
        then
7 O: N8 L2 _' C# W: H                @.Destination := void;- T2 D+ I) l/ V7 u
                if @.occupied then
! R) A/ G, ^$ o$ D5 R                        part := @.cont;
/ |' X3 _7 q6 Y/ d                        @.transpOrder := void;
; W% r9 U5 Q  D& ?  {                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,) a. u7 I- U! ]! O( L. ~# I
                                @,root.eventcontroller.simTime);
7 A0 P4 F  t2 _0 `. C/ C                        @.HasOrder := false;
% l( j$ s" y$ `2 r+ k                        @.DrivingHome := true;
' `# C# n* _0 U% [                        rgManager.tryToStartTransOrder;, ~, j0 e+ k/ }' v) l9 D1 g
                        if @.Destination = void
# u+ n& D; g0 Q                        then -- no transport order for vehicle @
& j2 V( X2 H6 E8 c, j                                @.Destination :=& z* u% d4 G9 U3 P% E" a, F2 f) n
                                rgManager.nearestFreeStation(@,track.~);2 t# C0 l) S3 c9 j& t
                                newDirection(@);   
& a  o5 ^( N9 }* t  X                                if @.Destination /= void then3 E: w, `, j3 r, B6 J7 ?
                                        @.Destination.NumReservation :=8 ^! r* D2 L4 E: ~3 [' ?" l
                                        @.Destination.NumReservation + 1;
- A! d: [4 d/ j9 M                                end;
; I! m3 n5 v- o' w                                @.CurrIcon := "drivingHome";9 G7 _# G0 r2 ]
                                @.DrivingHome := true;8 a1 g: D6 v' A% w
                        end;
, \6 m8 E, H) x- F. I& z; M2 R                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
# m' T5 s: J9 a9 N                        part := @.transpOrder;# p7 \* ~' ~/ I2 u0 `( L
                        part.move(@);-- load part
' N: L  |! |, N, B7 x8 r1 d                        @.CurrIcon := "load";  R) h% U  a9 Z# P5 Q2 C
                        GlobalDistObj := part.globDestination;! c  B5 v$ D0 t; I( k8 S/ ~/ W
                        assignLObj := rgmanager.rgAssignL;6 Y! c- s5 H6 |: }! Y1 c$ c
                        row := assignLObj.getRowNo(GlobalDistObj);
# B+ l+ ?5 I+ ?/ N3 b$ k                        if Row = -1 then -- since 706 C* p. n7 W$ ]9 I* i9 `
                                if lan=1 then
+ I* W; b$ \4 B7 z                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
8 Z& [. H2 M5 O  P3 U0 W, q4 a+ P                                                to_str("in der Andockstation: \"",?.~.name,"\""));
" P; h" ^0 c$ u  n8 w! l' T3 q                                else
( E; Q9 [$ ~. z$ L                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),. f/ X* K/ r8 j  p3 {
                                                to_str("in docking station: \"",?.~.name,"\""));                               
' U# P$ \6 e6 x# f7 H/ W" I0 u                                end;( K, s8 B( S6 ]- S4 W; E
                        else
7 B; b% H0 G6 V& q3 d$ l) y                                @.Destination := assignLObj[1,row];
9 J6 c1 B1 J1 J- q$ M                        end;                        ; r, R  o) O6 K) H7 e5 R' |. z) e
                        newDirection(@);
# M/ @. d6 F+ W/ Z# O! s( W/ L! @                        @.HasOrder := true;4 {9 H3 p! M7 B. I0 C
                end;! j( H; T* s7 G3 Z6 Y7 H7 ~: k
        end;
/ T; u  O# F/ Lend;        -- of the method9 W) f5 `. ^) j
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
) W: S' r: s5 @9 w/ e7 p& s$ S. J* {) M( D& ^7 p) l/ U
这是AGV_putin中arrive的method。
- v- O) a; D+ Q+ D& q) G
, N& \9 N0 M! P+ \, V  t5 Z0 `当到达物料速度越高时,这个报警更多,  x( K0 F2 p4 s6 L! L
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
; ]4 f) f$ Q3 L1 V程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?. s8 [0 @# Q' v" i5 s: I

/ O3 e( J3 ]+ ~另外一个小建议,就是move,所有的move都可以这样  L: q, X* M. b8 S% K
if not move() then debug end+ F% r& |; @% J$ f! `6 y1 {
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
( o5 a$ _0 F/ n! Q* i. {plant simulation中的free libraries有AGV模板,
/ X  d1 z  o; s% ?3 p5 J里面也有案例。# o" c' r/ K2 w1 H
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
, p" S( N' @1 Q2 d* x  n
' u1 n0 E% r, Z  \, I6 ?4 Z( P我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 0 @1 c+ i" Q+ G- ?1 K. \5 K0 L

+ a- N! u+ G9 }9 Y  T那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 * v8 i7 L/ o3 X2 S
这是AGV_putin中arrive的method。
* P" O- C5 P6 \8 e$ O$ F" w# P0 q2 ]; P$ N( o
当到达物料速度越高时,这个报警更多,
! b* h, z/ w0 h& u- x+ q
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-9-11 16:14 , Processed in 0.021115 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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