设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9781|回复: 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'
6 ?- N- w& J- d) M6 S7 x6 }3 u$ g*/
0 o  d. |5 l  \is
) |) b6 i' @7 X) M6 c        part, GlobalDistObj, assignLObj:object;row,Lan:integer;: w  D: u) Q$ G
do
" S, c, E. ~2 j5 J# T        Lan := rootfolder.Internal.Tools.AOLlanguage;
7 W5 @9 C* Y; t; @) b        if current = @.Destination -- else return
' K) _1 \! e8 f8 Z' {+ U6 m        then' H3 W, @4 i- s6 @: M0 D$ `
                @.Destination := void;
! Q9 C) O5 \. ~) a1 D                if @.occupied then
' _/ n! B2 I$ m( N; p$ Q' S0 p1 ?                        part := @.cont;, S; r( {( N5 }( G* M
                        @.transpOrder := void;
6 ~* [6 B9 x5 @                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
3 H! X# n- G) n$ p5 @+ L                                @,root.eventcontroller.simTime);8 E! s$ D# B/ t$ f2 i9 i
                        @.HasOrder := false;
" i; \7 i# a& O* E4 w1 O3 M5 p                        @.DrivingHome := true;
! j5 P2 R  d) Q" q8 c" b! c                        rgManager.tryToStartTransOrder;9 ]8 ~5 T* S1 P5 G
                        if @.Destination = void
+ Z" ]1 g- C: V+ v. [2 Y" q                        then -- no transport order for vehicle @' H" Z: s6 }% A% ?7 F" x. H
                                @.Destination :=
$ W; r0 [6 s- x                                rgManager.nearestFreeStation(@,track.~);6 f+ ^8 B9 M% m! C  k2 s2 @
                                newDirection(@);   
: Y+ v) b' o. A, n                                if @.Destination /= void then
$ X' s3 Z* `3 U$ j3 [+ |                                        @.Destination.NumReservation :=
' m6 b$ Y, l' x" _' v                                        @.Destination.NumReservation + 1;
; j: G8 V$ ]; P; H                                end;
! ~- v  B0 a( q- y                                @.CurrIcon := "drivingHome";
2 m; U" H$ Z+ g1 c* K% B6 G$ O                                @.DrivingHome := true;
8 U; h! L6 E9 n2 z( |4 }  ^                        end;
& Y  Y# h9 K; R3 W                else -- the vehicle @ is empty, both vehicle and part are in the same dock station- w2 [. I/ v$ ^8 R7 N" }$ U
                        part := @.transpOrder;" s8 J1 i% }; b9 p: k7 b; e* S4 `
                        part.move(@);-- load part/ c1 T4 E+ p( a) ^
                        @.CurrIcon := "load";  W3 z0 T3 ?) s
                        GlobalDistObj := part.globDestination;
- R( Y7 e( Q" K% n% R; {# F$ q                        assignLObj := rgmanager.rgAssignL;5 a  E6 i7 e8 K& R6 k
                        row := assignLObj.getRowNo(GlobalDistObj);
+ a$ N# ]* p, p                        if Row = -1 then -- since 70
) o* {6 I% g. s) E$ S                                if lan=1 then9 E3 C( Q: x- n* ^5 N
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),! D6 M/ N$ |# Z) z7 R0 m
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
: c  C8 p: ]- k! _                                else/ A) z0 D6 I2 c8 j9 Q9 b9 i* U
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),; L' c) i! |  O9 X. s
                                                to_str("in docking station: \"",?.~.name,"\""));                                * C# I$ C; ~. n- N* P2 H: Z& x6 T
                                end;
& Q+ s- N8 K, l) `( i                        else
& F6 C" g; @5 `                                @.Destination := assignLObj[1,row];% B! k( J. S1 O* a; f! x
                        end;                        $ J) C; g+ i2 s/ A5 f* v: R
                        newDirection(@);
3 p8 e6 e' h& R$ J                        @.HasOrder := true;
7 M4 h) m: D; l+ ~' E+ w/ |                end;
8 r1 U% }% n# n- U1 U$ F9 t. H' b        end;$ L& ~9 k* C/ R, L3 f
end;        -- of the method
) _  J% {% u  _& B) l
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
; D  E% r- c; j- S4 b
. R% U+ W0 s9 }% j5 ^这是AGV_putin中arrive的method。; c- A5 M" Y* i8 z4 U8 X
, D- U6 ?0 R3 q$ b7 C1 Z. O4 N- x
当到达物料速度越高时,这个报警更多,( Q. |" J* s% P$ g: V0 K3 Y; c
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
+ Y0 u4 M8 t9 a) q( ~$ L程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?* b0 X3 s1 V0 [7 Y% w

# J- e! I, [( h% Y另外一个小建议,就是move,所有的move都可以这样
4 O, j" z# j! }if not move() then debug end* G! P/ v; u6 T3 p) S  C
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
* F' F& p0 s0 Bplant simulation中的free libraries有AGV模板,
( @" H8 m/ z3 \7 A; N8 p+ F里面也有案例。* w& q( ^  }' E
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。) q8 L1 o3 L8 f% G0 K

: |: f  y- ?- t# x. }我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 - F7 v: U1 [+ _1 |% a% D6 r. [
. x* N$ l5 O4 Z( ~, p
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 + K% I! M$ f9 F" v& N0 B
这是AGV_putin中arrive的method。1 F9 E# s' z: z7 U0 |! r2 W& b2 }

: W9 l* r6 q3 z# D5 ^- r$ i" c+ C& Y当到达物料速度越高时,这个报警更多,
7 c. t8 A. f: t; Z0 R  h
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-24 13:20 , Processed in 0.018836 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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