设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6475|回复: 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'+ l7 X" t+ j0 i, h# J- g9 T
*/
4 x3 ~+ D$ ^! v' X1 N/ zis' |( @# V3 O1 ?* w  o4 }
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;. r$ n4 E% \) N' \2 t
do) x6 G# N* {( o$ A& g3 C
        Lan := rootfolder.Internal.Tools.AOLlanguage;
  [; P$ ^- {4 j% f( ]        if current = @.Destination -- else return
- |% G/ j; S5 I6 r. T        then
1 _, @( \" M/ S* H$ B. Q                @.Destination := void;+ m, U8 g9 M) T8 ~. g$ M% A3 N
                if @.occupied then, N, x3 K+ ~/ q$ C7 }2 K4 j
                        part := @.cont;( A! @; n7 K+ u/ m0 s, A
                        @.transpOrder := void;1 w5 Z* z- |# x
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,, G  U% a* ?! d: q9 @+ @7 E
                                @,root.eventcontroller.simTime);1 H, k1 k1 V$ C8 V  S! ], |
                        @.HasOrder := false;
) Y0 e% V' q/ T, ^* H. }$ x                        @.DrivingHome := true;& Y- `2 u7 m5 H& }% h7 W
                        rgManager.tryToStartTransOrder;: U3 q: c: L2 h1 U: {2 }) q6 E
                        if @.Destination = void" r4 b; S9 m0 q, W- i3 q- Q+ K7 F
                        then -- no transport order for vehicle @$ Y( v/ n6 g3 p- s
                                @.Destination :=
  J3 S% ]; ]$ ^) h9 l                                rgManager.nearestFreeStation(@,track.~);
" k# ]( Z+ q/ I: L                                newDirection(@);   
6 S- s* O/ p7 ~                                if @.Destination /= void then
6 w$ P. M9 s8 m, y                                        @.Destination.NumReservation :=1 C' ~, k4 b3 |0 i1 ~# T  R
                                        @.Destination.NumReservation + 1;7 r8 _( T- M3 R0 b# t; |4 W. q
                                end;# Y5 |) J. S, b9 a0 w
                                @.CurrIcon := "drivingHome";
- N6 E  ?4 G8 a                                @.DrivingHome := true;
2 _( u) |" B& C: J                        end;
. |, e  ]+ ^" Q& d+ d% J: U/ s                else -- the vehicle @ is empty, both vehicle and part are in the same dock station1 G3 }4 r* T0 a9 k
                        part := @.transpOrder;) C$ e3 F: I! E2 m( m
                        part.move(@);-- load part
5 q: @" }4 ]& ?  X( Y* o                        @.CurrIcon := "load";# \4 \+ f% H+ X+ j8 ~
                        GlobalDistObj := part.globDestination;' l9 t. N) `8 `0 r: j
                        assignLObj := rgmanager.rgAssignL;
8 [7 u! T8 z* @# j5 V' U2 j                        row := assignLObj.getRowNo(GlobalDistObj);
/ b4 q* e. a* V0 m# j                        if Row = -1 then -- since 70
3 N0 Y9 k! Z# u% J% {7 |* Q% e4 r                                if lan=1 then
9 S5 e2 @9 @  o; X" r7 |                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
- n0 T# [1 n% q0 E6 A6 E1 E' w                                                to_str("in der Andockstation: \"",?.~.name,"\""));
3 J7 _: ], ^1 _! [1 m: W) S                                else) t; {& ^# n# s; |+ z: w! o
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),, ?" g, S2 P7 a7 ~$ l
                                                to_str("in docking station: \"",?.~.name,"\""));                               
: K( _+ O/ Y9 d3 e  }3 e                                end;
- ^4 V+ F+ c" E2 i                        else
& K# F/ Q1 W5 V; U1 N% s2 L                                @.Destination := assignLObj[1,row];+ U  @5 P5 Z8 n6 t- p  F! O2 c0 H3 r
                        end;                       
" l' J# \: Z0 j- e                        newDirection(@);
2 X7 A0 b; J; M: g! Y: |                        @.HasOrder := true;7 g! u' E' L8 ?( J/ @8 x/ i
                end;. k, ^( h2 W, J* X7 x, G
        end;7 v6 m5 X- s; m+ A$ E
end;        -- of the method0 s, u# [: O" ]7 v! t' [
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
/ M3 B. ?2 P; u/ x5 d
% H" _- Q* ?+ e+ q- C2 t这是AGV_putin中arrive的method。
7 e" M" i3 Q" L+ ^1 v* {' j% l& t' g6 M/ [  a
当到达物料速度越高时,这个报警更多,
# \% i1 ?" t) H1 P) I+ }可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
7 H7 ]. g: N* {  S: G- v程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
5 `' y+ M/ P9 K: j; f
. r4 v# y9 m/ ]* D- Q, ?' _另外一个小建议,就是move,所有的move都可以这样
$ ]0 f, E+ u7 t/ B. cif not move() then debug end
0 C8 W, D9 Z* w8 S这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
9 m! B6 u  z4 L3 F6 W6 Fplant simulation中的free libraries有AGV模板,5 Q' N7 ?) U" [* |7 l7 y& y
里面也有案例。, h4 h! A5 ?1 g+ w  \
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
- w6 v; I6 ~) [6 z/ ?( H9 p3 D. `# O: ~% N, v* v4 b" l' E
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
  h( d5 E9 m  }% _6 u( _
9 l6 H: n% C3 s- r( h1 R那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
: c& I! j, j! c; @5 S这是AGV_putin中arrive的method。- R' B0 q0 O: ^6 ?5 u# T

. [4 |3 J7 x. F& y0 d当到达物料速度越高时,这个报警更多,

3 @5 l/ l. b0 u& R另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-8 23:07 , Processed in 0.017814 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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