设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8171|回复: 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'
+ K( H+ }% ~+ d  u; c7 U3 N*/
. r: X/ N, Z2 W# G: }+ X' d4 ais
. B! Q4 c0 @5 s2 U4 _7 s        part, GlobalDistObj, assignLObj:object;row,Lan:integer;3 n9 n7 |1 Q: [+ J" c' G
do  a! ]( R& L, K8 k
        Lan := rootfolder.Internal.Tools.AOLlanguage;4 v; j; P0 c  V- C! x
        if current = @.Destination -- else return. T1 M* a2 I; y. n6 E. L
        then  o/ U4 c6 z2 D1 h6 z6 x6 {8 ?' B& i
                @.Destination := void;/ o# w2 C- o3 n* F; S. E) M
                if @.occupied then+ U  W2 ~- Y+ L& n
                        part := @.cont;  \) q% D$ q' V9 c5 o. }! b
                        @.transpOrder := void;
6 j) u8 ]2 C8 v! E+ L$ l* I: q$ `                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
) C1 ]2 H) h; i- @9 S8 P                                @,root.eventcontroller.simTime);
+ v& v4 d2 k8 r; I                        @.HasOrder := false;
! H* ]. y) k4 N* f! i) e                        @.DrivingHome := true;
8 M) b# n/ \! N( {" g* \. e                        rgManager.tryToStartTransOrder;5 i1 _2 O: E  p
                        if @.Destination = void
" ^: D# K3 M' W6 v0 p9 x                        then -- no transport order for vehicle @+ v7 p9 t- q  F/ V1 H1 N/ ^
                                @.Destination :=, [# J) @8 \! j2 e1 ]6 k2 A: D
                                rgManager.nearestFreeStation(@,track.~);
  ]: p! l: E9 w0 X                                newDirection(@);   
( ~7 ], s. Z7 r                                if @.Destination /= void then4 G' B% H: a7 I% @; c1 R5 M
                                        @.Destination.NumReservation :=7 F" [% J+ t5 d. d$ g
                                        @.Destination.NumReservation + 1;
8 _3 g$ I/ u/ f& b7 x( G                                end;6 C7 Z; W9 @! R# ?
                                @.CurrIcon := "drivingHome";# k2 Q0 q5 e8 v
                                @.DrivingHome := true;2 D! L" M  e2 v$ Z  O
                        end;
( T* {" @2 B6 T, v9 E                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
5 c! t2 u8 w( y) ^                        part := @.transpOrder;
' F2 w; K! [' e- g4 C0 ?4 ]                        part.move(@);-- load part" w: c* r6 R# S& H
                        @.CurrIcon := "load";
4 r4 [7 |3 Q% G% F                        GlobalDistObj := part.globDestination;
4 O5 z+ ^" `8 \                        assignLObj := rgmanager.rgAssignL;/ E& K  g( z$ A/ B0 V
                        row := assignLObj.getRowNo(GlobalDistObj);) i- G6 l4 K! M5 F
                        if Row = -1 then -- since 706 b, E) X/ b2 I# u8 K( r( X- p
                                if lan=1 then- t! W0 K: r# n2 G, V
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
, \3 Q8 C$ p* H# f& G% p9 E% q                                                to_str("in der Andockstation: \"",?.~.name,"\""));
8 [/ x5 k" u1 U2 e/ ~& b/ c                                else
8 e* q8 H- d7 m8 s                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
, N0 a6 {# E0 O; m. N& w                                                to_str("in docking station: \"",?.~.name,"\""));                               
8 k) l  \: C$ D( m" J6 {- [                                end;
' k, H: u6 [/ B3 G1 N. k& q                        else8 d8 o7 S1 K8 ], f, ?
                                @.Destination := assignLObj[1,row];
- P) E! X" v4 }, m. C- f9 |                        end;                       
$ h% \3 n( B8 p6 K2 s/ P" m% a2 W                        newDirection(@);" J& ^2 F% z2 h$ \+ ]9 S; r$ v6 A
                        @.HasOrder := true;. D4 e% d( B: b' }9 @
                end;
1 F' y) k9 q1 m: S% N% q        end;4 {) f& a6 h% v) P
end;        -- of the method: J+ J$ t9 s  p- p
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 3 [0 C' s; M- [+ j  K" H
2 ~8 k6 k- m/ T; f4 o  v
这是AGV_putin中arrive的method。
! @7 `6 I9 X4 I; z4 D4 H  }; A/ x% r, x0 Z
当到达物料速度越高时,这个报警更多,1 C; C/ |# e! G
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
) Z5 s5 X+ Z& }, D程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?9 f- y, H# m- G; n$ c/ k
, h7 y0 x0 d: F- S$ B
另外一个小建议,就是move,所有的move都可以这样
/ S8 K: O  ^% Y' ?* ]3 Fif not move() then debug end2 p* ^9 `! \6 t2 V7 I) F8 p  Q
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
. v' V' B" z' C3 S4 ~6 F3 vplant simulation中的free libraries有AGV模板,
- Q/ b, b! |6 N里面也有案例。
% z# b- F) \  e4 N$ X: u1 N我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
$ W, x! A; Y3 i2 t0 \3 B3 E5 E$ U: p* a) e7 G9 ?8 E+ P: m" e
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 " P+ U) p: f* h8 x! w9 w7 \0 q
$ h( J+ o  H" d9 e1 Q
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
9 G# E5 c9 d" a$ N, J$ P这是AGV_putin中arrive的method。
6 n+ i1 j$ F4 y' u. w% z
  t' H, |- W: ?" v当到达物料速度越高时,这个报警更多,
' V* e; L* s3 Q# F1 k8 I
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-18 23:29 , Processed in 0.019417 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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