设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8123|回复: 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'
; y1 T/ Z1 E( }/ h; W6 G$ s% q*/
3 p& F2 c; [3 a% K( E8 [2 tis2 a: C* T3 A) {, V
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
; T* L5 f# S" V" q; S" l1 l/ Xdo- u3 n  j1 u! \$ y) \
        Lan := rootfolder.Internal.Tools.AOLlanguage;% q* W' @; ~) W* m% O: `
        if current = @.Destination -- else return$ H+ O: C! E: o
        then
( A/ `: h2 i% ?. h# b* P                @.Destination := void;
! S$ z2 N: X, e  _- _5 T9 T                if @.occupied then' Q: e2 r7 t) c3 \/ L2 E
                        part := @.cont;
$ \: t- `3 Q9 U' N% V                        @.transpOrder := void;
% T1 r* x% ^! i                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
3 i, q" ?0 J; T# }                                @,root.eventcontroller.simTime);
8 E' X! ?) s2 }) b/ o) s! D" e2 [                        @.HasOrder := false;
8 a$ q  U$ b4 z+ y                        @.DrivingHome := true;
# R8 w5 E+ ?* S8 g; i) W( B                        rgManager.tryToStartTransOrder;
& \) Y$ t' X2 n4 @2 l; i                        if @.Destination = void
2 z% T6 Z! p1 b0 M1 j                        then -- no transport order for vehicle @$ r. z: V- ~& X3 A: n
                                @.Destination :=
/ K* ?1 U! }* N! g1 P                                rgManager.nearestFreeStation(@,track.~);4 j2 h; K  }7 a" R% a* d
                                newDirection(@);   3 e$ ]& V# P- I7 T  T. y0 @$ e. R
                                if @.Destination /= void then
9 L' g1 I" {) V- m. U4 {                                        @.Destination.NumReservation :=
! l* p0 w* }+ D2 j                                        @.Destination.NumReservation + 1;# G# ^* R; V  }, _
                                end;1 N, N& i3 u# F
                                @.CurrIcon := "drivingHome";7 ]% J) s, i8 R7 m. }3 _
                                @.DrivingHome := true;
9 f( S% ]7 Z* A* `' [: q                        end;9 O8 {# d6 v+ w3 P# C9 f# U' w
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
% `" b" z9 q+ @                        part := @.transpOrder;$ t& r! H; \$ f/ ~5 H
                        part.move(@);-- load part
3 t3 Z. |# L! J* S+ g6 u& e7 M                        @.CurrIcon := "load";4 E. T( p+ V1 @* L  Z
                        GlobalDistObj := part.globDestination;
4 B' e: X, ^' X                        assignLObj := rgmanager.rgAssignL;  c# ?' a9 r( D
                        row := assignLObj.getRowNo(GlobalDistObj);. w$ x, d/ e( l8 s
                        if Row = -1 then -- since 70
9 ]# j: T! l# E! p5 m                                if lan=1 then) r+ ?9 j% P1 Y/ s* Y+ @
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
: V) q+ D: V* @                                                to_str("in der Andockstation: \"",?.~.name,"\""));
: g$ D! l: G6 ]9 @  m. A                                else- l6 n# T  V% M$ a
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),! k8 }1 P) Y! E8 @/ I  w/ |
                                                to_str("in docking station: \"",?.~.name,"\""));                               
$ Y$ U5 v3 A! {                                end;3 Z& o6 [3 J; U  _2 L" n
                        else
, W1 F% M8 R3 t2 g" \                                @.Destination := assignLObj[1,row];* z  d; F( z* q+ @7 T- [
                        end;                       
) a! v7 Z: O4 J2 r, ?; O; l                        newDirection(@);
0 V$ s, B* \+ q8 q5 ^& K  t                        @.HasOrder := true;4 t  Y( V6 d- H5 j7 |
                end;
# B8 R$ F2 v, s/ }3 C, P2 t        end;. x8 N0 k0 O- u8 o# m5 t8 Q+ j
end;        -- of the method
) x" T# H8 Z( d. j" h$ |' j" @
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
0 t! ?5 F3 o3 N, L! p/ a$ j
4 c! |9 @6 f# f7 l这是AGV_putin中arrive的method。
* v: j# o) \& v' r0 d
# h$ G. p2 Z5 C, ?9 E( \' ]当到达物料速度越高时,这个报警更多,+ [( T6 |5 }  s4 q4 d9 {. R, L; r- V
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
" P) Q" Y, J  }4 v2 [程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
) G1 v  f& \: u4 ?1 [6 u: n2 E: w# T) C  Z; k# m$ i. R
另外一个小建议,就是move,所有的move都可以这样
5 [% j; j4 D+ o5 uif not move() then debug end
! _/ j- `6 l  X3 `$ a% i& m这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
) \5 z/ p' a% S4 x9 }. \plant simulation中的free libraries有AGV模板,
3 T* L0 T' a3 d里面也有案例。5 m* I/ r; }% J
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
4 P4 u8 l$ |; A6 [0 m
6 v1 x2 I% P# M' S) W我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 ' o9 G+ o* ~2 i9 V

2 B+ q. q/ K  J% Q: a那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 + I" J4 o; N6 z
这是AGV_putin中arrive的method。
3 u( F2 c0 M9 |. Y! h, @8 E( k6 ~/ ~% @$ C  n8 L8 T$ P2 u# W0 P
当到达物料速度越高时,这个报警更多,

7 v# t" Z( V! z; O* ]2 {另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-16 01:07 , Processed in 0.016475 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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