设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9381|回复: 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'
+ L. V" P- l9 w+ _. r9 X, e*/
. X; D5 h! l* e7 @/ T2 `1 R0 p; sis1 c. k) }; Z* C( S, f# w
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
; F1 b- D  s. }" ]do! E' ?4 s/ A" D1 B
        Lan := rootfolder.Internal.Tools.AOLlanguage;
- l/ W3 V/ G2 N% G4 h        if current = @.Destination -- else return
# H0 e6 [' W3 [& e! n7 ?6 ~( y& x        then5 \  M% c0 K( _% [7 w- r3 l
                @.Destination := void;- j9 c6 q  i1 u% a# ^
                if @.occupied then
) x! M* K9 a# y, `( ]+ Z                        part := @.cont;! @; j1 e7 a' T6 s
                        @.transpOrder := void;
4 c% C9 Q5 b) k7 W                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,4 \1 U3 p- F% `0 z; V- ^
                                @,root.eventcontroller.simTime);6 t7 X5 W& a! F
                        @.HasOrder := false;
9 E- Y9 l  g0 ]- Z1 Y                        @.DrivingHome := true;8 [, |* U% r2 f6 ^% P' w# A' _  g9 y
                        rgManager.tryToStartTransOrder;
- k8 K3 l; @+ ~$ R2 S- `  X+ I                        if @.Destination = void
7 _: l2 [' j# t+ C                        then -- no transport order for vehicle @$ d6 V; _1 V, L6 ^! N
                                @.Destination :=7 y1 {8 h8 O7 A) M2 @4 S" r
                                rgManager.nearestFreeStation(@,track.~);
4 w+ L8 \% c% F) K                                newDirection(@);   7 R2 K& `. y* u7 i
                                if @.Destination /= void then
) G. G; J8 x* B3 z* v. o                                        @.Destination.NumReservation :=% y  `9 l" F0 q  _* N6 X0 l
                                        @.Destination.NumReservation + 1;; Z# g" J$ T2 k( _  F
                                end;
& }6 m0 L/ B5 ?' o2 A                                @.CurrIcon := "drivingHome";
" H3 ^! Y# ?1 D& u8 C0 m+ R. m                                @.DrivingHome := true;/ U8 z5 {+ r+ I! L$ @5 W
                        end;+ z7 j  ]3 U" S; Z' C- m3 o- P: d
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
! h( W' a- D/ r& T                        part := @.transpOrder;8 j, f6 o8 w; z* m
                        part.move(@);-- load part
5 N( l6 E( T" @; F) V6 b/ m                        @.CurrIcon := "load";
$ K& [7 m1 O1 b4 j* [                        GlobalDistObj := part.globDestination;
, J  n3 P8 W. R0 b# t  h- [                        assignLObj := rgmanager.rgAssignL;
3 b0 `/ M' g1 E& ~                        row := assignLObj.getRowNo(GlobalDistObj);
# f, B! l2 Y' q( q" V# c. q                        if Row = -1 then -- since 700 X6 Y6 f( q! ?
                                if lan=1 then
: N! E6 i" D$ i' V9 g. }                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
8 o) s3 _9 {9 e* d. w6 l                                                to_str("in der Andockstation: \"",?.~.name,"\""));, j5 a( i" J& B8 R
                                else
0 O8 b3 d% U% z+ U                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
! |" k0 U" C+ B. f8 `- c7 r                                                to_str("in docking station: \"",?.~.name,"\""));                                * n4 w* A( `5 }1 V9 R
                                end;
9 s5 x# P9 O! k4 V2 g7 s0 @. Y$ S                        else
' G4 N8 ?6 h" q2 q6 X                                @.Destination := assignLObj[1,row];) Z7 U, r) s' w& K+ U: A( q
                        end;                        ! ?/ D7 V: A" k" b9 A' l
                        newDirection(@);! Z4 I) Z. U7 K3 k7 e: q
                        @.HasOrder := true;. x2 Z6 E7 W" u# X
                end;/ h! M. F8 e1 T4 z2 z
        end;+ z) m+ w6 u3 V0 i$ |
end;        -- of the method
$ k3 T: X5 y  H) @
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 8 C; T) E) J& h$ e- i1 C
; T, K+ d1 c! J; b0 ?
这是AGV_putin中arrive的method。- q- C0 _. E9 a
$ _+ o3 b1 y! _' \3 M
当到达物料速度越高时,这个报警更多,6 h  `9 q: ~: F
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。) p  j* F( u, i4 B7 n3 d
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
* j# q2 G# M8 f' W0 C2 C+ k5 e: e- z; b
另外一个小建议,就是move,所有的move都可以这样
2 e$ s/ `" d) P% @" p+ iif not move() then debug end
% q6 H$ f' e9 I8 c# q# t这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
5 l3 e9 p# A. C+ C0 j# Jplant simulation中的free libraries有AGV模板,
% F# x% R, c2 W1 O1 j+ Q里面也有案例。' S- y+ {$ V+ d' X
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。2 n# k4 u9 U( I0 w

2 Y% G' E5 y: @; V9 {我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 8 G1 Y) w' i. @8 e- N
7 T* a' J' q8 ~9 i% R; i
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
. {' `" `& l! z这是AGV_putin中arrive的method。
8 o1 P+ y) A, b# g/ Z; a; K% M( q9 {2 \) M( W2 ]' R3 x2 @# W+ k
当到达物料速度越高时,这个报警更多,

" h# z! V! X5 W% S* i; k1 r另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-7-29 03:02 , Processed in 0.015960 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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