设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9012|回复: 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'
8 j5 W1 K, M$ |; E( \4 i*/
% \) y8 H/ V  H# J# d5 W5 r3 Eis) g; c' n7 }1 ^. P! |
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;5 H8 R; [! ~! [1 y  \
do9 ?* [  \" X2 S8 [
        Lan := rootfolder.Internal.Tools.AOLlanguage;3 `7 h2 ^/ c8 x' |1 J3 E
        if current = @.Destination -- else return5 T+ ]1 L" `1 C  a0 o, Y
        then
0 e& e- a4 Z' Q8 `. y                @.Destination := void;2 v- c9 W3 _9 A0 y- |2 ~; ?
                if @.occupied then) x& c5 X% C- H2 p
                        part := @.cont;! x+ B8 N4 L4 U! N
                        @.transpOrder := void;# r1 U9 ?+ \( Q
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
! {4 h: `, V2 U# T                                @,root.eventcontroller.simTime);* x  f* I5 v( Q. m" L
                        @.HasOrder := false;
1 x' l/ l1 x' G- P% a/ W5 S                        @.DrivingHome := true;: C2 a# r6 s. w4 E
                        rgManager.tryToStartTransOrder;+ d' Y' o! i" P8 }5 q0 ~# i0 S
                        if @.Destination = void; y( \$ N' y+ q' @
                        then -- no transport order for vehicle @2 X8 B; X+ e4 u5 t. E0 Q
                                @.Destination :=9 `. D  J; m7 M6 p8 k4 ~' A
                                rgManager.nearestFreeStation(@,track.~);) A  e3 E) v  k3 X' n- g
                                newDirection(@);   
+ y1 I& \) r+ H: K0 E0 r+ v                                if @.Destination /= void then
( o& K8 `8 J2 c9 e2 p$ d$ n                                        @.Destination.NumReservation :=8 Y" _0 N1 b! r$ Y, R7 y
                                        @.Destination.NumReservation + 1;
, f0 k8 u6 s5 a% [- G  Y                                end;
+ j' C! ?. f2 I, Y                                @.CurrIcon := "drivingHome";8 D; r  U9 r. {# O7 q4 {- v( o0 k1 g0 c
                                @.DrivingHome := true;: r" D- K# b& I& Q' O
                        end;9 d( n/ ]! s! z6 f+ R
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
9 s+ D8 v  t9 n                        part := @.transpOrder;3 z2 n/ k5 d0 M" H1 _
                        part.move(@);-- load part+ e  t' b7 o& c  J3 S: z
                        @.CurrIcon := "load";7 F0 m4 P; r, Y  F& b4 `5 X, z7 }& ~
                        GlobalDistObj := part.globDestination;" [2 V2 g% Z9 T3 P# z2 F& F& ~8 M
                        assignLObj := rgmanager.rgAssignL;
, t4 d; l- J+ q6 D$ ]% h; y6 m                        row := assignLObj.getRowNo(GlobalDistObj);* ?( ~6 }1 C- G
                        if Row = -1 then -- since 70$ V- h  i9 m; \! _1 \, |8 r
                                if lan=1 then6 R& e. y3 V' W0 q
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
  M& D" S; I2 d. {/ r( I                                                to_str("in der Andockstation: \"",?.~.name,"\""));
9 k* o0 s  q' N  K" y4 d/ B                                else
% R7 x! Z: k$ f5 Q' z+ ]                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),1 H% E! V/ Q5 z8 {9 v
                                                to_str("in docking station: \"",?.~.name,"\""));                                ( `. T8 L2 d9 Y" z
                                end;" i2 I+ _" j% l8 ]
                        else
" c3 T' w& a/ X' o                                @.Destination := assignLObj[1,row];
& q6 ~. ^/ B! Q* p8 t; A                        end;                        . a, R; ?+ G6 Y" _) o( P7 F
                        newDirection(@);3 q: o& b) E1 N
                        @.HasOrder := true;+ G9 l) I( J8 b* b
                end;. R8 D" O3 l1 Q+ l1 ^! ]
        end;
( W& B7 a% a9 u! Send;        -- of the method/ U* Q& o: R* B& E" M
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
& M; m9 I! @" L  T" ?) K' F" _% w- N: ?6 P, _1 W( s, }8 E, Z
这是AGV_putin中arrive的method。
1 {* B8 ~0 |4 c# q: M$ w* K4 l& F% n& f8 j4 s( K4 w1 v
当到达物料速度越高时,这个报警更多,
( u3 l& `3 \8 O$ U可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
1 N4 F  k' V( f6 @; Z, [程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?. W* `' l$ n" F1 v) `/ Y/ D

0 w: u! i( w2 {# g' A! Y另外一个小建议,就是move,所有的move都可以这样
+ u7 ?8 G. R4 I# \% b: T1 \- m$ Jif not move() then debug end
. u2 p4 g4 o# m) O这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
( |5 E. P& z' v* Qplant simulation中的free libraries有AGV模板,) Z: S7 P/ S# d4 ^0 n( Q
里面也有案例。$ J2 J; }" e# L2 H
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。" p  i$ ~( @$ ~

9 r- i5 Y/ q+ Y( g我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 1 }: ]+ \8 i" q! M1 g

+ _3 A; w) f' {( _那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 . ~0 ~3 D  `' z& z
这是AGV_putin中arrive的method。! T3 P6 w( x7 I7 i
' p" K! Q8 M+ [7 F! W
当到达物料速度越高时,这个报警更多,
- c9 }) q) B- A8 d( v
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-7-8 20:39 , Processed in 0.018821 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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