设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8984|回复: 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'$ P- U0 u) D1 f) t( r* `  @: E' [3 h
*/
5 a0 P2 F  q* Z7 v& Eis1 s- D. [& ?2 G4 [. e: f% G
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;1 Z; O; A9 r8 S6 ^* i. \
do9 j- e  V/ b5 B; v! c6 p* V
        Lan := rootfolder.Internal.Tools.AOLlanguage;( f4 _9 g$ }, ]! A& c* T/ z
        if current = @.Destination -- else return
6 M- L% n! O+ ]' ^, r4 x+ g9 A5 l        then( _9 C: A3 ]! S2 A3 H- U
                @.Destination := void;4 c7 [+ I8 Y) l- ]! O( ?6 |0 q5 k) R: V
                if @.occupied then& x; b- K  u2 G
                        part := @.cont;3 w2 }# K2 g, J4 v" S$ V
                        @.transpOrder := void;: l. S  \8 L% v8 I7 N  D2 a
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
* v. `! J/ f5 h                                @,root.eventcontroller.simTime);
$ R- O5 S# g# s# Q                        @.HasOrder := false;
- V1 f- z* M3 I3 |                        @.DrivingHome := true;" A, c* w7 |: o/ t1 Y2 C6 {8 D  y
                        rgManager.tryToStartTransOrder;0 ~2 C2 a1 K1 s1 \
                        if @.Destination = void
. A% q1 l$ e$ L) C$ H                        then -- no transport order for vehicle @
( t  E; y% S4 m  g                                @.Destination :=% _% F2 Y, L/ A2 b+ Y) }) N
                                rgManager.nearestFreeStation(@,track.~);
+ c( W8 B8 h8 V                                newDirection(@);   - @" A* ?# [& B8 l
                                if @.Destination /= void then/ `* c- T) E) j8 @) V- ]
                                        @.Destination.NumReservation :=
$ p  b8 V$ l* k" o1 t  d                                        @.Destination.NumReservation + 1;
( o3 I  Y; w! `+ d                                end;
4 P  p1 j1 C, Q7 ]. e6 I. v* x                                @.CurrIcon := "drivingHome";
% R$ B) V  a2 X! r& E4 [                                @.DrivingHome := true;
7 G3 I7 F' q/ L                        end;
! Z8 ?9 \1 W" p/ ~                else -- the vehicle @ is empty, both vehicle and part are in the same dock station% I; A4 @$ ^" }# `
                        part := @.transpOrder;% J7 c0 B2 ~) o& i' Q
                        part.move(@);-- load part6 S$ O! h  w9 l9 f6 @3 J+ c
                        @.CurrIcon := "load";5 {5 ]; y) P# K
                        GlobalDistObj := part.globDestination;
; D! T0 m4 _1 N; B; U                        assignLObj := rgmanager.rgAssignL;2 I3 e' a7 D% h, A' B: p+ e
                        row := assignLObj.getRowNo(GlobalDistObj);
3 \( ~3 [" [+ P5 _$ J' _7 t                        if Row = -1 then -- since 70
2 j, t9 c. I: F; j% K0 {                                if lan=1 then
$ k2 e* F; Z7 s" }3 _. U                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
; y" `, L; J7 b+ H" C6 x                                                to_str("in der Andockstation: \"",?.~.name,"\""));# Q% g7 E! h4 u) P
                                else
4 B4 y* u' r  Q  L                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
2 E2 S/ t" Y3 e* b$ o' W1 o4 ]                                                to_str("in docking station: \"",?.~.name,"\""));                               
9 O$ X% J# B' z1 F' O* D5 V                                end;0 n8 f- N7 r) }: C9 a" f
                        else
# b' v5 I# x9 h/ I' y                                @.Destination := assignLObj[1,row];
$ ]/ l, m, d4 |! B0 X, z                        end;                       
; M( z' K, I5 y4 o; r% w0 N$ ?6 I, k& G                        newDirection(@);# g6 r+ o4 r+ I" v
                        @.HasOrder := true;( ^' \8 z) p% M5 V( C* N1 n4 F6 |* B
                end;
6 H0 z8 F9 K3 A        end;
/ ]7 r/ Y3 I* C& ~" F# v" B! Yend;        -- of the method
: x9 |+ e5 m6 g! p* t, X" ]# W9 @
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 : k. F5 V3 V7 L& O) Q6 h; h
! o( X. ?& N5 k) ?- [$ y! }% z
这是AGV_putin中arrive的method。
8 a% }- U  r; J$ a3 a8 c- {4 j$ {- h8 Z6 N" M% k' M6 B
当到达物料速度越高时,这个报警更多,
" r* n2 r, _2 F4 m5 B3 N可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
+ V, e% h. j. ^# n3 n- H: _  S程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
  g5 A' |9 h! h" U
- U, ^5 l& n! T6 d) J' c另外一个小建议,就是move,所有的move都可以这样
6 B2 t( n3 H' P" ], E- O' gif not move() then debug end
# q* W7 ]; g5 T8 [这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
3 M- A% z! E& K3 ?/ gplant simulation中的free libraries有AGV模板,
9 A. |' A& \# R% v+ L里面也有案例。
" u8 X0 k- I2 \! g我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。1 _  w3 D$ T3 H, C9 o8 P: L
0 J+ M( O  o/ }/ ~* Z, S# F
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
' U7 ?& Z0 ~+ `6 W1 R7 x
! |% {* D/ ?9 g& k那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 / T- I- i- {5 |3 _# `4 |
这是AGV_putin中arrive的method。
& o6 h+ U) m: x3 w7 B3 A
; {# B1 t$ y6 y+ I当到达物料速度越高时,这个报警更多,

' m+ a7 |  b; E) M& r3 E4 q1 b/ o& y另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-7-7 13:46 , Processed in 0.016454 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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