设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8471|回复: 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'
8 Z+ g8 ?% e" l; b7 E*/
5 ?/ b) _/ J4 Jis. w9 A6 G. d+ y# W, k1 v: o+ K# {
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;3 W! K9 u* p0 F/ W
do& I! k0 c) y- B& {- W" W# d
        Lan := rootfolder.Internal.Tools.AOLlanguage;9 p, D$ N) D& b* P
        if current = @.Destination -- else return
1 N, Y$ }* L' w- [+ J( k        then
/ F/ b* x2 A: C/ l6 j                @.Destination := void;
  J7 _, y/ g/ p                if @.occupied then/ v+ V2 f" r8 f& e$ d0 S0 y# E2 x
                        part := @.cont;: S- d! t# [9 T9 h
                        @.transpOrder := void;; N0 |; t1 N! {! k5 A% J
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,' ~2 t4 ]6 J: Q' C! v( _
                                @,root.eventcontroller.simTime);
& h5 D3 Z5 k/ L' K' b                        @.HasOrder := false;& r0 |) F5 h$ V( b& p8 O8 A
                        @.DrivingHome := true;
8 Y1 \" k2 U( j) D5 M, }8 V! _) y                        rgManager.tryToStartTransOrder;, {1 Q5 k/ Q7 L
                        if @.Destination = void
  T, c9 P( r  v+ _! e                        then -- no transport order for vehicle @0 W7 K1 w; R6 t
                                @.Destination :=
% Y6 n; x( k/ k6 Q                                rgManager.nearestFreeStation(@,track.~);) b0 ^% x! ]+ w/ F9 @$ G
                                newDirection(@);   
% |" T# _, [* T4 P" O& d/ u                                if @.Destination /= void then1 r& p$ x. r' ]3 [( E
                                        @.Destination.NumReservation :=2 i. o4 M8 t- O4 K% S# {. g" w
                                        @.Destination.NumReservation + 1;  B% Z% K: r) t! M# i& M
                                end;! r8 P6 d! u+ R1 m5 H
                                @.CurrIcon := "drivingHome";  d  }/ Y5 I% s  `- W4 V- s5 C6 b
                                @.DrivingHome := true;7 I3 P/ W' R7 W+ ~5 c' |1 g, T
                        end;
! B* F, x  z0 X7 r/ h7 y* s* }                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
9 s2 T. ^7 V* J8 ^4 w# x                        part := @.transpOrder;
, z: u8 G+ }) L: \                        part.move(@);-- load part1 Y" {9 ^* z/ c! y% t9 _
                        @.CurrIcon := "load";: p1 G. y' E1 d! Y  ]
                        GlobalDistObj := part.globDestination;1 w# Q* ?# `- T3 Z
                        assignLObj := rgmanager.rgAssignL;
% ^. p5 {+ r. u- n; d( ~- D0 Z- A                        row := assignLObj.getRowNo(GlobalDistObj);
* }3 d6 l. W  a                        if Row = -1 then -- since 701 K' g: b' d+ {( |, T: c9 z3 y" v
                                if lan=1 then
% r8 f6 I0 M( u/ o& c" B6 Z' J                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
6 a/ ?) B7 t2 G  n/ t                                                to_str("in der Andockstation: \"",?.~.name,"\""));
& H% c% z% L$ C, N1 y0 [                                else
" N% p- w% y# \  |, E; j4 K  D) z7 G                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),# e% B% D" a8 q$ W/ h9 r/ J
                                                to_str("in docking station: \"",?.~.name,"\""));                                - _* c% `5 t1 t" i
                                end;& `  H8 K. R1 a7 h" B! T0 l9 f
                        else
# |* C3 w2 M2 |7 ~                                @.Destination := assignLObj[1,row];$ M7 }# ?: {3 K5 [- W, {# e
                        end;                        2 I: a& R4 r0 b/ Z
                        newDirection(@);+ L; i' t9 P3 L6 }3 L3 z# ~1 _
                        @.HasOrder := true;- v0 ?0 C( {/ f  I0 L. w
                end;
* }3 j# Z0 b% y/ ]' a        end;
2 {8 u$ E) g" Zend;        -- of the method8 ~7 N' r& ]: a% Y
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
& i3 N( |, M' `  e) i" i/ ^) J7 q8 F" V
这是AGV_putin中arrive的method。
$ J" ~2 s; O- ]. |+ b5 k  b. K3 [( r7 t. T, X' G0 e) ~( C
当到达物料速度越高时,这个报警更多,
3 n" p* F0 ]) q1 @, @1 ^可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。% w; X3 y% w) B% G/ n$ Z# L7 C
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
) i* j& z6 v  f" c6 I0 A6 o8 R0 `
另外一个小建议,就是move,所有的move都可以这样
0 P2 G3 S4 v) R/ c$ J8 v- {2 g+ hif not move() then debug end5 w( Q- B4 R& e& k* t- Z. N
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
7 c' ?% ~. i. C4 q. T5 ~plant simulation中的free libraries有AGV模板,2 {( `# H% n" p
里面也有案例。2 E4 }. u* l6 y/ D
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。4 y" E. Y4 E# g
" h' @5 L' R# [7 O
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
0 t% D/ C2 R* T0 {# r$ j( o, W+ B+ q4 t/ z$ @! Z$ t, D
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
9 P% c+ C* I& N& b# g+ D, O这是AGV_putin中arrive的method。9 Y% B9 ?9 B+ n% C& _

8 e2 ]' D$ K: ~9 l$ H当到达物料速度越高时,这个报警更多,

1 g3 F! E+ v9 T1 ^另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-6 01:33 , Processed in 0.017621 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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