设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9719|回复: 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'
1 {6 R, P- P# x, M. d  L' c4 G% ?*/6 p9 `" L3 e8 S/ e! b
is
2 l5 X$ w5 |2 w- S        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
! j( U- z' V7 N# a0 p' Sdo9 _8 i% s4 z0 k& s  C4 ~
        Lan := rootfolder.Internal.Tools.AOLlanguage;
( s. e0 X) b& [2 u$ x  l6 L* }        if current = @.Destination -- else return  p& A1 E5 W+ R! D# E. o
        then
' r) R. |% B% O3 J! j& X                @.Destination := void;6 J! q6 t: H. F; C; M
                if @.occupied then9 r8 O$ g3 A8 a7 S5 d' N( B* F
                        part := @.cont;9 `$ k* u' l# u) j# f! e. A2 _1 b& S) w% p
                        @.transpOrder := void;  k: P& @1 }% ?  }' U
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,+ u8 q+ b) g& U2 o
                                @,root.eventcontroller.simTime);/ N) `* }! V+ v! d5 C. [& F( S
                        @.HasOrder := false;
2 L" \. k+ [- ?1 e; _                        @.DrivingHome := true;
8 h) A* v  _* g6 G) q. B4 N                        rgManager.tryToStartTransOrder;# v# [1 b) s- U4 z( m
                        if @.Destination = void
+ ~1 P) B$ h4 f% X                        then -- no transport order for vehicle @' m9 B% w9 F" f2 ?( r2 t
                                @.Destination :=
' A! P  }# l, F' ^% z                                rgManager.nearestFreeStation(@,track.~);+ T- D: D& d0 a' _4 G. C5 v3 m* X
                                newDirection(@);   7 i9 E/ C( o: ]
                                if @.Destination /= void then) C2 d4 f2 q  N) M" `+ L. y
                                        @.Destination.NumReservation :=
2 w$ P) w* e- ~9 I2 L' g                                        @.Destination.NumReservation + 1;
2 r5 ?' ^8 X. ]( Z1 A$ [                                end;
1 @5 Z3 s. o) `' X5 e                                @.CurrIcon := "drivingHome";) x7 U% E6 I! ]: B
                                @.DrivingHome := true;( o  ]; f$ N" a* J5 T& P3 z
                        end;
7 r* k2 A0 q& ]) p                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
0 Q* T( D' Q4 x                        part := @.transpOrder;
: t4 ~& r, o& E$ ~                        part.move(@);-- load part
4 R1 ^% U1 q6 s" R# x4 g5 I                        @.CurrIcon := "load";, ~6 @5 Z4 m( U% b. r
                        GlobalDistObj := part.globDestination;+ o% T2 p. z4 [7 [$ k" N0 s  [  M
                        assignLObj := rgmanager.rgAssignL;
$ s  i2 p9 u  |  _+ D" ~8 f                        row := assignLObj.getRowNo(GlobalDistObj);
% n4 z& K* D. M1 n( a                        if Row = -1 then -- since 70
" K  Y' \* M7 @$ _  G% l; \) }                                if lan=1 then- I* ]( J$ R' b+ [
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),1 d; v) m% I8 B9 n: H& N! y
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
4 B8 L# o  U2 ]8 m, y                                else# K& S2 S% a$ {" D, _
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),; ^; O5 S+ S% p0 q' X
                                                to_str("in docking station: \"",?.~.name,"\""));                                5 m# U5 N) S7 n
                                end;
% O/ `8 K4 P3 j                        else% R9 M; }$ S. y  T
                                @.Destination := assignLObj[1,row];
/ X, }( f  z# i: J                        end;                        6 C7 E3 T2 R% o, ^# [! i8 M! u
                        newDirection(@);
( }7 Y' j) S$ }                        @.HasOrder := true;: \6 p' ^% `2 t2 g* ?/ E
                end;) R$ Q. Y4 N8 S( z6 n0 q0 y: S
        end;
  e' y/ Z! ]* q2 C7 Mend;        -- of the method- {: T1 j, ^7 L5 q7 o+ d
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 - u. B% q0 h& ^

5 F% L) I0 F9 g; I% J/ T这是AGV_putin中arrive的method。5 L% a5 O# Z* d$ |
% ?* b! [8 v! ?2 `0 J
当到达物料速度越高时,这个报警更多,# U* A+ l7 L: S6 [" M# r  K
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。. D8 V4 O: \' h, @
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?; n0 }0 G9 Z& k$ L2 G
1 `% T4 P) I; _
另外一个小建议,就是move,所有的move都可以这样0 Q4 G$ S. J8 c+ d' ?* f0 h
if not move() then debug end/ X& Y; o) \( k9 t
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。9 _  {8 W7 p7 X* o. s7 B
plant simulation中的free libraries有AGV模板,& O5 i& ~' \: k; D
里面也有案例。
) `2 p1 T- D3 ^' P/ \7 M) Z  _: u我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
( u# s4 A# q: c3 P5 z% J4 C+ w5 E' g6 b5 p
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
0 P6 E) |' H4 Q! B0 k
+ {) t" z; [3 H3 d* B! w那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
+ p9 c9 [& w2 |& {9 C( V这是AGV_putin中arrive的method。3 X- k2 O+ l: f
7 J/ f8 Z# m7 D. O* t9 t& Y
当到达物料速度越高时,这个报警更多,
( w" [; }( v9 d7 a" Y
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-20 05:23 , Processed in 0.020757 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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