设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7303|回复: 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'
+ Y8 f9 N2 P1 U9 B! s1 }/ j; P2 M*/2 }, F& q9 Y% p+ Y/ e
is
9 v2 e+ ?) a8 ]0 \        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
+ I1 B: D! w) l$ B0 D9 gdo
& ?" J3 z$ |4 E  D4 H        Lan := rootfolder.Internal.Tools.AOLlanguage;
1 N" s  z) J% y/ L! {2 a7 z& n        if current = @.Destination -- else return: x8 k0 W1 E/ \& G
        then
' d! f. `4 |. V$ P6 Q                @.Destination := void;
$ R4 w* j- w4 S: w                if @.occupied then
: g& x) C# C+ i( O2 O0 `# i                        part := @.cont;
7 n" j' C' l9 c                        @.transpOrder := void;
6 ^5 v2 D- s! p7 C4 Z# W                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
( f' F+ X7 V% E3 g                                @,root.eventcontroller.simTime);1 m* L) G4 n9 n
                        @.HasOrder := false;
/ Y$ j7 h/ ~0 W. U/ q6 E" i                        @.DrivingHome := true;
- S. B( _4 `  B* ?: P, e9 _                        rgManager.tryToStartTransOrder;
( R- u+ U5 ?: V7 ~% B; X2 G                        if @.Destination = void* f: Y* ]7 p5 p' k! K
                        then -- no transport order for vehicle @% g( t8 g# U- |. F2 G( c9 s
                                @.Destination :=1 q4 S$ O! J) ~* c3 o% }# O
                                rgManager.nearestFreeStation(@,track.~);$ g/ `% }, q. J0 n+ I/ h. L- u
                                newDirection(@);   8 {* ?8 d4 ^' U: v
                                if @.Destination /= void then0 J% a6 h/ T- m, g8 i- }2 a
                                        @.Destination.NumReservation :=
$ F7 g! f  q3 h8 W; A4 n2 h                                        @.Destination.NumReservation + 1;
* `- t" b' c6 Z+ s4 a) A                                end;2 i+ d& ]3 a: P2 \
                                @.CurrIcon := "drivingHome";$ f5 M- n# q! l$ E" l& x$ c3 U
                                @.DrivingHome := true;
: o+ e) e. x* h, k                        end;
, Q. `# E9 f' s: R+ {# u8 i                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
/ h) W7 p$ \8 z2 O! v                        part := @.transpOrder;
  ^4 B( g: Z3 y* N! M                        part.move(@);-- load part2 O, v" K3 I$ B, \
                        @.CurrIcon := "load";. l7 C( F+ W5 s2 N
                        GlobalDistObj := part.globDestination;1 q! [' {' q: C3 P( r
                        assignLObj := rgmanager.rgAssignL;
2 Q0 v1 G+ e! Y                        row := assignLObj.getRowNo(GlobalDistObj);
* j* W5 _' f5 x2 B$ N  Q- c                        if Row = -1 then -- since 70" }# R2 p6 N: L# l: F4 X
                                if lan=1 then6 F) ~: T# l' L/ e5 C+ n
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),- x: [  P/ t% k* M
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
7 O+ D7 e" x% t' e. y1 I" o                                else3 G7 N8 x/ e0 n" }
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
0 Q$ K8 A. B; Z5 D- v( P7 h                                                to_str("in docking station: \"",?.~.name,"\""));                                $ K' d5 U- Y5 \
                                end;
+ W2 [! z$ I  ?; ]                        else
3 k" E0 o1 \! H8 u                                @.Destination := assignLObj[1,row];9 _  E( R' ]! I  l2 U7 O
                        end;                       
- E9 F" G2 w3 c. [/ p: J                        newDirection(@);' c) J& i5 z/ ?1 o
                        @.HasOrder := true;4 T4 v$ ~1 R1 U0 S. f
                end;
) w9 n3 I3 C# b        end;
0 a. d. O1 J* ]& k. K; [end;        -- of the method7 R, _) i! \% O! }- Z' T9 O" X0 o
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 , i% g* y, [& d/ G5 e. M8 h' D6 F( \) A
- X3 n8 p( L; I. ^1 l9 Y9 }9 Z
这是AGV_putin中arrive的method。4 @2 K, d2 h+ t" `/ Z8 \
8 c' _0 p$ D8 R2 t5 }
当到达物料速度越高时,这个报警更多,
6 D' l. }, p: a6 u5 _可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
3 U4 C3 g# i+ j& D3 {4 M程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?$ z* S  O6 G  p. T% e

3 y5 l* Y. l% M5 r另外一个小建议,就是move,所有的move都可以这样
  L5 k. L; J6 x& N7 Qif not move() then debug end
" r8 z8 N2 i* z5 ]' {% y这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。1 i7 f. d! H1 F+ @/ G+ m
plant simulation中的free libraries有AGV模板,
6 I; e: j% i' D( o- n& a$ N7 u5 p里面也有案例。
' I% W* v6 ?5 y) \# F& z我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。2 _6 k/ g! g3 {5 {$ T
' ^  x! r+ Q* s5 P) Q- o5 `7 T
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 ! S+ i) W. _+ Z7 ~0 A+ x

" `+ l! K, y5 }0 y' f+ Q- i' v. w" k那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 . h7 G7 k+ h( @# {
这是AGV_putin中arrive的method。
  n4 W) ?2 o7 b0 x- _$ d2 T* L- |$ p8 C: g  v& a
当到达物料速度越高时,这个报警更多,

/ x3 |( N# y) Z6 u) v" B另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-3 02:22 , Processed in 0.020470 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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