设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6221|回复: 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'
, J, N; y' t% s$ I- _*/9 s' d9 G9 q; F/ E" d5 q
is
2 B4 ^, B  E$ `& ?  m7 z5 l        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
( F, {( f( U4 i  [do- W$ h+ A+ u0 x: X' }% E8 ]# f
        Lan := rootfolder.Internal.Tools.AOLlanguage;1 S3 w  {4 c. l0 O) {: y
        if current = @.Destination -- else return
1 q& j# L' a+ W$ b2 t, A! w. U1 f1 S        then7 w/ ]# e: s( H8 h
                @.Destination := void;3 P& X( l* o. w' i* `9 \0 K' q
                if @.occupied then
; N( @! z% p( X& \; U                        part := @.cont;
% d0 Z9 k  V; M7 x0 }; o                        @.transpOrder := void;
- X" X' h+ Q* R4 Q7 S* T                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
' v9 M% ]/ ~& T5 a                                @,root.eventcontroller.simTime);6 [6 u- j. E+ C3 l
                        @.HasOrder := false;, V+ q) w# P' V/ w$ G. Y2 t
                        @.DrivingHome := true;
# V: m; H; h8 i) m0 }                        rgManager.tryToStartTransOrder;& Z4 p( u0 m% d5 ^7 y8 @# @
                        if @.Destination = void' e% m3 n# _  g- A8 f0 ]
                        then -- no transport order for vehicle @
2 L/ z8 ^* N/ @6 y3 d                                @.Destination :=
3 r, j: c: }3 }7 g  G0 m- n                                rgManager.nearestFreeStation(@,track.~);# O1 [0 d" E: m8 [1 B
                                newDirection(@);   ; v4 S% `% g# ~2 E5 D7 B, {
                                if @.Destination /= void then# E) l& ~3 v4 l
                                        @.Destination.NumReservation :=+ s  ~* l" n; V" c+ C# m
                                        @.Destination.NumReservation + 1;7 a' L0 `& A7 \% V# @
                                end;
$ x& ^8 `+ ?8 b5 r                                @.CurrIcon := "drivingHome";" |* a/ l7 Q6 g$ I& b" t# Y' N# F
                                @.DrivingHome := true;5 P5 x3 V  P: k  ~. `9 p1 \, Q
                        end;" W% \3 S/ j1 S% h3 @
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station; W0 l0 X# c2 s
                        part := @.transpOrder;0 [* o( ]1 z6 M& H, u) m2 b
                        part.move(@);-- load part9 @% i- B* Z3 d; {% r4 w! X
                        @.CurrIcon := "load";/ X- q& |# P/ M2 B# v* D
                        GlobalDistObj := part.globDestination;
* P; `/ x$ |. s                        assignLObj := rgmanager.rgAssignL;5 y- M! p% F! s8 x9 |
                        row := assignLObj.getRowNo(GlobalDistObj);
2 E+ l8 x6 @; G8 A# t- j( w& d                        if Row = -1 then -- since 706 o; W& N# p+ k3 u( C
                                if lan=1 then
' |% K4 e4 B: O                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
2 w8 E5 n3 q6 b  ~7 m2 X  `2 C' w' t# o                                                to_str("in der Andockstation: \"",?.~.name,"\""));$ U* w( q9 M, R" j
                                else( }- E; r: u8 s# {5 k3 M1 `! B
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),9 I) m0 W3 e- G9 w, p
                                                to_str("in docking station: \"",?.~.name,"\""));                                + v+ I; ^& U( H* S4 ]7 A
                                end;4 Q9 V% O# W; Q: j. l2 W
                        else1 D' Y/ H( A% l0 H4 \5 @
                                @.Destination := assignLObj[1,row];  |7 r; ?0 K2 @5 }/ K# h
                        end;                        9 t9 w3 K/ p) K
                        newDirection(@);
8 s6 j2 _. W& t/ s3 g                        @.HasOrder := true;
9 C0 X. t* _3 \! }3 x                end;* ^3 f. I* B2 ^% X4 `
        end;
) H, W) Q) ]3 K, {. f' q7 ^: ?; Vend;        -- of the method
9 n3 E- \% B5 T
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 ( {- U7 S! X4 e1 V5 s
. r0 c$ K2 q+ Q5 E' U
这是AGV_putin中arrive的method。
+ a& _) \, ~5 N% ?  {* m
6 N. X. N# t) d当到达物料速度越高时,这个报警更多,
1 c  Q) p( h' p6 O, W4 P* O可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。! r6 ?9 h: U3 F2 t7 h+ X0 q
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?" V) f. k0 J6 B' b0 z' z' d" K

  J/ \4 l- U$ B  K* m另外一个小建议,就是move,所有的move都可以这样
4 G- @3 s; B; e+ i6 d' wif not move() then debug end. E, v) v2 B2 h9 J" J
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
% ^' ~9 l. z, A$ tplant simulation中的free libraries有AGV模板,) `* k) w# v" D$ `
里面也有案例。0 u8 R9 [) k6 m, s, b5 p  V1 p
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。. ?! G$ K: b7 o7 X5 n
' O$ H4 |( ^3 [
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 9 ]' }0 w2 F" }% j* P1 D) J
7 T' ~9 u1 s# M5 c7 I
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 4 Q' z5 ~9 c( K% [4 `. {
这是AGV_putin中arrive的method。
! Z/ G4 \2 {: |! E# _
( T% c2 @1 p9 e' d5 W* K% N$ F8 Q( Z当到达物料速度越高时,这个报警更多,

% o* G5 g" x) |' i1 h另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-1-25 17:30 , Processed in 0.016940 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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