设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5825|回复: 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'& L7 \3 Z% W8 y
*/
9 v2 D0 Y7 D* V( J6 Jis7 X- l: A9 \, Z6 K2 F: O
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;5 A1 Z3 [$ v* c' ^, ~
do
1 M3 l- I" a; c  k4 M        Lan := rootfolder.Internal.Tools.AOLlanguage;9 ?- H4 t% g) g, A; R  a
        if current = @.Destination -- else return
" s) B& p2 e7 b  _        then# S0 W: h$ C! e1 j
                @.Destination := void;
3 R, k) Z) E  s                if @.occupied then0 K1 |  k6 b: e% @% W3 @
                        part := @.cont;" `  v! A) y  i2 z1 L
                        @.transpOrder := void;
" `: F( A1 g0 T" n' _9 J                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
+ A4 ~' H, ]- b7 x' B, o9 _                                @,root.eventcontroller.simTime);& m5 ]" \/ K7 U. O1 V. @; ~
                        @.HasOrder := false;& K" o8 R6 m$ p! f# b+ b& E- ]
                        @.DrivingHome := true;# G3 J3 _0 G! |3 `
                        rgManager.tryToStartTransOrder;( a9 ~7 J$ O- f! W8 C0 ^2 n
                        if @.Destination = void
) T8 f) p$ q9 {* O  }' W                        then -- no transport order for vehicle @
' G" ~" G5 F" s$ K# C& E                                @.Destination :=
: \3 O1 h' N( `6 g7 r                                rgManager.nearestFreeStation(@,track.~);
/ g5 S& Z# Z8 B' w* Q                                newDirection(@);   
0 K. y8 f& ~  K9 C, B                                if @.Destination /= void then
, M. {' N7 y# X/ q, `                                        @.Destination.NumReservation :=
* X# Z9 C/ Y6 k3 t- w# E                                        @.Destination.NumReservation + 1;2 S1 f0 X/ w* L5 u7 {* O
                                end;
5 [* {8 O7 X" \% T8 J- l8 ~                                @.CurrIcon := "drivingHome";+ M7 x! L5 U& z$ u3 s) i
                                @.DrivingHome := true;
/ _3 \. p" A- n2 j( O. M1 p4 w  F                        end;
/ d! x  j' S7 x# K6 ^0 b                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
" `7 L, [/ w; q: |9 w" [# S. x                        part := @.transpOrder;
$ l: Z; k2 Y$ P  N- b/ U                        part.move(@);-- load part
( e9 [# H6 Y% S% F7 J                        @.CurrIcon := "load";6 n( g$ c$ q) \9 Z+ o
                        GlobalDistObj := part.globDestination;, K! j, H9 g: `0 u2 h( U
                        assignLObj := rgmanager.rgAssignL;
8 A- P% V6 f1 ?# T# h) Z                        row := assignLObj.getRowNo(GlobalDistObj);6 P7 M" _0 Q: l. c4 j9 ?
                        if Row = -1 then -- since 70
' b; D; z9 ~) w' S! u. q" w: v( d                                if lan=1 then
: v* N. U/ P& n3 ~( m/ Z                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
; F7 h/ H. v0 x9 ^1 h! G. V                                                to_str("in der Andockstation: \"",?.~.name,"\""));
! G& d6 I9 L1 ?                                else& x1 U$ u' h- O" B5 y# p6 T' U
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),8 f" N+ o4 J+ p/ y- d; X
                                                to_str("in docking station: \"",?.~.name,"\""));                                $ h7 v9 B' S: T) `* @) v
                                end;9 s/ L; f- D9 a/ t
                        else$ _2 D' y& ~; V. A6 @+ s% Z5 `" d
                                @.Destination := assignLObj[1,row];+ K1 V; A9 i! u' S! ]( w
                        end;                       
: B0 {2 `; G& D: \; @( Q                        newDirection(@);# A/ z( |6 L* \9 X0 r* Z6 ^; c# ~% P
                        @.HasOrder := true;
0 m- N. j* L7 _! b0 d                end;
( R% A% ]" ~' _" @' n# r        end;
1 q( k7 b) I) send;        -- of the method
7 Q* S- P- l/ V. W7 ]# t5 |8 }
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 8 `9 w) K. T2 h7 l3 b
) D4 s) n* X  L! E8 J6 y
这是AGV_putin中arrive的method。+ v( A! w# |6 [( n
& ~1 h& S" d( _; r( |9 Z+ P
当到达物料速度越高时,这个报警更多,
; W! F& [2 }6 {! t可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。% d( V* c, j. I! I
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
7 F3 l0 L2 m( w% w- J" c( r
) l! T# I$ n$ F另外一个小建议,就是move,所有的move都可以这样
' S' j. P6 `9 y8 ?$ ]if not move() then debug end7 B8 m) X7 Q3 L% O' ?# u  u2 e
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
- m" |6 [" Z1 E& i8 iplant simulation中的free libraries有AGV模板,
8 e4 r: e4 d: g里面也有案例。9 `6 s* `0 Y5 B* D
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。  S: f+ U9 g6 F3 ]3 [1 F2 v6 K

, f% a( |2 J2 X- k! D我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 % |: {* Y$ F; H8 K
& a- S) F2 G( ~' k: [1 [+ ?
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
4 X# S1 l0 k" U. m8 @这是AGV_putin中arrive的method。
, `/ t  C; @9 U8 {' ?, b1 y' _2 W- X3 T
当到达物料速度越高时,这个报警更多,

7 U" r" l/ O1 @# f1 B/ W: w另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-12-24 10:01 , Processed in 0.019057 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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