设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7317|回复: 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'
0 U! L' X+ @* A" U" |*/
% e7 f9 m/ H& w9 }- o% Lis- `- S$ g, @/ A  d
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
6 D5 y: R. Q& V' e1 q( X8 B9 ddo
- L! R% e! r+ J1 j+ o2 e        Lan := rootfolder.Internal.Tools.AOLlanguage;) d( G& ?* P8 P
        if current = @.Destination -- else return1 z( R5 }* K: ~2 l' M2 h3 r
        then
+ E" N; D4 g5 G$ H                @.Destination := void;
* C2 z) E9 C& t- z4 X. P                if @.occupied then+ a5 F3 c0 B& r) o% D7 j
                        part := @.cont;$ X' |/ _0 s3 n3 {; Z! i; F
                        @.transpOrder := void;
; N4 e2 u  \2 i                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
' p4 }1 }2 l( ]) W                                @,root.eventcontroller.simTime);
! f- ]6 w: z! X$ b                        @.HasOrder := false;
% i4 H* s8 Q) P/ {; C8 X                        @.DrivingHome := true;! e0 i, X* p6 O9 M
                        rgManager.tryToStartTransOrder;
8 b! ^4 [$ j: K" Z                        if @.Destination = void/ |0 A7 M$ L& c0 t) l1 A( I
                        then -- no transport order for vehicle @
. m6 ]3 a2 A1 d; l' I" u5 x  q- g                                @.Destination :=/ l/ j! |: `5 L" J
                                rgManager.nearestFreeStation(@,track.~);5 @1 ]7 c$ ^! K+ D% B
                                newDirection(@);   
( h+ L- w' Y/ I0 y8 ?                                if @.Destination /= void then( C( f9 \9 h" f1 m- g
                                        @.Destination.NumReservation :=
, e4 g9 c0 C, c/ p9 ~9 U6 ]) `                                        @.Destination.NumReservation + 1;
. B" E! [3 Q: z4 `: R8 J                                end;
9 V" ~) E# j8 f7 n- B9 w                                @.CurrIcon := "drivingHome";8 ?5 y; D; V3 `5 ?/ e3 z1 y
                                @.DrivingHome := true;
8 ^/ x" T7 E3 A' \  O                        end;' ^* {6 S7 p! L  v. s
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station$ A% \7 Y0 H& v& l  b3 N
                        part := @.transpOrder;+ f. C  k3 p9 i; W$ V( Q4 R, b
                        part.move(@);-- load part) Q! ^! n4 O! o+ O5 F7 K5 n
                        @.CurrIcon := "load";
0 P! V! x1 ?3 `8 k* f4 ^9 f                        GlobalDistObj := part.globDestination;
( W) a& T, f* t7 l8 t. f) X% c' P                        assignLObj := rgmanager.rgAssignL;2 Y0 n; `* }% I  Z6 \8 H! w( f- l
                        row := assignLObj.getRowNo(GlobalDistObj);* C: I! _6 e3 E& `* x# Z
                        if Row = -1 then -- since 70
4 v* O2 N3 g# G* D                                if lan=1 then  a' j- \# ^. @# x/ K6 `2 L6 I; g
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),& a# j( h. g! R: a  _& y
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
0 x! ^( L5 Y6 ^2 ^3 [                                else
& R; f8 D  }* D                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
4 z( N4 E4 D( b4 ^! p1 x$ M5 s% n                                                to_str("in docking station: \"",?.~.name,"\""));                               
* z' u* V# _4 `8 r, p& x- c                                end;* O! V( u# ]& E# v! Q
                        else* F3 S- M" ^8 @, H% g
                                @.Destination := assignLObj[1,row];
9 t5 N5 \) w3 [& `* i                        end;                        4 J: |" Z9 f! I+ Q6 z$ K
                        newDirection(@);
5 J' X+ ]4 [! s% Q                        @.HasOrder := true;9 @7 G( ^! G$ k' S  ?: N4 |
                end;* }3 ~, g0 d: R7 p$ z
        end;
7 q- L9 J( a" |  p9 Pend;        -- of the method
; L5 I8 |3 r/ ?
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 9 K2 w% F2 ]4 J
5 a9 U1 e+ l! r4 i
这是AGV_putin中arrive的method。2 _5 D" y! n1 _9 ~% j* ~
' [- O+ g+ E- `4 e. o
当到达物料速度越高时,这个报警更多,$ Q8 h, y# |6 y& x; K- e& ?" X
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
; j# {! S$ u+ j) P; R$ J程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?* q* I/ {) |4 R; A" t

4 K. }+ P! M. v: c0 K+ ~另外一个小建议,就是move,所有的move都可以这样
; D( m+ G7 r' F/ Qif not move() then debug end6 F8 A, z$ S6 e, g
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
6 d. O7 e- c4 @- N' J+ Dplant simulation中的free libraries有AGV模板,3 u* H. l6 O3 u( i
里面也有案例。
5 s+ Y( [# w6 O( l我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
" p4 r3 S. G8 Q$ O3 o2 |4 T" l8 u6 w6 [; |
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 5 {/ T$ W: K' I3 p* a# g8 B6 D* m

& c5 L/ f$ V1 {0 }* m' c" q那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 2 ~. p3 x. x7 `4 q
这是AGV_putin中arrive的method。
2 \3 P- q' `8 y4 l7 |2 i  V# g! N9 ^- R0 y6 |
当到达物料速度越高时,这个报警更多,
$ w3 ^6 ]7 L/ F' R& [0 O# V
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-3 16:08 , Processed in 0.019732 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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