设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8166|回复: 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'5 m7 D1 L" K6 A# n' p
*/
8 \. ~8 J: g/ O# w7 t6 eis. y/ w0 I0 ]  F; Y: t
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;9 O1 X1 O8 C: T% H# Q& P3 k- `
do3 h4 W3 L4 S% f5 {7 ~
        Lan := rootfolder.Internal.Tools.AOLlanguage;
5 E- h" Q# r* R* y& Y. |$ Q: \        if current = @.Destination -- else return
% h' @/ g$ e3 V6 S0 b8 K8 V        then
( Z8 i% c5 I& {( |" }: [                @.Destination := void;. V6 S: r' ^- H6 R6 K. z3 {
                if @.occupied then
4 X: M4 b; H- I, B+ ]& T2 ?, B                        part := @.cont;
8 i! Z# }4 v) ~# }+ S  q                        @.transpOrder := void;8 ]$ B: w6 p- G- A
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
, z, ^3 D" `' d: b2 m$ N                                @,root.eventcontroller.simTime);# k, `9 _1 s; W9 R5 @- [3 {. R
                        @.HasOrder := false;
6 e6 V8 z- ]. z& k7 q                        @.DrivingHome := true;' j: @& O- r4 s, ^8 D  Q
                        rgManager.tryToStartTransOrder;0 `/ |! Z# L" R( j  o+ j2 }
                        if @.Destination = void$ l% J! E) L: @/ ], D. |- s% x
                        then -- no transport order for vehicle @) g9 F- m- U2 L- C2 C
                                @.Destination :=- }& @- }  i; z3 V8 b; n
                                rgManager.nearestFreeStation(@,track.~);: \. R7 `# X6 r  O/ m: p7 `: A
                                newDirection(@);   & B, c- l- y) x6 y
                                if @.Destination /= void then
0 L7 U% w" B; ^; R# g) @0 u                                        @.Destination.NumReservation :=
# y- J& {  ^4 C5 ~4 a; r                                        @.Destination.NumReservation + 1;
5 D* R& `! a1 O7 c9 L: {8 _                                end;. M; t( v* U2 a- \
                                @.CurrIcon := "drivingHome";
. Q: Y, X& x0 `" _6 U/ c) j" d                                @.DrivingHome := true;$ T6 c" o! H% {( v+ L6 k
                        end;6 h2 j2 \6 k: S! e& c
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station# H% q9 c5 T' u' |+ T" o
                        part := @.transpOrder;, u3 @- K! J: ?# t* V
                        part.move(@);-- load part
2 a3 k' C" C3 q, |8 P0 p8 P                        @.CurrIcon := "load";
* }8 D3 x9 S( a# J4 W+ X8 t8 j! {                        GlobalDistObj := part.globDestination;
, S9 Z  H0 s9 w7 W5 S9 w                        assignLObj := rgmanager.rgAssignL;
# w# t% ^6 ]5 A0 [$ D                        row := assignLObj.getRowNo(GlobalDistObj);$ [* u8 I' R  J' c- h. ~
                        if Row = -1 then -- since 702 j" \; a9 z' I% E  w
                                if lan=1 then
5 j0 a5 ^: ?3 }                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
8 w; f5 ?  U+ y7 m                                                to_str("in der Andockstation: \"",?.~.name,"\""));
4 e* E( c5 V# s% N  V                                else
8 h# s4 X, P* B7 r" Y. P                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
/ h6 J5 z3 `  V3 {3 a                                                to_str("in docking station: \"",?.~.name,"\""));                               
% n, B" J' Y- C                                end;/ e% U3 F+ V7 Z1 ?9 m5 ^2 i5 u- z
                        else9 V* I! T+ R) w7 b' c+ J
                                @.Destination := assignLObj[1,row];6 _1 r1 |9 k7 }( L: N+ J5 Y1 O1 f6 z
                        end;                        * _; S6 H' `  |; \3 n
                        newDirection(@);
# `* m. ~" O- B  f                        @.HasOrder := true;
! q9 z+ ?  d; _+ u; ^0 |                end;8 V% l# m, d- M0 @% U
        end;4 f: S/ N& a5 z9 q! B9 w
end;        -- of the method5 @$ q! v/ C3 F8 r, V+ ?  O* R
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 0 O1 w$ Y. w" Y  D
$ ~! o2 v% R+ E
这是AGV_putin中arrive的method。
' g& ~  x, T* S8 Z" e  M5 U( T8 N8 w3 v& f
当到达物料速度越高时,这个报警更多,
: v  ?) ~, p( X; k. ]7 n2 S' G可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
: E! ^* L4 j1 X1 N4 p$ H, H% B程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
9 u* w; H) U4 l
1 I; {& q& E# |0 w7 x  j9 V另外一个小建议,就是move,所有的move都可以这样0 S6 ^1 Y2 w. c/ e
if not move() then debug end
1 H- B; W5 Q" ]) }, k( X/ n这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
  o$ u) N8 }. m( n7 o- K4 x( i% K& Splant simulation中的free libraries有AGV模板,
6 x( D+ P! n6 A2 R7 z0 f里面也有案例。  Z* M3 p4 t& L7 w0 e5 M9 E/ Z
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。8 D& I8 P4 [+ k6 T, f/ p
1 q# T1 i, p' }! D: I
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
; {8 k* P  K+ B& Z$ i- G: z$ v* @9 J2 F0 ~! d# l' P' u1 C9 P
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
0 N/ k' j& H# l* `% M+ H' ~这是AGV_putin中arrive的method。0 u! s  ^0 C: }& j+ `; x

' ^+ s( g8 m2 f) _% I当到达物料速度越高时,这个报警更多,

* ~- R& c2 b  }  H另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-18 13:40 , Processed in 0.020407 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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