设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8492|回复: 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'
  q' ?0 p8 o+ n% J9 q4 L  m2 @2 `) \*/
2 k7 R4 U) ?: k2 @0 p* z1 qis
3 C9 z; {. ]( G* ~        part, GlobalDistObj, assignLObj:object;row,Lan:integer;; z2 O$ S, W; r' B0 o; }
do2 L8 T+ {% ?* L
        Lan := rootfolder.Internal.Tools.AOLlanguage;
4 H8 T& S" F; H: t1 E3 O& s4 `        if current = @.Destination -- else return  m2 Q- z% k: u- S# d% \0 n
        then6 c7 C* E0 a3 E3 ?6 B9 g
                @.Destination := void;
( C0 t4 B& j6 K: j/ M- z- n                if @.occupied then
- P; Y+ e* `7 h5 _5 E8 a2 H                        part := @.cont;6 y3 R0 m3 [( {$ o/ `1 u/ @" L" _8 W
                        @.transpOrder := void;9 v4 S6 T5 ^7 n/ c: K: b: v
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,7 {6 E9 U. c2 i0 f
                                @,root.eventcontroller.simTime);. ]7 N% b6 x0 n6 C* P& b8 j
                        @.HasOrder := false;
; U/ u8 U. h* ]% z/ z5 X+ @& S                        @.DrivingHome := true;
+ D. A$ S" |. Y+ l6 ]- m5 z                        rgManager.tryToStartTransOrder;
1 J$ M, i# [# {2 g1 U7 ]                        if @.Destination = void
2 a2 Z$ Z  i3 [- j8 a                        then -- no transport order for vehicle @4 i5 ]! ~( k, Y1 d, u) S
                                @.Destination :=
$ i# z- t- @# }6 N3 x6 t                                rgManager.nearestFreeStation(@,track.~);  k5 |: |  o% P9 j9 o8 k% F
                                newDirection(@);   
2 j+ M' M# ?) u2 p7 b& {" s/ W                                if @.Destination /= void then
6 f* o/ y" I! m' m6 u% K$ u  ^                                        @.Destination.NumReservation :=
% c1 R, ?; B& O9 K* ^# k, d                                        @.Destination.NumReservation + 1;. t5 y& F9 \' N- E+ B0 u- V
                                end;
, T; }0 ?* h, e8 g3 }, a7 x+ _" k                                @.CurrIcon := "drivingHome";
. z4 l# q$ I5 C4 f* z$ W- D                                @.DrivingHome := true;' I8 w5 c; y' `% ?% X
                        end;
4 M( h( h$ p/ a( R9 L3 Y                else -- the vehicle @ is empty, both vehicle and part are in the same dock station: x+ h  z/ ?1 m/ D* [
                        part := @.transpOrder;- q* q! V) n* T( N8 ~
                        part.move(@);-- load part
) ?; W- y' D' w9 b4 M0 x                        @.CurrIcon := "load";
$ u3 t) _- K& ]7 G' r* Y# ~                        GlobalDistObj := part.globDestination;
+ E' A7 g' X- ~( j- k                        assignLObj := rgmanager.rgAssignL;( J# g$ i# n! V4 w) l0 ?
                        row := assignLObj.getRowNo(GlobalDistObj);. F3 |$ n, D* A8 M* Y8 @
                        if Row = -1 then -- since 70; n1 X+ s( s; q1 i/ B( T4 r
                                if lan=1 then
/ l7 n8 Z9 a: R9 b* n7 l( D4 b                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),8 M7 ~- t! }! c
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
* l' D% O+ l* ^* ]8 L                                else* ]; \' T, {' A) q. `4 N5 k
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
, @4 Y+ S( W6 c) ?" s0 s9 J6 k. c7 e                                                to_str("in docking station: \"",?.~.name,"\""));                               
2 v1 x0 }3 }  [, m5 I                                end;2 D. v/ r: S* x4 i  X4 W+ `
                        else
; S' ~8 d& q% P$ R                                @.Destination := assignLObj[1,row];0 ]% y: g/ ~2 R+ v5 \
                        end;                       
/ O% B- `1 |7 G" k$ j/ E                        newDirection(@);
! B7 j! `$ Z3 }+ a7 l                        @.HasOrder := true;
0 @2 y: _  t1 d                end;- r' r5 C" T- W( s8 B7 _9 z- T
        end;# L: d9 Z: G* Q; g+ l0 `3 W9 E9 e- E& _
end;        -- of the method, N; L3 _0 ]- ^/ u
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
" P) L2 Z3 d2 h+ B
" e2 T4 d# Q( H- ^( F3 }- x# M这是AGV_putin中arrive的method。
0 H6 ]1 @- T* W5 o$ Q, Q4 v3 R$ `( t7 L
当到达物料速度越高时,这个报警更多,- j8 F" v& \' y6 c( m
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。' o0 d- y7 e% I" P
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?2 [) ]% |2 w: y

( {# i$ `7 d, B另外一个小建议,就是move,所有的move都可以这样" ?/ l. @) l1 U# p! p
if not move() then debug end5 S  j4 y" M9 h  W
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。( x# S$ `' D# A' ?) R# h* d
plant simulation中的free libraries有AGV模板,5 Z% {1 x* e" R, ^* ~: B
里面也有案例。
0 P0 U7 k) A4 Y/ B4 s我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。: O6 f/ y2 p4 p: p! V

6 K7 U8 C7 C' Q* f1 l8 t我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 $ o/ q) q/ I6 u2 r; U

: p, }. a5 E# x5 l! f3 H那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 2 M) q3 N* M9 H0 u
这是AGV_putin中arrive的method。
: F. h* g7 l/ s! C5 n$ a0 l
$ y- x2 t" o5 k8 _2 Z$ @当到达物料速度越高时,这个报警更多,
; o( [* b, a7 X5 ]  g* z2 n
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-7 09:40 , Processed in 0.018885 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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