设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9903|回复: 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' D' `. L5 g# H3 Z; C*/! q2 [- |6 R1 ~
is+ z6 d$ X" h- O& z
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;1 |! |/ J( n: Q2 w6 e
do
; H1 F4 o, m, A2 P1 K        Lan := rootfolder.Internal.Tools.AOLlanguage;
  a- D. M( {8 {3 }, J" e: h        if current = @.Destination -- else return
! c1 Y* U1 H+ |" F$ M- q        then3 L# n4 n* E& W% @- F
                @.Destination := void;- Z$ A2 r! Y2 d( i1 O
                if @.occupied then; t9 F6 v: d6 Q+ x$ @2 a- Q" x
                        part := @.cont;
! Y" W) p8 }' O, y5 z                        @.transpOrder := void;
2 b9 S' z* H8 Q+ T                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
, Z& h9 j9 Z; d4 r  j                                @,root.eventcontroller.simTime);' i8 b* u7 g: J- @" ~: c9 u" A
                        @.HasOrder := false;
6 `+ P! I" u) e8 D$ \  k& F                        @.DrivingHome := true;
- O+ o) J" E3 V' O- B% ]* n                        rgManager.tryToStartTransOrder;8 q3 n" f1 k8 Y9 J: C
                        if @.Destination = void
: f/ D3 p% ^  [                        then -- no transport order for vehicle @
; S: \3 X0 a" ]: c9 ^0 Y9 A! h% h2 P                                @.Destination :=
/ L/ m+ e& G# ~8 x                                rgManager.nearestFreeStation(@,track.~);
! B: }2 L: b2 P/ J/ J                                newDirection(@);   1 ]2 w" x, b5 }
                                if @.Destination /= void then
% W1 A  N3 Z* v) ]* z: x# y" v7 b                                        @.Destination.NumReservation :=4 D' y0 F% T1 c; \. K
                                        @.Destination.NumReservation + 1;- Z3 Z1 v6 o% G4 ^" l4 H
                                end;
0 B0 q1 w5 T+ o- _) a* i0 R                                @.CurrIcon := "drivingHome";
3 E  C* W# V9 G                                @.DrivingHome := true;3 g' i1 b7 p, g' ]/ \6 l+ e
                        end;
5 Q! g' n2 \6 u3 {$ ~/ |0 ]+ f                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
" O; n5 L. |( E& l                        part := @.transpOrder;
. \/ u# p+ L$ C6 A                        part.move(@);-- load part
( D# j. W  l: C9 E& Q3 X                        @.CurrIcon := "load";( i- _* ?  @7 ~; ~
                        GlobalDistObj := part.globDestination;  R) |' p2 L- V  _
                        assignLObj := rgmanager.rgAssignL;7 ]8 K$ ]* ~0 V: e
                        row := assignLObj.getRowNo(GlobalDistObj);& u9 v2 _9 Z) h# \9 n2 s
                        if Row = -1 then -- since 70# i- S9 i4 }) B- V; R9 }
                                if lan=1 then
4 S% o/ M- X$ S. _' I                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),9 R- _% V' l* x; e3 `$ s" f
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
) [  N' @- l5 O% h* D; M- k5 M+ |                                else/ p/ L) }. t2 x" {7 c! c; O( f
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
, h4 f% I2 u  ~6 {+ N$ s                                                to_str("in docking station: \"",?.~.name,"\""));                                  n, n' q- l# r1 E) L# S
                                end;
( y2 n; x& ~$ [; \                        else
; J0 e- F5 V( p# R                                @.Destination := assignLObj[1,row];
) a% g) c1 R  w( C! k                        end;                        . T7 t, G3 x9 x7 r
                        newDirection(@);2 ~' r6 o* C5 x, l
                        @.HasOrder := true;+ m, o* b0 G5 \8 m! w
                end;
: V) ]9 y! w9 S# a, e7 K' C( P        end;
$ z' b, V2 _# dend;        -- of the method4 z: f1 K( S; A% F
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
0 d6 G: V  T. c  w1 A9 ^5 q7 S8 i# B' R) d+ F; ]6 W1 I
这是AGV_putin中arrive的method。+ X6 w, J0 @- l8 r9 V2 \* _
- `" E0 J, K- W# s4 z
当到达物料速度越高时,这个报警更多,
! U. }% z) D: T& C可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。9 t* @! |3 u$ c8 Z. d. d
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
/ b  i8 X6 k5 e
% M$ Q, W/ Z1 [* K: D' `4 O! T另外一个小建议,就是move,所有的move都可以这样
, c( q( k( O0 y! j( k" _' \& F  lif not move() then debug end
5 r& d2 r5 I, M, D+ r+ Z' ^6 W这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
( X8 R" U1 X3 q4 e5 hplant simulation中的free libraries有AGV模板,
. N' f1 n9 M3 g! a" ?3 V' |4 B; f里面也有案例。
  U9 ~! s9 _( C. o& w2 H+ V我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
: F5 M- c$ D+ s5 m- V$ d4 E6 F" `9 U. C
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 ' \( G2 |5 y" ~4 Y/ s9 P7 ^

4 U; d4 U9 O5 @+ C那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
) S) o; o" Z. [0 ]- Z5 R$ O0 r这是AGV_putin中arrive的method。7 v1 V5 e* u7 q0 U

7 a4 r) ]" p5 r当到达物料速度越高时,这个报警更多,
( ~+ }; K) M5 _& m
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-9-1 19:30 , Processed in 0.020554 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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