设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10111|回复: 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'
- r9 g5 R- Q$ n. h*/
, ]% k$ r! K" g( j) Q+ sis
: ?5 U6 `1 F7 p$ j8 C0 j        part, GlobalDistObj, assignLObj:object;row,Lan:integer;+ s; |* Y; y9 k! F/ W
do% R+ g$ S% ?3 v* T1 y
        Lan := rootfolder.Internal.Tools.AOLlanguage;
; C. H: K  m+ d% E+ T0 |        if current = @.Destination -- else return: `, ~% B. m% F$ F/ ^: r
        then7 r2 Y3 c; l' H4 z
                @.Destination := void;& V- r5 X2 {8 d7 I8 V$ E/ j% z
                if @.occupied then
: X) d/ |, h  U: d                        part := @.cont;, G! w, T  ^/ W& _$ N8 T
                        @.transpOrder := void;5 u5 Y, P5 \, O  X4 q4 R
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,6 h. @3 `9 x5 @
                                @,root.eventcontroller.simTime);4 L; I$ Y8 H& V7 i4 X) b3 `  B
                        @.HasOrder := false;6 S8 t: ?7 g% |4 {- _+ N) m2 y  _
                        @.DrivingHome := true;
) N+ V/ f/ U! E: Q# Z* v                        rgManager.tryToStartTransOrder;+ v. O) s# S* V2 w1 [# h: n
                        if @.Destination = void
9 \/ e/ ~* x( \" X) j  {. k                        then -- no transport order for vehicle @; W4 ~$ A0 S# @- h" W3 w2 x8 s
                                @.Destination :=$ Z4 D) y( V5 B( Z5 H  s$ v
                                rgManager.nearestFreeStation(@,track.~);
' u$ f$ _9 m& \0 I. G8 W                                newDirection(@);   
  Y! z; k% R! K. {& u- F1 b                                if @.Destination /= void then
4 Y2 f* E9 p& Z9 \! C: I+ U                                        @.Destination.NumReservation :=
* L6 K0 d* H9 {                                        @.Destination.NumReservation + 1;
9 M* L! |$ `0 Q, @0 U                                end;; a7 }! `+ U$ V" w2 g, D5 d6 A
                                @.CurrIcon := "drivingHome";
, A) \0 T+ y+ J# e% ~* x                                @.DrivingHome := true;
! k% A1 t6 w5 Y, v                        end;
# H, \1 J6 k$ g: w. u8 k+ K                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
; P3 C" S# F+ F3 R& `" j! D: d9 e                        part := @.transpOrder;
9 \3 o/ b5 x# S/ h                        part.move(@);-- load part
) O2 [0 c$ F% u" X# }                        @.CurrIcon := "load";5 F. E7 z! N( B9 _/ }7 t3 F
                        GlobalDistObj := part.globDestination;
; e7 S! q) Y9 ]) ]; e! n                        assignLObj := rgmanager.rgAssignL;
6 y/ p  Y: r  n* j  u8 |2 h* t                        row := assignLObj.getRowNo(GlobalDistObj);
' r6 \4 U# d: Z) o3 H6 k                        if Row = -1 then -- since 70. q- _3 E7 B# y$ Q$ V$ a0 F4 c
                                if lan=1 then
+ o& a3 O- M, \) X                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
+ j" E5 X& P; v                                                to_str("in der Andockstation: \"",?.~.name,"\""));
( r# s# }1 J% c' ]- S. S                                else
1 r- K/ ]& e* K- p9 ]                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
0 o' q9 N7 a/ x0 f: X7 ^- r# ]                                                to_str("in docking station: \"",?.~.name,"\""));                                . ]9 l4 F, V5 h1 ]8 i
                                end;+ D) r# S9 N7 `
                        else* s8 Z5 M, f' d6 J; Q
                                @.Destination := assignLObj[1,row];
: z1 N# J$ W% I! T$ m- L/ K; [  x' K9 U                        end;                       
% }6 p* M+ X, X$ |5 K                        newDirection(@);
6 H9 c' q+ p  J" ^4 o' C  ^- N                        @.HasOrder := true;9 c! H. @5 b0 z& t5 n  K
                end;
3 R' s5 t/ ]1 A6 u! c        end;! O3 x7 M5 z* t
end;        -- of the method7 v6 f+ S3 ^- ^% I
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
3 a4 g- a+ h0 Y$ ~- r' V# Y
+ m+ ?9 y2 i7 a. V这是AGV_putin中arrive的method。' W3 p, P# Q. b; l% B

( n) N; [) h& q8 p* o2 o4 ]当到达物料速度越高时,这个报警更多,
) \" W  H+ R7 b# y% n可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。' [- U1 |9 q  g6 C% J% O
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?; f  I9 A# r2 a5 k. p7 [
* B2 q5 R0 z% v% ], i
另外一个小建议,就是move,所有的move都可以这样, r. {1 s  r6 L8 n# v
if not move() then debug end+ p7 ^% w, n. L3 S& W2 a
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
3 R8 E9 |9 _- K! p. z2 M# yplant simulation中的free libraries有AGV模板,' a7 G/ Z- d. _9 h* ~" B
里面也有案例。. M7 J! {. I, i; J- I! W
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。7 O9 T4 N2 O( T! r) V* g+ x( v7 y
/ u# x; l$ D7 D. K9 B* m
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 . g; a# }* B/ f5 J- a' Z

; r% x- v" ~# r+ d( Q那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 " Q: ]% m$ T; d$ B
这是AGV_putin中arrive的method。) g5 R; G# C' K$ Y% W6 V
6 z4 S$ b" p  `* N; n" O
当到达物料速度越高时,这个报警更多,

* u* m$ l% Q% y& y0 o  B另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-9-14 00:48 , Processed in 0.024276 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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