设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9955|回复: 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'# N4 s- P. e6 z: O
*/
1 T; i" B) Q! B% Dis$ `. ]& R+ D$ g
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
' d2 q7 B& K8 Qdo
5 w' U) t- v' P$ H0 J: r        Lan := rootfolder.Internal.Tools.AOLlanguage;
4 a7 W) K8 B0 j$ d2 Y1 I        if current = @.Destination -- else return
- q4 j4 z! ^1 s/ v) [        then* i2 I0 V) j& m& e4 [7 @8 G
                @.Destination := void;" ?& [3 J7 _) n+ j2 @
                if @.occupied then4 A4 f7 T3 U$ N: @
                        part := @.cont;
3 l3 k" c) A$ ]                        @.transpOrder := void;
+ G* G9 m$ o$ G1 B0 D- d9 I                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,5 p) W7 m* i' q7 x7 y
                                @,root.eventcontroller.simTime);
  s6 V+ P1 s/ ?5 q. i                        @.HasOrder := false;! e' R+ a- a4 U3 X& Y/ W) V( q
                        @.DrivingHome := true;
$ R% l) R3 U. ~# H- Z- c% }                        rgManager.tryToStartTransOrder;
5 R5 `9 D1 \8 G0 i% }1 {                        if @.Destination = void
2 B. ?) [; Z, ^& O! {                        then -- no transport order for vehicle @
& b  n6 T+ |# `0 X2 c3 z# F                                @.Destination :=+ {" a2 k" [# j5 |! A
                                rgManager.nearestFreeStation(@,track.~);3 P! j4 l4 y9 v( d# @1 G2 _. V* w
                                newDirection(@);   
" o' [; @2 o# H( Q/ M7 b                                if @.Destination /= void then& y8 K. o- L1 c
                                        @.Destination.NumReservation :=
3 X* I( x) B& l' c: p6 p                                        @.Destination.NumReservation + 1;
4 e# ^* e0 h/ D4 |: Y5 r& M' u- L                                end;9 n2 Y( d: y( j8 u$ v/ S
                                @.CurrIcon := "drivingHome";1 }, N& E# o; d$ W5 T) j) B8 t
                                @.DrivingHome := true;
; @- f% T# p7 y& {8 u, k                        end;& `0 n4 E6 q' V6 H, t* ~  z( G4 Q
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
! O4 R5 E+ L8 Z                        part := @.transpOrder;% L' \: ^+ Q2 W4 {4 O
                        part.move(@);-- load part
. j/ ~* P$ x- a5 [# C( {                        @.CurrIcon := "load";
6 ^: A( x! b! e3 K                        GlobalDistObj := part.globDestination;
* ?+ ~/ L% G, [& g$ n% Q                        assignLObj := rgmanager.rgAssignL;7 k) ^- ^; e: }) W* V
                        row := assignLObj.getRowNo(GlobalDistObj);: T% l/ X( H+ u' w/ o3 ?. \
                        if Row = -1 then -- since 70
4 U- \6 l6 U" t" @4 q, r                                if lan=1 then- A" X: j% \1 |) s1 Y  S" o( {
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
0 n$ P$ z: q) [+ X$ D                                                to_str("in der Andockstation: \"",?.~.name,"\""));
4 P6 I! R0 v  g3 d- n                                else
& f/ @; Y" |9 D; ]# K: p( I7 R                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),0 O- D* o& c4 B9 _
                                                to_str("in docking station: \"",?.~.name,"\""));                               
  a+ D; N4 W7 ?- b5 J                                end;9 I! m4 w( [0 S, f4 P
                        else$ y- Y6 D# h' [$ I2 r- R7 a% X6 |
                                @.Destination := assignLObj[1,row];
+ D) d8 y) Z9 X; Y                        end;                       
2 `8 I. V( f' ^5 s                        newDirection(@);* l7 m; s6 {( @. K3 _
                        @.HasOrder := true;
- M- x) F' y) f9 L& G" K6 Z" ^                end;1 l: v  T/ C( S/ O* ]
        end;
4 M" Q  ~9 S3 c3 c, ]& Nend;        -- of the method+ G8 C0 c( [  j+ p  j1 y5 P
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 9 [  |9 Y3 {0 k) g; n& T2 }
, S5 [# K) _/ [( U4 J/ {5 A
这是AGV_putin中arrive的method。( h0 ^3 Y5 E5 A1 M* M

; [4 B! w+ n1 s$ [当到达物料速度越高时,这个报警更多,8 ]( s. B; Y9 K: A# b) i
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
0 C: t6 [* O" v, W  F- ?程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?' r: y1 n1 ^/ L/ _$ D1 M
. D% {6 {, f/ `
另外一个小建议,就是move,所有的move都可以这样5 U: A# {# Q( ?; p( d
if not move() then debug end3 U: K7 u. k) b+ v
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。$ N+ f& o& ^& N9 P8 @) Q# t
plant simulation中的free libraries有AGV模板,
) L. S7 e- q# Z5 b里面也有案例。- [6 U' g6 u* H/ O4 ^& ]
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
/ C% p6 J( s* Q; A1 O8 E% B9 ^
0 H, V; o2 S+ z  s. k( K( J2 X! N我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
+ V2 _! G& p2 q
0 S- V3 l& v: V& Y2 p( _& S那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 $ F5 V% O  p: N% ~, h0 N
这是AGV_putin中arrive的method。
  U9 R, X3 k5 c" h9 h% `- S
* B0 w2 I8 {( S1 X当到达物料速度越高时,这个报警更多,
5 l9 L' a1 V( c+ q# |, b
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-9-4 09:12 , Processed in 0.020854 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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