设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5801|回复: 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'
( z9 w! E7 n1 z7 q  a*/* a! w7 L' y  C) T/ X( M& ~
is+ D  E9 r6 _7 M5 P) ^
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
) f: \% }0 z$ w0 Q# Pdo
  M5 \* h* \2 p, p# M# [9 e        Lan := rootfolder.Internal.Tools.AOLlanguage;
; b8 a" e3 l$ w7 P/ D& G% y8 L! ~        if current = @.Destination -- else return
1 v# Z5 f; s8 i, z. Q  P& q5 ]        then# k" A' v' E6 t6 K6 v/ L5 t* e
                @.Destination := void;
3 {+ o- {; p& I; ]# v                if @.occupied then' G/ }  \( Z  {% x8 `3 Q# z  r' C
                        part := @.cont;; J  o, Y  U1 V! z0 W
                        @.transpOrder := void;
: @5 {, J! u7 r/ j% A                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
5 G4 m; U2 Y0 R  ?' r6 y                                @,root.eventcontroller.simTime);& t$ U9 q' `/ o) i5 l! o5 P
                        @.HasOrder := false;5 }6 n3 ^1 W: l/ K* \
                        @.DrivingHome := true;5 G7 H, j! ?# L3 Y$ e7 ?
                        rgManager.tryToStartTransOrder;
9 o+ P: [% v' k3 O0 D                        if @.Destination = void6 p4 \, P5 l. O7 [+ x7 t
                        then -- no transport order for vehicle @
$ W& H% y2 F! [' s4 u. C) }                                @.Destination :=3 i- l1 Z6 G$ h
                                rgManager.nearestFreeStation(@,track.~);! s# x& H, E( H' m
                                newDirection(@);   ' D9 {6 ~$ v9 d: a; P( K) G
                                if @.Destination /= void then
$ I9 {% ]) O/ F4 ?7 q0 b                                        @.Destination.NumReservation :=3 y  g& O' h1 n* u/ _2 F/ u
                                        @.Destination.NumReservation + 1;! C% ^+ v" Y1 Z; ^: {
                                end;
4 _: y+ Y6 y4 k. j' N3 U                                @.CurrIcon := "drivingHome";' L# u8 d6 G& o8 n
                                @.DrivingHome := true;
$ H1 O9 E4 R" s* b+ y" T( O5 v, F5 g                        end;
" `" N) p) H. Q+ H) Z8 u                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
+ V+ ^5 H) s3 q/ z                        part := @.transpOrder;
' U( s& _1 H  v4 w                        part.move(@);-- load part- v. t5 B" V% ~
                        @.CurrIcon := "load";7 x1 Q  S& X9 q! j( {- i& i
                        GlobalDistObj := part.globDestination;8 A, l. N& h4 p0 u) s# E% y1 D8 a
                        assignLObj := rgmanager.rgAssignL;
9 {1 {5 E# w& h                        row := assignLObj.getRowNo(GlobalDistObj);
; _0 C, l! O" }; z$ N; B/ T                        if Row = -1 then -- since 70
0 ?# X! W; f) w  X: E' W: w. I                                if lan=1 then
6 I& L" e8 z4 g# G! L6 N( B* y4 C                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
7 Y7 V" L2 i- j: A* V                                                to_str("in der Andockstation: \"",?.~.name,"\""));4 Y1 d$ W4 n" [# r/ Q
                                else1 h3 \& {4 |6 E- j9 N! `  X2 X
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),1 T6 R: {" L) X3 u9 h
                                                to_str("in docking station: \"",?.~.name,"\""));                               
% L; k9 q/ i% p9 R" ?                                end;( c% Z' B# d8 D. U0 y' s% {
                        else
/ T7 v' M0 @3 `' d5 ~                                @.Destination := assignLObj[1,row];
5 O) y+ J" q% Y; l2 i. ]) s                        end;                       
! l) l! e  t( }0 s" T! [- ]: f                        newDirection(@);
) |4 e0 S+ X* K6 V- k, M6 l                        @.HasOrder := true;$ B. k( ^* w0 f- W; h+ W/ x) q" \2 p8 b
                end;
0 U) q0 p  a% M+ F: Q' t0 t9 X        end;
4 |+ D  m9 B( G2 S. W+ Q7 T2 `end;        -- of the method9 P% z' [3 M2 Q2 @: z6 J3 c: k
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
; T8 y; O( H" G, T# I! l
) i9 [+ }0 J3 O7 l% q这是AGV_putin中arrive的method。/ V4 D+ ~/ B! B* m

% K7 `& s1 D" Q当到达物料速度越高时,这个报警更多,
7 Q% k' m3 }3 h3 t6 w5 F可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
" m8 o8 g& H9 e. C. Q) M) n程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?6 T! P0 [' z2 G9 i, g2 f5 n1 G
+ V& J9 P* E9 t! W" b
另外一个小建议,就是move,所有的move都可以这样+ D& {/ ~% }5 E: o
if not move() then debug end+ V9 f: @* D6 ?; Y  Q7 R9 ]/ W# U
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
9 T2 z  y& |% ]! ~- Z( `+ cplant simulation中的free libraries有AGV模板,
6 ]; v* r1 v9 Z! p里面也有案例。7 [* ]* j, T6 _$ Z" v0 g
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。) y* T  F% w0 T; i0 U9 Z% l: m( _0 O
  Z( l' p) r, x8 `1 w
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
; w. {9 z! B! R* y1 s6 w4 q; N1 |% R4 H7 ]) b+ [
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
/ |' {! S* l  L) M这是AGV_putin中arrive的method。$ N) |, P; W6 j* w4 z
: ^9 {# a& W; q. V% v) ]5 ~
当到达物料速度越高时,这个报警更多,

8 ?5 s+ z5 i- K+ b, j; Q另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-12-21 23:35 , Processed in 0.018615 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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