设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7152|回复: 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'
) Y7 n! x! E- F3 s*/
& J8 D! T1 x* H  H! Cis
2 z$ L, V6 p4 @# F) {        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
7 |' J9 `$ D" D! `  ydo( A, d# A6 S* m" c
        Lan := rootfolder.Internal.Tools.AOLlanguage;. q; ?3 L3 u9 c+ z' u( H& S7 K
        if current = @.Destination -- else return2 n+ ]/ l, t" H/ F
        then' t$ |+ L" b; H$ ^
                @.Destination := void;
+ a7 v1 M! z! R1 U' U9 s+ g5 ^                if @.occupied then& w; _# O$ \# G$ p: c7 W7 d1 x) H$ a
                        part := @.cont;- D4 I7 k* ~  |, i* c1 t" q; P
                        @.transpOrder := void;
& L+ B+ n7 l* W                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,3 m9 G( `0 D( j: c7 W
                                @,root.eventcontroller.simTime);" m: X! d" ?. `/ J3 [7 }
                        @.HasOrder := false;
% v! F& J2 d6 g0 h  ~1 r                        @.DrivingHome := true;8 [3 M: u+ ]. ?8 H/ [
                        rgManager.tryToStartTransOrder;& S. @8 i0 X0 K8 {
                        if @.Destination = void
) p' r0 ?/ n. H+ P  k                        then -- no transport order for vehicle @
. {, D; R8 w; K                                @.Destination :=! g+ b+ D* e) _/ b3 X5 M6 Y$ W
                                rgManager.nearestFreeStation(@,track.~);
/ L# d+ t8 y. U' O                                newDirection(@);   
3 [, Y& I" S+ U7 ~( U: t0 @2 F/ ^% i                                if @.Destination /= void then
) ~. G# z7 R: H( T! ~) Z2 g                                        @.Destination.NumReservation :=/ q# E" a- S% [9 G* E6 C: s; [
                                        @.Destination.NumReservation + 1;
3 p& A& T9 C1 T                                end;
- H) I" M" G8 e1 x) }8 I  M                                @.CurrIcon := "drivingHome";  V2 o$ H4 H* U! A2 H
                                @.DrivingHome := true;' f# U6 E- ?5 Y. D9 T) @$ y" w
                        end;
& I9 \2 A: a6 m' N: }                else -- the vehicle @ is empty, both vehicle and part are in the same dock station* \7 Y; z% \2 ^0 V
                        part := @.transpOrder;; {7 O* ~; m: h0 r# ^& }% f
                        part.move(@);-- load part
) W: d: l% _- Z% y: a% L                        @.CurrIcon := "load";% R, r* F7 B2 L
                        GlobalDistObj := part.globDestination;9 C2 l: M0 W3 Z+ v4 ~5 U
                        assignLObj := rgmanager.rgAssignL;' i8 H  g. [4 ^1 w  s
                        row := assignLObj.getRowNo(GlobalDistObj);
) s! q& O" o, r' |9 a                        if Row = -1 then -- since 70
2 `1 f, k2 T, W( `( h' {                                if lan=1 then
% w& T& d4 ~3 n8 @" }                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),, `$ }+ [$ [* J1 e+ E3 M* f$ h$ w
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
2 _, H1 C& L* f# o                                else7 f" Z6 H" d+ s6 C0 U( d
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
* z% p- K8 G3 F                                                to_str("in docking station: \"",?.~.name,"\""));                                ! M1 _" h+ M% v' W) l1 Q+ Z
                                end;
1 o( b' c* I% F. h                        else( i' `8 R0 y7 C9 c
                                @.Destination := assignLObj[1,row];1 T/ w6 U, H- E$ P; ^
                        end;                       
/ @0 q& r  N6 w. ]                        newDirection(@);
! |% ?  G" W5 Y  C9 Y                        @.HasOrder := true;! i- d6 k. u# o# m. a8 o
                end;7 s& R# Q. _  z) T
        end;( Q2 @+ O2 z: u
end;        -- of the method+ Q7 V5 W! U' j7 ?% V
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
% H1 j; Q7 F  C1 }! t2 n& }( B# h8 h3 [& U7 C! Y4 r
这是AGV_putin中arrive的method。
) }, U- R* O$ i7 _( h! z  v, m, _4 m- b* Y- E5 j
当到达物料速度越高时,这个报警更多,
; E, Q5 r. d  L* X* v可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
  x- A& a! K5 [! }' O, N; r程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?( [9 r& u1 E" s+ @6 Y
; Y4 y0 ?7 H& i" V9 \! t1 z
另外一个小建议,就是move,所有的move都可以这样
- Q1 h( p; M$ Tif not move() then debug end$ n. f; X( M' N7 R6 w
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
  @6 {: c2 f; tplant simulation中的free libraries有AGV模板,
4 h7 t' I* q8 {3 Q% ~$ d里面也有案例。
4 e. @$ J* v1 ~0 D- d0 T  v7 F我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
& a7 `; c: Z' Q7 s
' G1 k6 j: ?' ^/ B& C7 \我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 0 |# \( ~2 L/ N- y1 M

: e1 a5 ~1 N/ u5 m5 H; d( o那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 5 S2 X. M$ j" }
这是AGV_putin中arrive的method。: ]9 y* U2 V0 {8 T

: `4 B! k6 M; E6 c% R; \当到达物料速度越高时,这个报警更多,

* h( e7 `% b( n. L  F, x/ z: V另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-22 07:46 , Processed in 0.017459 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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