设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9078|回复: 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 ^: ^- \+ E3 N0 f, d1 d4 Q, j$ `
*/
0 K/ h/ J4 J  f; Dis2 K) e+ h1 |) D
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;. x: ?, b; `7 F! h
do& ~# P3 ]) J# h- f5 |% D2 [5 V$ ?
        Lan := rootfolder.Internal.Tools.AOLlanguage;, E0 U6 R2 W, O2 L
        if current = @.Destination -- else return$ ~9 M( m, V, R) m5 s8 Q
        then9 e5 l  k$ ]. A! {: E' C
                @.Destination := void;6 E# @, Q1 h! r- A) n2 o
                if @.occupied then
7 b4 h' `6 u9 \$ o                        part := @.cont;& S9 m1 w( V" i# ~
                        @.transpOrder := void;- ^5 N8 w3 \8 J. l( g5 R2 l
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
7 O! Y0 }3 J8 B3 W' Z: D$ s4 X' d                                @,root.eventcontroller.simTime);- Y. b$ d5 m2 I9 ]3 L2 O2 \
                        @.HasOrder := false;
5 I3 U* J) u/ |1 c! l; W                        @.DrivingHome := true;" I6 w6 _. n( E' d4 @
                        rgManager.tryToStartTransOrder;0 x  L$ H/ N; P0 o
                        if @.Destination = void
: l5 \6 B. e( u7 o) u                        then -- no transport order for vehicle @
# p0 K% f' D7 ?1 V* b/ j, T/ e" `                                @.Destination :=
2 p* G  F: B) Q                                rgManager.nearestFreeStation(@,track.~);( [! s; Y3 j! f: U7 g
                                newDirection(@);   ( V. }  E+ T2 P
                                if @.Destination /= void then
' ?" d0 W7 S) r% j8 q2 {2 m  ?5 R                                        @.Destination.NumReservation :=( }1 v8 ]- e$ M
                                        @.Destination.NumReservation + 1;
  ]# T  y. L7 E& z                                end;/ c. d* f% z- B* S- i. x
                                @.CurrIcon := "drivingHome";- i& N. _( b( a
                                @.DrivingHome := true;
: k! P9 E& s% M( c                        end;
$ s# A2 Y0 t' j2 F' T+ G  R* v                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
+ |" A$ _, U/ L, u8 C2 Y: \                        part := @.transpOrder;5 ?, C  F2 p( t
                        part.move(@);-- load part( z# F5 u# B( b: }7 t5 ?# }
                        @.CurrIcon := "load";+ o0 }& |4 p7 B6 e- C- x
                        GlobalDistObj := part.globDestination;
' n5 z1 o" ]6 P- ]* @% j                        assignLObj := rgmanager.rgAssignL;
/ h! }# E" v. t                        row := assignLObj.getRowNo(GlobalDistObj);7 R. C- Z. u- k0 ~5 |" g4 n: N
                        if Row = -1 then -- since 709 N5 e5 E9 j% F
                                if lan=1 then
6 `7 F5 {0 u  d  Z3 m9 {/ t, [- k                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
, u$ H, m& Z5 H$ z% l8 v8 G6 m+ S2 q                                                to_str("in der Andockstation: \"",?.~.name,"\""));
# A8 B. J& g: s0 w9 U                                else
' P1 x* b6 Q1 p5 ~: |                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),0 r* w2 k6 M0 ~9 n2 [. d
                                                to_str("in docking station: \"",?.~.name,"\""));                                , w5 u, V$ ~0 t  }7 D6 ~0 @5 t5 X
                                end;
: D+ B6 |+ j0 [4 u                        else
2 }+ u; B: H  W; X                                @.Destination := assignLObj[1,row];
3 Z: \( ]7 n% I/ @5 m8 G                        end;                        + ~( C' n  ?* @) U
                        newDirection(@);2 L+ y; Z( ^" P. l$ C5 Z
                        @.HasOrder := true;
4 q  U1 d/ A! A$ i- p9 F! a                end;0 y- w* K; ~3 M/ e) ?' }
        end;" n+ w, {$ Z$ F1 B  r2 }# c. ?& ~: t
end;        -- of the method3 C/ t/ k" J! p6 U1 O4 {4 O$ m' B
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
! L# x2 b. M) }4 P! ~
# j# n& K- s+ L9 A$ n这是AGV_putin中arrive的method。
" `' H, W& s$ u9 y2 ^1 ^
- Z8 W( ?+ Z- u" A4 m当到达物料速度越高时,这个报警更多,2 ~! d. P' [4 Q5 `2 j- e
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。% y8 t" P6 q( i) e: V1 W
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
5 V1 w9 k+ R3 _: b' v9 H; F7 N/ i" c5 {
另外一个小建议,就是move,所有的move都可以这样
: E1 k( R# s7 ?if not move() then debug end$ ^1 _- i" P' d3 J3 S! j
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
. w* `; K+ k; e6 e; gplant simulation中的free libraries有AGV模板,$ e2 M" n$ {7 h/ i9 B( H$ @9 x
里面也有案例。2 ]3 o: X+ A( J
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
3 v3 s% ^+ _6 ^
) ]- V8 Y; ?3 m3 B3 f4 T8 t我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
2 Q& L7 n6 B+ w- J0 v8 x. f. _4 s9 v8 j# O" {2 D
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
# ~5 K$ g4 o+ d6 Y这是AGV_putin中arrive的method。
; O0 e" T$ _# s2 O; Z/ @- m2 o( q( A% E0 A
当到达物料速度越高时,这个报警更多,
9 u& \: s3 v& E" ]2 b3 v
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-7-12 03:53 , Processed in 0.015230 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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