设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9785|回复: 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'9 _8 A- [4 E1 e* Y; \! d
*/$ ^% F9 p+ z1 J- U' T0 ~6 H
is# t' d' j! Y' Y* w; V
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;# C' s$ b& Z. p9 n- n8 g
do5 F0 N# G1 b7 S* I
        Lan := rootfolder.Internal.Tools.AOLlanguage;
# [( l2 ]% e6 L8 m" r        if current = @.Destination -- else return
0 n9 E0 \! b$ R2 }4 X* Z0 ^+ i        then! z5 _3 C6 H# N0 v+ M: M
                @.Destination := void;. g/ @$ Y# G5 L% A. L8 [$ m
                if @.occupied then
* ]2 T" E) T$ L- X& m                        part := @.cont;
8 v' N' m: R  s" N' D% v                        @.transpOrder := void;
7 l& W3 s3 Y" K5 u                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,* |/ J& A* T7 N' {" l6 X9 T& @
                                @,root.eventcontroller.simTime);
5 A! k0 Z# m" n. I+ g! r7 [                        @.HasOrder := false;
( F, c( v1 w3 h8 |6 \" g, [                        @.DrivingHome := true;
3 x; B. A9 @. s- M( _                        rgManager.tryToStartTransOrder;
" n9 V3 ^# ^' e  d  w) _- |9 s$ a                        if @.Destination = void
$ b& p9 D. {8 ^+ l- D! Q                        then -- no transport order for vehicle @
+ g( F+ f) L+ [3 ]3 y                                @.Destination :=$ C  ~1 u8 o8 M8 q9 S+ k: I8 ?
                                rgManager.nearestFreeStation(@,track.~);
. i3 n8 f7 c5 @  m- c' F4 j                                newDirection(@);   
5 m, t- p' G9 [( ~' S                                if @.Destination /= void then1 J. W6 g( W; ?' q
                                        @.Destination.NumReservation :=5 B" Y5 f" b2 E5 C# I6 Q
                                        @.Destination.NumReservation + 1;
/ V3 v/ Y- V/ l                                end;  y- ]2 |9 n/ F& W9 S' w
                                @.CurrIcon := "drivingHome";
, S( R! m+ m  ^3 ?4 E# B8 d                                @.DrivingHome := true;
! i# L# z/ x) N8 h+ K' ]- H                        end;. O- N3 y1 p5 r3 ]
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
) O) U) _' @% W                        part := @.transpOrder;& c7 ^- |& F5 F6 D
                        part.move(@);-- load part
' e/ Y0 `" t" L: A                        @.CurrIcon := "load";
. g% h, y& \3 X5 c  \- @2 Z- d                        GlobalDistObj := part.globDestination;) m; D$ n, y/ J
                        assignLObj := rgmanager.rgAssignL;( ?# O, ^, c, G+ n  ^
                        row := assignLObj.getRowNo(GlobalDistObj);; ?( a) p+ c: c! ^8 p( \
                        if Row = -1 then -- since 70
3 P  B9 h5 C, V8 n& p0 C                                if lan=1 then
" a! Q+ m0 z6 F) t* u                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),7 }) }  @9 X: ~$ D0 y4 b  U
                                                to_str("in der Andockstation: \"",?.~.name,"\""));$ s/ N, t' `/ {) O6 m
                                else
1 O0 F" ^8 x, b* j$ O                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),' Y7 I0 j# N- n( m3 Y
                                                to_str("in docking station: \"",?.~.name,"\""));                               
- @6 d6 v$ ]8 D" |$ r8 n$ b                                end;0 n) w" {+ Y0 _+ s7 y% j9 ?
                        else
6 `8 N* `6 T5 a3 t                                @.Destination := assignLObj[1,row];
) h1 x) g2 G( ?  ^0 U# N                        end;                        * Q! X3 _9 ~: ?; q
                        newDirection(@);' r! `& }7 U# o+ ~2 ~/ i
                        @.HasOrder := true;) Y- F6 k) P9 T% l, L  T
                end;4 x$ w& R% j& J5 Z* k5 |
        end;) b* G0 I8 l+ o( e( F
end;        -- of the method. w' B5 {* p/ F" p
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 5 \, E0 e( y1 V
2 }; p- `1 @: p. m$ P
这是AGV_putin中arrive的method。
( b- d; b9 }( C7 {+ ]; o* s+ H4 r0 {) p$ n' m) u% {
当到达物料速度越高时,这个报警更多,6 d% q! b( ]0 H, O2 M) ?
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。( `9 E& p! S) Y3 F* |
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
. ^0 D0 V8 h: c; S5 i
- ?: a5 ]* K/ R# o另外一个小建议,就是move,所有的move都可以这样
! V% b( S$ y: s2 ?% Lif not move() then debug end
! W/ C& {+ n9 U5 q这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。9 E8 B) \9 O" X" O& l. N1 {
plant simulation中的free libraries有AGV模板,' p1 w% k9 L+ r$ X0 G6 @9 W5 Q' }
里面也有案例。, g# W& h6 O0 e: g* G
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
2 U& C0 K& ?$ t! Q! t* V' R. P% s, V! R
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 * _: n0 m* D8 m1 X8 I: s
9 I9 C9 A: W% `5 O( W8 X& w+ c2 E
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 + d' E) d, {( ~+ R* |7 b
这是AGV_putin中arrive的method。% k+ G" J: x% P9 N8 D6 y  t0 M

, C; [3 v4 n# Y6 V当到达物料速度越高时,这个报警更多,
2 x' j2 X8 t& X/ l# Y7 C. e& Q
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-24 23:02 , Processed in 0.026599 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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