设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6698|回复: 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', i) V  L, f8 e0 X- Q1 {/ U
*/
& X0 ^4 p# R1 J/ [* \is0 t1 ?: p% ?% \( L
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;" y( C* Y% ?* P, J7 s( t
do, a0 n( `# l( S+ g' e1 j. p
        Lan := rootfolder.Internal.Tools.AOLlanguage;
+ u* E5 l% H9 F& h$ w+ f        if current = @.Destination -- else return
" u% @% o  @: O/ ^. s$ W9 ]- o        then7 J) F  h+ ?' Z* D
                @.Destination := void;1 Y& F: D( B& R5 c3 }8 p/ ~$ W
                if @.occupied then
, n4 ~% @1 y6 ]2 \6 |6 a                        part := @.cont;
- K: e* {, W" f                        @.transpOrder := void;$ I+ F' _  e; J3 S2 f- b0 |$ Q. X5 s$ Q
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,7 c6 n& `2 V& D5 G* I
                                @,root.eventcontroller.simTime);7 d% v5 w; [# h2 b6 G
                        @.HasOrder := false;+ z* v) R$ I0 k+ _$ |- y+ B
                        @.DrivingHome := true;
" A% i/ ^! ~' i                        rgManager.tryToStartTransOrder;
# l$ g( X8 N. U+ \& T                        if @.Destination = void. k0 |" j: R8 P! v7 J7 I
                        then -- no transport order for vehicle @
2 _, E! u1 o: F+ \2 R9 m: j                                @.Destination :=
+ j% i1 @& ?% `! ]4 ]: m1 n                                rgManager.nearestFreeStation(@,track.~);
7 ?" ]1 B* G5 S$ r& O- b                                newDirection(@);   
: z/ K, `, K# J4 b' }) W                                if @.Destination /= void then1 H0 }6 c* g; g
                                        @.Destination.NumReservation :=
$ m% |9 ^; m% a6 c. I                                        @.Destination.NumReservation + 1;5 T5 n. C7 X' |
                                end;4 `! F0 L8 z! h! V0 H' E
                                @.CurrIcon := "drivingHome";
) Y1 p' k+ |6 k7 i' s+ {                                @.DrivingHome := true;" E% C1 y* i) ~
                        end;
5 T; ^, I8 O/ H& x4 e                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
7 L* h8 ^' i$ N+ R- N                        part := @.transpOrder;
5 T9 o4 L. \  g2 @' a                        part.move(@);-- load part
5 Y8 ^1 @$ t: A* ~, r& o                        @.CurrIcon := "load";- H4 T$ }  _$ [, i& ^$ a
                        GlobalDistObj := part.globDestination;3 z$ e9 T  L/ `7 E  R6 D
                        assignLObj := rgmanager.rgAssignL;; {  n' A2 Z3 U- V( C4 K8 o" Y
                        row := assignLObj.getRowNo(GlobalDistObj);
' j# k: _/ p2 N1 i3 a                        if Row = -1 then -- since 701 d$ A/ |" p2 |
                                if lan=1 then
" I7 e- V8 I& v8 h. E                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
9 i* ~& `; V+ _$ E$ l( G% \                                                to_str("in der Andockstation: \"",?.~.name,"\""));5 b; D1 V. R5 d4 e: h7 w
                                else
; o8 f0 u: T# k                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),' ?- \" Y4 x6 D7 u" z. l: x
                                                to_str("in docking station: \"",?.~.name,"\""));                                6 o, j# Y7 _0 f) ~6 l: X& S0 m6 ^, G
                                end;
6 M- E: G, r1 j5 t                        else
" K* x% r) {' I& @. S5 z                                @.Destination := assignLObj[1,row];+ g/ Q) Z% @8 V' E8 U: D. `
                        end;                        5 H/ O: q# |/ X" V; t3 F4 U
                        newDirection(@);) u9 i, d! o& x6 V4 {4 y7 m
                        @.HasOrder := true;
4 ~+ C% Y5 @7 ]                end;% B2 z- k! G* G9 T
        end;
8 \' X# S& y) L- z8 aend;        -- of the method
2 ~; G" i# h( I- ^
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
" D/ d- P) j8 ?" w
% q  L( |9 f( I) n" f" @9 ]6 k" ]* N这是AGV_putin中arrive的method。
. J0 P) Q1 j) F" N5 G4 @! J6 u- z# T
' d5 k& G5 ~7 v/ I当到达物料速度越高时,这个报警更多,
+ G" G% g5 \' n9 }: W: N可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。  }  N% S# p0 K$ j( c1 Y
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?+ c8 M9 Q7 t, E1 d: ~! I4 c

* |4 r! ^- Z1 z, i另外一个小建议,就是move,所有的move都可以这样% i4 H( C8 j0 H! s* q2 ^
if not move() then debug end- j( W/ J3 f) t6 N
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
; J* Z0 X7 }& R. [, X% m3 o6 Cplant simulation中的free libraries有AGV模板,( v" n: s9 o& N  R  f& A; B
里面也有案例。  e' g# U/ u. {5 J: P$ m: B
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。1 `: F5 a# h0 ?/ r$ P. L; Y. `0 l$ X

8 n6 c& U: W! }6 i1 P我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 4 x' \0 d1 E$ [0 g% C
- d+ G0 U7 U$ Z1 _5 q
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 4 O7 B) a- B' s( O
这是AGV_putin中arrive的method。
  u$ K  H+ ]% K  e/ m9 C
, ^* D% }5 Y; W8 w+ k( w0 T4 F# ]当到达物料速度越高时,这个报警更多,
$ j! f( p5 s# V; J% j- u
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-21 13:58 , Processed in 0.119710 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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