设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9331|回复: 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'6 ~9 n: J: a- P$ h7 [" e: h' D
*/
4 i; u& M, @  J. B! ~, Gis5 C4 i  c7 I4 k
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;- W* t: ^0 x. L" n/ |$ {$ w( @1 S
do
3 q: X8 m$ t- z1 q3 |" F* Q4 _        Lan := rootfolder.Internal.Tools.AOLlanguage;
" y3 x3 K% `* o8 V  }. p        if current = @.Destination -- else return3 T/ G$ \  q7 A( q- R
        then
: Q7 Q- ]& E, i: a: B5 Z6 b: C                @.Destination := void;
: d/ K/ t% ~0 q                if @.occupied then
- G& N1 x, d" @6 u3 R4 Z$ N0 e                        part := @.cont;8 u: O; e) K) N8 F7 k  w
                        @.transpOrder := void;
5 j3 ?, i+ F. a+ ^, D- k                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,- g. h7 {- A9 L9 [2 a
                                @,root.eventcontroller.simTime);
5 _& x( g  D$ p; k3 m' u* j                        @.HasOrder := false;
+ g  O7 Q2 ~9 D$ r                        @.DrivingHome := true;1 n' C) @7 D( L. @  }3 f- R; P4 {
                        rgManager.tryToStartTransOrder;
6 H2 _' C5 w8 C  P3 h                        if @.Destination = void! ~+ z# n4 b8 `- |. P$ B
                        then -- no transport order for vehicle @2 r+ t+ q6 x* H; T) @
                                @.Destination :=% R- R9 _! X* C( k1 }% Q* \2 P
                                rgManager.nearestFreeStation(@,track.~);3 u- y) ~4 A3 c$ y
                                newDirection(@);   
, u/ V0 w+ u5 ~% p7 q! u                                if @.Destination /= void then8 F: n! [; R- d! B
                                        @.Destination.NumReservation :=% H/ h5 C# }2 x% g  x
                                        @.Destination.NumReservation + 1;
: C3 M3 l6 W2 Z& ?" i) j6 j                                end;
! y# M: Q7 s3 u1 u* y$ M1 o                                @.CurrIcon := "drivingHome";( R9 T* g# w+ [1 Z3 k$ I
                                @.DrivingHome := true;
) |. y4 r8 B1 |4 H8 s. j+ I9 m                        end;
3 p& @# S+ h" {7 ^. N. f* Y$ \                else -- the vehicle @ is empty, both vehicle and part are in the same dock station6 I/ j# U" R4 ?/ h* B- c5 P
                        part := @.transpOrder;# }1 y* {& e# W1 p3 N' f
                        part.move(@);-- load part
: P/ W& i7 J8 M( ?                        @.CurrIcon := "load";
9 Y/ P5 [* J3 g" m. M                        GlobalDistObj := part.globDestination;. J: ~) I* @; K6 Q; \
                        assignLObj := rgmanager.rgAssignL;
) c/ L! z7 T  i) r% a5 \                        row := assignLObj.getRowNo(GlobalDistObj);* ]: J+ D* P9 m% t8 d  P& F
                        if Row = -1 then -- since 702 w( g, q7 ]7 b+ x6 Z& Q
                                if lan=1 then4 N$ q+ g3 I- u" U# E' A
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
' w# R: g8 E2 T% P                                                to_str("in der Andockstation: \"",?.~.name,"\""));/ n& B5 D: s6 R5 d6 _. @
                                else
5 o+ L9 u7 `7 x                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
4 n. p5 _) P# w+ R& Z                                                to_str("in docking station: \"",?.~.name,"\""));                                5 l! V5 P( C/ h! X) x
                                end;5 C7 k% w) q+ C8 b3 A
                        else
$ B; E; X' x0 J+ A" K                                @.Destination := assignLObj[1,row];
# f7 Q  i# S& x" n                        end;                        7 D  _, `7 N; _# d. ?
                        newDirection(@);" `  ^% ]' Q0 T9 z5 F$ x: c
                        @.HasOrder := true;
: L: l/ s# S9 W% {% M2 p; w7 Q1 R                end;! g1 Y' I+ V$ o, u3 w
        end;
* j, y8 W- K( k9 \! D' ^end;        -- of the method
7 M6 O( d$ Z, D& _
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
( D* e! i$ k2 z5 ~/ H2 `, t- \3 ^. P( T( a2 k
这是AGV_putin中arrive的method。
$ p4 k6 `9 p& [0 G
$ M  F: n7 G: K当到达物料速度越高时,这个报警更多,
5 t+ l. I* @+ A: p) P; Y0 n0 X* }可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。9 G, G6 v6 Y7 Y8 _- o
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
: a5 S9 Z) p; C; c
8 J( Z4 t9 ~3 \" ]% R* j另外一个小建议,就是move,所有的move都可以这样+ o  k% p/ C8 n5 n! u
if not move() then debug end
- n  Y5 d, Q4 n. o这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
3 e( L& a+ s: K1 K( k/ h4 tplant simulation中的free libraries有AGV模板,
- |1 S7 n7 y  S$ |2 w( P里面也有案例。/ E0 }7 V2 l  ~' {2 z4 j
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
' m( e0 [$ T9 w! j7 c' }
2 q- |0 r: a* z0 }/ w' k3 `  O我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
: [! [) R& J4 F4 I" }5 S% q
2 x! y2 J; N  A  J9 j那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
" ~: f4 A1 b+ O" u2 k* Q+ {1 @这是AGV_putin中arrive的method。
$ s7 C5 p. p/ u; ^  N
5 M+ n4 W) B' k& d6 r5 u当到达物料速度越高时,这个报警更多,
8 ~# M  s9 ?7 `* C% w
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-7-25 22:16 , Processed in 0.018721 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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