设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6661|回复: 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% A! @) l6 a+ T6 g. G*/
; }% X. ?; f1 ~  |is
& K. A- `$ X( j8 ^4 G! |- i        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
7 D! m( W$ J" ~7 Q! C* odo
9 g' H) Z" S8 K  k7 I! r6 Z        Lan := rootfolder.Internal.Tools.AOLlanguage;! d; R) d/ R( C/ F3 Q
        if current = @.Destination -- else return
/ H9 p" m, W7 Y# y; m        then
* N2 g2 I) c  U) P0 J) T7 ]                @.Destination := void;
% V; K! V/ i+ A8 q, w7 ~                if @.occupied then* f) [' f' i! Q8 J  Y& [
                        part := @.cont;
1 `" a3 r* h. r" ~: I                        @.transpOrder := void;: s4 o$ }+ _6 c
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,0 L: a1 T$ Y0 _$ U5 L9 a* I
                                @,root.eventcontroller.simTime);
& w; s& A% d! v% E. ^' q. m                        @.HasOrder := false;2 P5 J+ A* e7 \( D4 t1 Q
                        @.DrivingHome := true;1 O! Y- R, ^. `0 X# }# f! x
                        rgManager.tryToStartTransOrder;
& _" Y) e/ V% g# y' M( t* X                        if @.Destination = void9 y$ y4 T/ ?5 c& u8 r
                        then -- no transport order for vehicle @
% l# Y( S. }. E- e                                @.Destination :=* Z3 a. ^& s* b4 d' j
                                rgManager.nearestFreeStation(@,track.~);
2 t1 E/ W' z+ g& @) w3 j$ ]% P8 ^                                newDirection(@);   
1 @+ M2 l2 |, u1 T( |; v" |/ y                                if @.Destination /= void then
$ ^( l5 K; ?" d, j# _8 K                                        @.Destination.NumReservation :=/ G  @5 r, y) s
                                        @.Destination.NumReservation + 1;! M* U5 Q; y1 p! u3 W
                                end;' N; D) g0 G! ^* ?# k/ W* Q
                                @.CurrIcon := "drivingHome";9 R; q  f5 o  {2 y. d
                                @.DrivingHome := true;1 m! \( x, \- ^  `& L6 D
                        end;: R9 m, r2 F5 c+ T3 z6 G
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station) G8 c* |' {4 ?* W5 [1 d8 }
                        part := @.transpOrder;9 m+ f/ c7 B- l/ _4 e) x4 ~
                        part.move(@);-- load part9 ]% c: |9 j' M3 q
                        @.CurrIcon := "load";* |; x5 Z' S$ [4 Q
                        GlobalDistObj := part.globDestination;
/ ?% X6 s( E% t3 i4 j: R# ^7 N                        assignLObj := rgmanager.rgAssignL;0 v) B5 G9 o5 t+ ?& k
                        row := assignLObj.getRowNo(GlobalDistObj);
; Q( v( t* Q, a$ Y" `$ s1 L                        if Row = -1 then -- since 70
% v5 ~8 A( e% k5 Q! ?# ?                                if lan=1 then
+ J) b+ z" u; }" a" r, |                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
4 f2 m& f4 _2 g- m  ^                                                to_str("in der Andockstation: \"",?.~.name,"\""));
$ V4 V* q& R1 y$ F                                else
: W: d, E, {- d& ?% [6 _                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),* `& n7 q6 x* Q! h
                                                to_str("in docking station: \"",?.~.name,"\""));                               
8 T- K  `' J- X9 X/ H                                end;, G5 Y. q8 F9 \/ }' f7 F
                        else
, O3 y) n/ O: o0 k3 M/ u8 P7 |                                @.Destination := assignLObj[1,row];
" j9 Q6 `9 H3 F& [7 }. y                        end;                       
1 N2 M) c2 |  \+ m8 o, R                        newDirection(@);
2 x4 U6 w# v8 B, G& G" ?7 S                        @.HasOrder := true;
  f$ ]& I' C5 S4 {                end;
9 }/ I8 ?& t+ @        end;
8 q  ~: S- G0 L( m( }$ u0 E4 w  `end;        -- of the method1 S$ h6 \; a. H0 J
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
" ~3 m5 }6 u/ P- J# d. s' D( m8 U
这是AGV_putin中arrive的method。
  O( q6 d+ Q/ i2 U. ?2 V' N$ C. T, u% b# Y; {% c# C: `+ R9 E
当到达物料速度越高时,这个报警更多,! G3 m1 K8 \) y+ N# x: q; f
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。9 I- `0 g; G& Z2 u
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?8 A) g$ J) T$ U) v& P1 ~& W9 r
& h6 O3 V9 r* _* z' v
另外一个小建议,就是move,所有的move都可以这样# _  A- d* ^- D3 r5 v
if not move() then debug end
' j; O: w( {( c& ^* |5 M; G这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
# s8 B' j1 D9 z- Q& q6 z" qplant simulation中的free libraries有AGV模板,
* a7 g" c2 p$ [( e- k# c里面也有案例。) Q/ g6 j8 ^! [" Q7 i
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。" W; G9 _6 Q  T5 Y1 _$ W5 c
5 J5 w0 C+ A3 @! P# G
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
) U8 H" G% ^2 r6 ~2 p) ]/ L2 b' v
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 & O0 D' K* \9 E( F7 e3 J
这是AGV_putin中arrive的method。. ]/ L) O/ i3 Q& k- z( L& T

) a2 y" t$ n$ P' g当到达物料速度越高时,这个报警更多,
' `. \$ i+ P# W1 e  y
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-19 17:14 , Processed in 0.016040 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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