设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7573|回复: 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'/ x. g' d' m; I$ ^% q7 L
*/; }* h8 P/ d; {& t( h) g
is: R+ Z& p( Y, z4 i; T
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;8 ]! V% n( V: d
do- h% a) U) i2 P9 x
        Lan := rootfolder.Internal.Tools.AOLlanguage;0 C3 Z  r$ j( s. f& j: O; w
        if current = @.Destination -- else return4 E7 |- \1 o7 |; P! l6 F5 r4 h
        then
3 a0 u4 h+ ~% @: F/ c7 B7 d; n                @.Destination := void;
+ ^& y2 Y! C; N6 Z% U                if @.occupied then' O+ p8 J9 G* Z# w# \' d
                        part := @.cont;: {! k5 a/ l% J8 T
                        @.transpOrder := void;
* {' g) b% a; v- E                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
% z% I* r) Q1 E* Q                                @,root.eventcontroller.simTime);: s& x7 q  g) @  I$ V! u: D
                        @.HasOrder := false;
) u% g) _  e/ T: o  [$ t                        @.DrivingHome := true;8 B  H7 z' z- a4 y2 X1 h" H
                        rgManager.tryToStartTransOrder;3 Z% U1 X' @5 {$ G, e% h7 E
                        if @.Destination = void; l! i, Y1 }) V1 W1 [& M
                        then -- no transport order for vehicle @6 `& C& g) f5 `& D8 T' n! d# w2 P
                                @.Destination :=
% _& {- a; v+ M$ x7 n                                rgManager.nearestFreeStation(@,track.~);
9 L* n$ m  r- a/ p+ p                                newDirection(@);   
) y0 L0 ]; [) t' j8 w1 L                                if @.Destination /= void then. s0 |( R# K8 @8 A' |1 S
                                        @.Destination.NumReservation :=: L1 a, W7 O  ~8 r% R% V7 x6 E/ g
                                        @.Destination.NumReservation + 1;( p" X7 y; N3 L& }. p1 {* `! v; h
                                end;
! J$ ~$ B" @8 f0 \' c                                @.CurrIcon := "drivingHome";
& u/ J8 _, O' j, h                                @.DrivingHome := true;
4 [4 X/ @3 F' |* ^* R( }, Q                        end;
- g- t1 c+ u% G- {2 D                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
) e$ V9 |$ P1 B% D4 ], ^7 t                        part := @.transpOrder;/ C3 t) s% X, q" w* Y" s+ N* B
                        part.move(@);-- load part9 B; Q; }# B# r
                        @.CurrIcon := "load";3 x) Z5 A' {) B- V; F
                        GlobalDistObj := part.globDestination;
, Y6 K* I% c  }, H. r+ }; X% z" U                        assignLObj := rgmanager.rgAssignL;. G# \' Z. \. S
                        row := assignLObj.getRowNo(GlobalDistObj);
; N. w/ _7 @+ d                        if Row = -1 then -- since 70
9 ^2 P6 V7 l- `2 g5 ^                                if lan=1 then
9 m" i2 o7 r( n, r, R  Z8 [                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),0 I$ j- Z( e3 |$ q
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
# T* [; B4 q8 X" Y  A                                else" n: b, [3 n' D  k4 [
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),  A& A' I+ L& e9 G' ^& {: o
                                                to_str("in docking station: \"",?.~.name,"\""));                                % G/ G2 a, u: _. |
                                end;
. x! n. o3 V4 _, y/ v3 u2 R                        else
9 i4 j2 e- W: }$ j# t9 E                                @.Destination := assignLObj[1,row];* F; E; |7 t  Y6 W8 N6 v- _; o
                        end;                        " @& H1 {5 Y, ?; @- L; s8 `5 q
                        newDirection(@);9 N9 y6 `) C' G3 r. `. ]2 B
                        @.HasOrder := true;
1 F3 l( `4 ~" J  [                end;
# T7 G' C$ \& Z/ G        end;
+ _1 D& i2 y7 I. c6 Xend;        -- of the method
" L! p- [* U% W4 W, n
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 % `$ o4 u- B& f. @3 ~

" w- u0 V; d, @3 @9 v$ i  o. Q这是AGV_putin中arrive的method。
% X. V6 H' m& u! b; i- K# o$ `
6 ~0 F! l! D% D, B. k当到达物料速度越高时,这个报警更多,) C, ~; W/ F  Z' |( a
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。/ j7 c1 B6 ^4 V, ?2 x. t  J9 m/ g
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
% |2 v( C* v: }3 w- I; Y
$ V" s) L: m$ T; d- p3 v另外一个小建议,就是move,所有的move都可以这样# j. C& j  s5 @. s; R0 B: B* T# ]+ ]
if not move() then debug end- q9 g( k2 f  Y8 A, W
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。3 ]! h$ t+ Y$ p/ N8 z# f
plant simulation中的free libraries有AGV模板,
$ M, m5 D! ?+ O( q# \里面也有案例。
8 ]# ~, O( o+ b3 J4 a4 B! E; x& b4 e我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。* c  d9 \) \, N  V1 V

8 p4 q: ~  c' x1 n, x我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 6 _$ V& G0 j  W- {

9 @/ o8 N3 R* v+ ?) k2 {5 t那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 & }) [/ q$ D* T$ ^. ^
这是AGV_putin中arrive的method。
( q: ^+ I% M& M
* h! E/ {: g( }9 M8 A/ ?, m当到达物料速度越高时,这个报警更多,

( F1 H, y5 i; y# M" p6 a另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-18 05:23 , Processed in 0.020694 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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