设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5439|回复: 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'& T4 H& t4 {0 V, L; E
*/( ?- B) G% ?, ?: O) `& S: P1 u
is
: }: l4 J- ], r& V3 b. [& e, ~. I        part, GlobalDistObj, assignLObj:object;row,Lan:integer;  H1 a" G/ }, x) u7 ?. M
do' g% s. Q; R3 g: e& A6 ~
        Lan := rootfolder.Internal.Tools.AOLlanguage;
3 _. ~( l6 n9 I7 d        if current = @.Destination -- else return
0 \( [/ L$ e* Y9 R9 m7 B" ^6 }- p0 ?        then
0 R2 L3 a; b1 ~  h% b0 h" _                @.Destination := void;" z+ j1 ~0 Z7 g6 q
                if @.occupied then" d4 F5 x8 c3 O, y* R+ Q
                        part := @.cont;
+ G8 U+ N) Z. _7 o* h                        @.transpOrder := void;5 d" S7 g9 C7 @
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,' t  W, r4 V) H3 n& O7 |
                                @,root.eventcontroller.simTime);, |. |6 `$ e3 Q4 B6 P4 x1 B
                        @.HasOrder := false;, t+ B/ @$ i2 T3 g8 k: p
                        @.DrivingHome := true;
% e; |, ]4 ~$ z; N                        rgManager.tryToStartTransOrder;  q& r% V. ?  {2 T1 \' J
                        if @.Destination = void8 h2 K, l: G) s' {% [
                        then -- no transport order for vehicle @$ V% d0 p+ i1 }
                                @.Destination :=
0 d& B0 ^; ^6 u4 J  ^$ S                                rgManager.nearestFreeStation(@,track.~);. E' E9 j( i% B
                                newDirection(@);   4 i; T4 F7 k( d: R* L0 J& x3 i) G
                                if @.Destination /= void then% P" W$ j$ d( F9 M  B& u2 M1 w
                                        @.Destination.NumReservation :=5 ?; b3 V4 n! g# @) z
                                        @.Destination.NumReservation + 1;) e' S9 C5 d6 v/ O  E
                                end;" m; t0 l1 v+ @1 A$ m3 [
                                @.CurrIcon := "drivingHome";9 v8 h" S8 u+ u, ~* h4 {
                                @.DrivingHome := true;
( ~7 d, z7 ]% T* J                        end;* e; o4 u3 Y% c- q
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station5 E- t. B4 |" W, H0 X
                        part := @.transpOrder;
) ]+ B' e7 N7 h6 ~, Y3 L$ e                        part.move(@);-- load part
. E% H) U6 O* ^  B! s                        @.CurrIcon := "load";
" V" N# |: K, I3 @7 }                        GlobalDistObj := part.globDestination;3 Y4 R& d7 R6 Y0 Y, ~1 J; D
                        assignLObj := rgmanager.rgAssignL;
" Z, Q0 |8 U) _. ^9 F5 H                        row := assignLObj.getRowNo(GlobalDistObj);
( ?# c! b0 U% _  E/ ~8 T                        if Row = -1 then -- since 70
; A2 P% }; a* `! X" G# |9 D                                if lan=1 then) O0 n. H% S7 }
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
: A+ C% h  o8 a, U) L0 r                                                to_str("in der Andockstation: \"",?.~.name,"\""));1 H: `' B5 I) D6 L. L' K$ p& Y
                                else+ C$ x4 n$ S- J7 F
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),; C! T1 o2 G% C5 U
                                                to_str("in docking station: \"",?.~.name,"\""));                               
0 T$ l/ G* B0 A) r: y  T                                end;
3 `( _* p5 S! Y                        else& c- w3 o4 E, x$ b  d% x, l
                                @.Destination := assignLObj[1,row];6 O1 `+ `+ B: y0 T
                        end;                       
; H* {& Z  r& y1 c* w3 p                        newDirection(@);' D5 r  A7 Z( q) h# @2 \! U
                        @.HasOrder := true;
8 B' {" a0 S1 X; g  [                end;$ K/ f) h% q7 M
        end;
/ ~  N) |3 w2 [4 S* E9 ?9 R" P. xend;        -- of the method
+ U- \. A0 Z( B' E6 e. D* R% x
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
# I; T9 I" A: }- p- T" y- d. ^; f% y1 ]) k
这是AGV_putin中arrive的method。
/ g8 H6 Q) V5 O
6 u3 N: B$ Y8 w, U当到达物料速度越高时,这个报警更多,9 u' k" z( d! j) m4 i$ [3 }
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
2 x' d! z+ N' Q6 V: G6 p" s3 ^' Y, J程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
9 \/ X; W: u! X3 \# o( g# V' p7 \5 ]; t& T8 v
另外一个小建议,就是move,所有的move都可以这样
7 Y0 S! v' H- y/ e7 ?0 i1 y1 r1 @5 Y. Xif not move() then debug end  o' N0 S) R# ^) N# m  u
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
9 x$ \% T' v3 F1 C; M! Qplant simulation中的free libraries有AGV模板,
0 Z, l6 r$ e; e( U+ r3 p1 g$ [里面也有案例。
' M* o: I' v2 ^9 V- S! T: U我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
$ X0 s- }& l1 i( Q% L
: M# I) c' [+ \4 J/ L+ m5 B我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
# J2 K1 j& e. ]( b# C, e9 ?/ _" E
- w. y' u, A5 l1 `) O, h那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 6 r- b0 H) ^1 t! l. Q
这是AGV_putin中arrive的method。9 Q. o. w; h2 T; u1 x4 ?( l
% B! {' F' q' A/ g
当到达物料速度越高时,这个报警更多,

4 u' j/ O: |8 s) s* u9 p另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-11-24 03:54 , Processed in 0.028353 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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