设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9612|回复: 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'
) E4 e. @" c* G- q*/) w9 p2 S7 f' @( ^4 [5 d
is+ i$ {3 O, V) H& }8 e2 v
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
* |/ p* i- t* R. o+ O" Jdo
; j- A) B- G. ^( y7 e        Lan := rootfolder.Internal.Tools.AOLlanguage;
" v# }# j' m2 V5 Q( V* R/ z        if current = @.Destination -- else return2 |* M% R4 p+ U
        then
; Q, M! z: A9 L% ^' U                @.Destination := void;# F9 ^5 ]7 r: @- E' T) o, H; L
                if @.occupied then
$ u% H# n" W& i% x1 k& w' R                        part := @.cont;
5 V) m. x; A8 I# W5 J" n" e7 e                        @.transpOrder := void;+ f+ B( y* a2 D. B1 ~9 W  x) _
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,9 z2 T6 K$ W: ^% |  n) y% O8 X' C
                                @,root.eventcontroller.simTime);
: a& o. Q# `% ^" X. N, c7 A                        @.HasOrder := false;9 r- {, O: K: u# }
                        @.DrivingHome := true;1 Y1 s, {7 `9 H+ a) J
                        rgManager.tryToStartTransOrder;
* q  U2 `' C7 B1 j1 L                        if @.Destination = void' f1 [! n/ F" W7 i
                        then -- no transport order for vehicle @
/ V0 b! h, ]+ V- n2 q                                @.Destination :=
; t0 H1 N- B) A- \3 u# v                                rgManager.nearestFreeStation(@,track.~);9 T8 [7 N" v1 I3 n
                                newDirection(@);   8 N' D% v4 ?1 z; Q- ?, ^) z
                                if @.Destination /= void then
2 \3 p) P. a) F; \                                        @.Destination.NumReservation :=
6 W8 G* r  r* F, m                                        @.Destination.NumReservation + 1;
2 d: A3 U4 V( V$ M% b7 w                                end;
9 q% g5 o7 m: p* n$ D                                @.CurrIcon := "drivingHome";
) b2 M3 e5 k9 R- D# t* b; c                                @.DrivingHome := true;
4 a9 X1 L* L3 [7 |& Z                        end;
; w4 l) P0 W8 \+ e: J$ x                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
) U  L5 l* v  @  y- y; z$ m" f                        part := @.transpOrder;) {! N6 Y* M/ r2 Q1 |
                        part.move(@);-- load part2 G+ R' x6 _. s) @
                        @.CurrIcon := "load";1 |; A. k% Y% w; y/ h
                        GlobalDistObj := part.globDestination;
* q# y7 w% l5 [# p- A5 D                        assignLObj := rgmanager.rgAssignL;# d- \# r7 O' E0 |3 S
                        row := assignLObj.getRowNo(GlobalDistObj);
0 d  t$ H, F1 n% c9 Z! k                        if Row = -1 then -- since 707 I# v/ B2 I& M7 g+ Y# m: @# ^* m( ]
                                if lan=1 then
' v. m6 M" b: u. z, _. c* A                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
" N) M+ Y1 c) M% q, d# i                                                to_str("in der Andockstation: \"",?.~.name,"\""));
6 p  L/ I4 J+ i7 }7 ~$ k                                else
7 ?( |4 U) h5 i& e                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),7 V' M( f- ~% w5 p1 z
                                                to_str("in docking station: \"",?.~.name,"\""));                                ) ^8 P0 Q: C; w* v
                                end;
/ h8 Z+ C+ J+ S8 B                        else5 ~  k8 `5 |; `8 U" F! n
                                @.Destination := assignLObj[1,row];
' B, }1 \/ r6 O+ d& @                        end;                       
& G: v5 z% b0 o) C+ N                        newDirection(@);
: y6 ~5 N2 e, l% M                        @.HasOrder := true;
  R. M" X, b7 h2 b* d+ O, a  m                end;* A/ i6 ]1 i/ P) @
        end;; Q* @( Q& }1 z: }( H& w- G
end;        -- of the method, v8 x8 i8 J2 Q0 @! x) k7 q
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 8 ^' h3 d* Y6 b1 ]6 J2 Y2 B
+ `# j! M2 F6 s9 l, a/ `" N: J, F1 o
这是AGV_putin中arrive的method。2 N. g8 `7 t' n2 M4 N* B) R

6 ~( }6 Z2 ~" m# I3 v: K当到达物料速度越高时,这个报警更多,) F, S, q0 P8 U8 W
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。9 Z3 \1 p2 v. J+ [- K7 l( k2 h3 p
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?# F* g3 e' f4 d* _/ }. h

0 ?' o3 h% C: h5 [) h7 l另外一个小建议,就是move,所有的move都可以这样
( k# P  m$ C6 Z  A0 C& b- Qif not move() then debug end" |2 S5 u: P( j% E5 a
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
: W4 B1 d# e$ G9 J% j* xplant simulation中的free libraries有AGV模板,1 }. ]( a3 g) F4 {2 P7 R5 u
里面也有案例。
' h, F! D! m% y& M; f! @1 h我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
1 A6 N3 |/ k& A3 z4 m
/ U5 y* T: [+ @1 T6 w/ r我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 % k$ ]' G9 K/ ~) Z4 k% e
: A! w+ K3 N2 r  o0 I* U
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
5 A+ k' j, q  U9 k这是AGV_putin中arrive的method。# L8 Z' Z6 Y0 W4 {7 ~0 {

% a& V. o! Z3 O( ^当到达物料速度越高时,这个报警更多,

4 v) N- T% d% s另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-11 14:52 , Processed in 0.019640 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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