设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6664|回复: 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'
. z& j3 \' {7 v/ E*/
/ s( K( f$ b! A" dis
, S6 g# y5 t0 T0 \! U" E0 W  J        part, GlobalDistObj, assignLObj:object;row,Lan:integer;5 @9 {3 E- z$ ?( t) O  t
do
) `) s' S' m6 n* p4 l) b- A1 }4 L. Q        Lan := rootfolder.Internal.Tools.AOLlanguage;
/ t7 I& }# d. T9 n5 B& O        if current = @.Destination -- else return; }2 w5 V: B( ~: }  |
        then2 ~$ W5 N( M/ `
                @.Destination := void;
& U: [2 i. B: K0 G                if @.occupied then, J4 @9 a! N' r1 W0 Y+ g
                        part := @.cont;
$ U. a- [9 q- X. x2 w0 W0 J                        @.transpOrder := void;# p  l" l9 q, ?" f
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
! M2 w, C* h: J) C                                @,root.eventcontroller.simTime);
4 M8 t$ R' |( J9 U1 Y9 ~5 l8 {                        @.HasOrder := false;
+ Q$ D* l# P$ V; D( _                        @.DrivingHome := true;
/ |2 p2 p6 J1 [7 {; M; q                        rgManager.tryToStartTransOrder;, D0 w# K, t- U) ]& W% u, [* h. x
                        if @.Destination = void" Q  Z4 a) V* W9 Z
                        then -- no transport order for vehicle @
3 k& {" t) n: N% Y1 H                                @.Destination :=6 Q/ N/ u+ U. I4 B
                                rgManager.nearestFreeStation(@,track.~);
) x2 u) f0 i7 \5 f5 L9 N, t6 |3 d                                newDirection(@);   
! Z+ |) l$ s" ^6 {6 M0 }$ [$ o                                if @.Destination /= void then. r( }3 u- ^$ w2 L
                                        @.Destination.NumReservation :=6 ^* u! Q* F7 N0 O' S6 T
                                        @.Destination.NumReservation + 1;
8 p( e$ N1 `. `& \" r* p                                end;1 e8 `" \7 R. I8 G$ {
                                @.CurrIcon := "drivingHome";# ~& I: q4 R' m; t" k
                                @.DrivingHome := true;3 C. Z/ T$ j: `, J6 p
                        end;
& e; A: j  o  a) N                else -- the vehicle @ is empty, both vehicle and part are in the same dock station( f3 U; y& a" F" [
                        part := @.transpOrder;" ]2 e5 b  |9 I4 g' N1 H
                        part.move(@);-- load part
- {! I! X$ N% o6 @0 x" |                        @.CurrIcon := "load";
, E- X( J2 \  x# J                        GlobalDistObj := part.globDestination;
, E1 l3 [8 y* d3 m3 ~" U! o3 h                        assignLObj := rgmanager.rgAssignL;2 a+ n' D5 y( a# O0 m7 T: }
                        row := assignLObj.getRowNo(GlobalDistObj);8 @; d% w" z5 ^6 h$ Q+ H2 ?
                        if Row = -1 then -- since 70
  ]2 f- e8 F  S* L3 r  l                                if lan=1 then2 z8 W: o5 f! l0 g1 k
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
1 V# [9 {: x5 W                                                to_str("in der Andockstation: \"",?.~.name,"\""));
# Z1 `* ]  ]! \% o  a7 I5 L                                else
5 y7 j# x# W4 U! ]2 ^3 ^# G                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),) K% f  H. ]( f: ~! `: }) L. \, t! |
                                                to_str("in docking station: \"",?.~.name,"\""));                                * T- A! S4 o6 \( `2 y9 t" O
                                end;1 e& v& M# j* W5 I/ P8 W$ f
                        else: _5 [, F) U! Z1 }
                                @.Destination := assignLObj[1,row];
2 j1 }& u3 O9 B7 W& z4 E9 }  w$ G8 H, D1 X                        end;                       
) Y" x( k/ S% R5 W  V                        newDirection(@);
* ~+ E9 U- h9 ^8 N) l# D                        @.HasOrder := true;; L$ A" D& B/ w" p
                end;  u2 D1 M. p' f2 l; A
        end;
/ U" ^6 g: Y& C+ Iend;        -- of the method
. e( q8 L8 C7 z. _& Y1 `
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑   ~& G3 S! ]9 H1 p  z! ^' @
2 J! i$ W/ d2 P4 v% D1 v# H
这是AGV_putin中arrive的method。
4 Z; q& P  f- G2 T$ O; Y, A4 V: a6 W5 ]
当到达物料速度越高时,这个报警更多,
; G. K1 a/ a  l7 E3 J可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。# ^% r4 j5 {- x( c
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
- n1 C+ `* u3 ~& s% y8 Z  [5 _; ^
) F" V5 X6 n: M5 ^- S另外一个小建议,就是move,所有的move都可以这样
' p, b: f  U; x) Tif not move() then debug end) `# [; R: u# u2 W% o
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
. Z' l9 d1 j* \! [, u; xplant simulation中的free libraries有AGV模板,+ I+ ]2 ~  @) L; @
里面也有案例。( r5 j4 O: S5 `; `' I- r$ F& c
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
/ ]2 n  q/ C& K$ v2 u, P( J. K7 o5 ]- p
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
0 z3 Q6 |# a5 U1 v: J( }' D
0 x" V) F/ v; R; z- Y0 L# e那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 & z& q1 m2 {8 K  g! e# ^
这是AGV_putin中arrive的method。
8 c# P6 E6 K9 Z# ?7 a; D. I0 |9 G9 T2 J: k$ x1 a
当到达物料速度越高时,这个报警更多,

! a$ E8 [' e" M! S8 p' x' ?( u另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-19 18:49 , Processed in 0.020440 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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