设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9516|回复: 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'* p. K4 E% t/ L5 B, w. w" G
*/3 P. b) F# t# c& w- d( Z
is
3 l* o1 c, F6 h7 @        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
  q  u- Z4 S$ _  mdo
" J! h" s: ^2 P( @$ R1 t& }& B$ \        Lan := rootfolder.Internal.Tools.AOLlanguage;
. K4 u" O! h! b0 J( J        if current = @.Destination -- else return
/ U: L3 T! Q9 h2 Q- P        then6 |+ r  H' a" e( q' A
                @.Destination := void;/ W& D5 w$ r+ a
                if @.occupied then
, [0 f" Z  W6 r+ D4 Y                        part := @.cont;
  W- y2 E8 |: [1 g, t1 K                        @.transpOrder := void;% m$ U* T, _* V# o) ^
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
; u' h8 K" Q/ x1 l0 R                                @,root.eventcontroller.simTime);
" u9 G- {/ ~& ]4 x0 Z& X                        @.HasOrder := false;. k7 s" j/ V/ X( E- r% Z) p
                        @.DrivingHome := true;* b6 i* D4 A; [" q/ y5 ^
                        rgManager.tryToStartTransOrder;
% Z. N+ h% H! S/ p2 P0 z' e3 T# o9 ~# a' q                        if @.Destination = void* t. J' T8 z: U( F1 g' ~! \
                        then -- no transport order for vehicle @
4 U# l) Q  y7 A& z( V* \- M                                @.Destination :=
6 h0 q2 a1 u: j! E" ~                                rgManager.nearestFreeStation(@,track.~);8 E; F# B& m, }' V; X5 E! O# w4 ]
                                newDirection(@);   
: @& [, H# q0 j% w' ^$ y( n) q                                if @.Destination /= void then
; f. q& }  {# O$ |$ [* O                                        @.Destination.NumReservation :=
' c( Q9 M$ k6 @- Y9 V- r                                        @.Destination.NumReservation + 1;
' C4 s# b5 F& B: A                                end;% E* ~5 i4 K2 K- o
                                @.CurrIcon := "drivingHome";% p9 L4 o, _7 K! w7 |- ^
                                @.DrivingHome := true;# G2 M7 e% F4 k5 f! p
                        end;
* U, x' Y4 m% u( _6 n* N# w# S! u                else -- the vehicle @ is empty, both vehicle and part are in the same dock station# t$ C& s( ?( m* P8 S
                        part := @.transpOrder;( J( d) J. s1 z" K5 ]
                        part.move(@);-- load part. g$ V8 [  @+ S9 k
                        @.CurrIcon := "load";7 D! }- _# Y; ^0 S- m
                        GlobalDistObj := part.globDestination;
( a% ~. `  Z) {! p1 h  O( ^9 Z                        assignLObj := rgmanager.rgAssignL;
0 R4 n/ Z  H: v5 j' u7 M! P                        row := assignLObj.getRowNo(GlobalDistObj);' \7 Y* \' `: H: t- L* A5 p
                        if Row = -1 then -- since 70# F( H7 z6 `- O
                                if lan=1 then- [5 V3 J8 d' A% ?
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
( [$ \) d0 K; j. o" k                                                to_str("in der Andockstation: \"",?.~.name,"\""));
  \+ F' q. q- y% I' O9 W' T4 |                                else: ^7 j+ {9 A! o" {6 F
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),: E& f1 i) w" T* k$ Y( E, J
                                                to_str("in docking station: \"",?.~.name,"\""));                                ( O' K, Q2 j5 G) J; @* m0 _
                                end;' ]- V8 x0 A; Z9 A! j7 a3 ?
                        else
1 u$ M$ @3 A1 o) @, i5 K: Q  Y                                @.Destination := assignLObj[1,row];
3 i% a+ B5 X& Y% s7 q6 l5 E, B                        end;                        7 d4 @, z% M1 i+ J
                        newDirection(@);4 ?* `! }9 U. _. B/ a! {$ b
                        @.HasOrder := true;
; c2 |) P" p% ~+ d: s! C, R                end;
6 `( L. \" t1 e! _9 H        end;7 V+ s, s4 T1 W' l, s/ z1 y
end;        -- of the method; E' ?2 I6 O6 p4 ~# S, }
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
. z* k7 k3 t% ~8 i" B- v
( V2 x, r) v: [9 X3 |% a7 m; m这是AGV_putin中arrive的method。& q7 h4 U* A+ |7 [( L: s

4 ?. l+ A  @; U2 G9 b! K0 N+ j7 e# D当到达物料速度越高时,这个报警更多,1 }- P- Y" {4 s4 ~) ?4 B
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。. v" M! G9 [/ p
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
, r5 i' S- e( S* y9 `+ m% I; S, `% l1 g$ @  Q
另外一个小建议,就是move,所有的move都可以这样
8 v; _7 w7 Y3 Tif not move() then debug end: U8 ^  I( L6 e: V# k
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
: u& B* t; v5 {( [. r  cplant simulation中的free libraries有AGV模板,$ i# W* c* `! e1 r6 s: @; Y- n" \
里面也有案例。( D9 ?, x* v; e$ L4 P6 [
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
& c0 E5 t4 v' B: C2 s; A# Y) q9 p, D: h2 T& e1 T3 Z8 W9 O
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
9 u8 i6 E" u6 _& P3 ]+ _% t' J6 F+ I/ ?' b9 i5 w
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
$ T) i) s  b( F. g这是AGV_putin中arrive的method。) Y0 v$ y0 H; G9 M' Z
" J  R) L. x% m3 `7 e# I
当到达物料速度越高时,这个报警更多,

0 n. x( v9 g7 C9 _% R: N另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-5 14:22 , Processed in 0.016496 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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