设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9786|回复: 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'
# ?! Q2 ?! i- W- X! v9 ^*/: v& i  T5 j8 f) W3 _
is
6 B% H. j* c6 d' p) f1 u7 Y        part, GlobalDistObj, assignLObj:object;row,Lan:integer;6 F, O, d9 Z5 E; P  Y5 |: S
do
- U4 Q3 V: ~8 O; S! q# L$ I        Lan := rootfolder.Internal.Tools.AOLlanguage;
1 `8 V+ q2 }6 J! r  ?5 g  U- L        if current = @.Destination -- else return
! S$ ?/ R) p! f# W/ s' [3 V        then
' z2 c7 h2 M! V2 ?7 i; e                @.Destination := void;
  b  ^3 v1 Y& w  r& v- ?                if @.occupied then) r4 x- G: \1 a
                        part := @.cont;( @- d+ V# m. r+ E. e" ]: B4 I7 z
                        @.transpOrder := void;
5 v, e  z. r9 l% a9 Q; ?0 u- u                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,' o; D7 A, ^8 q* v. S* v
                                @,root.eventcontroller.simTime);/ C+ D% o. U. k+ n; k  O
                        @.HasOrder := false;
! X; R& |3 y' R) K& M+ Q. y                        @.DrivingHome := true;* _1 `! h9 v' i9 d# u) ^
                        rgManager.tryToStartTransOrder;
) r" a  X" L, V& B                        if @.Destination = void
! {2 Q1 A0 ?6 y& H. g, g% Z( Z                        then -- no transport order for vehicle @
7 L3 _. J5 a# v7 G. I" v                                @.Destination :=6 m: F0 ?4 ]* C- x7 h0 q
                                rgManager.nearestFreeStation(@,track.~);
$ w) C' Q# d* W9 q' j                                newDirection(@);   ' _* g7 Q/ M8 S
                                if @.Destination /= void then1 e: ~- v/ g9 o8 G6 i/ o  }$ H
                                        @.Destination.NumReservation :=
8 u$ z* i- @/ n; s  M9 Z' o  q                                        @.Destination.NumReservation + 1;/ u% M4 `7 w1 g0 M' q- Z2 b
                                end;
  s$ }8 E3 j& J2 }  X# B                                @.CurrIcon := "drivingHome";
% R' y" x# c( y                                @.DrivingHome := true;/ A. u/ N! o5 J
                        end;6 L3 O; M; F; v. v) ~9 p& E8 t
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station# w+ i4 c; {! q
                        part := @.transpOrder;
' \5 C- h$ g! |; q                        part.move(@);-- load part
6 f$ I( `' O# D! i                        @.CurrIcon := "load";
0 G# _- m! o9 N7 Y                        GlobalDistObj := part.globDestination;
0 I6 m4 l8 q4 b+ a0 y2 [                        assignLObj := rgmanager.rgAssignL;
7 ~: g" u( P+ E: r" E! |! z$ y                        row := assignLObj.getRowNo(GlobalDistObj);4 i# U  d, H' ]5 _$ p
                        if Row = -1 then -- since 705 ]% s$ J$ m# a& S' L. h
                                if lan=1 then* I! L! O' m8 ]  x, |3 J9 }5 K
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),5 ?. A: Z6 X& h0 ]+ i
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
1 }: d0 w( \  ~2 O5 r% q' y3 ^* X                                else
! f) y" ~( w5 d, [8 Q  u                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
* @4 P- T& r$ m  ~6 B' x$ V                                                to_str("in docking station: \"",?.~.name,"\""));                               
' [  q! L0 T  t' D- Z: A                                end;/ T5 {6 r) N- P2 @% D
                        else2 i1 Z% N; ^9 b* F
                                @.Destination := assignLObj[1,row];) O/ ^5 p! |3 M$ N' ~  N  E# r
                        end;                        " p% j: r6 `8 A- K5 I9 t5 L; k
                        newDirection(@);- i& l9 V" @: Q
                        @.HasOrder := true;
* Y: M; H- Q; H3 `' f5 G                end;$ g# s- H8 q" O# g
        end;8 q" Z  ^& i- u$ v2 e  x  O
end;        -- of the method
( f7 i$ K) Z( f* }' d% }3 O$ Q
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 4 O2 H/ E+ s4 X4 G
0 e' n" m# J7 K* y4 E- ^$ b
这是AGV_putin中arrive的method。
# e/ G7 I6 C( @9 @. ~" w
% A$ M2 K  o" b" a7 B6 s当到达物料速度越高时,这个报警更多,9 d! I/ Q% r1 {) P! j
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。! L8 J( v6 R" R
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
) f- b7 O4 l/ l+ D/ C. d" M) z- j/ O" k3 `( |% S0 i
另外一个小建议,就是move,所有的move都可以这样6 d  u; g- d  z1 Q1 c
if not move() then debug end. B$ [  W$ P* Q$ P" j: K
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。1 h# C8 L7 y; V; X- m: m
plant simulation中的free libraries有AGV模板,
) C1 o  `) `/ q* k$ P* k里面也有案例。
, K+ N- \1 s% h8 h我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
3 q$ m+ b. M) A% Q- C  y- r) R' l' o6 H
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
5 J( ~9 Y7 W- ?2 U2 d/ X* ~% b+ ]5 c  v1 `4 K- G! E
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 2 C% k/ E9 ]( R& k% c
这是AGV_putin中arrive的method。* E# E) u! ?' U6 Q( g$ N6 U' I$ v

$ p, A; [( M) d" }2 ?  Z$ R) R当到达物料速度越高时,这个报警更多,
# V$ @1 Y4 I' e! M" r
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-25 01:32 , Processed in 0.020820 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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