设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5617|回复: 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'2 J; {5 s' v0 G* X+ x/ F% W- y
*/$ k- C+ o5 h9 f  d1 c2 F, }
is
- y, ]) C& J- U) Q        part, GlobalDistObj, assignLObj:object;row,Lan:integer;& x( \2 p. U9 Q; A; w2 q  B. k
do
& x0 e- S3 O' k4 H5 y1 Y+ I        Lan := rootfolder.Internal.Tools.AOLlanguage;
) b9 N0 g+ k' J0 d% l        if current = @.Destination -- else return
% ]+ B  }2 S$ G  r        then
/ @5 w) ?+ o$ V; u- T                @.Destination := void;$ T+ }4 O9 _$ d- T: |2 ]
                if @.occupied then
; ], n; \5 `, \- J# N# m                        part := @.cont;+ U2 V& W3 Y8 d: {8 A0 a, C
                        @.transpOrder := void;
2 t& E) q' i9 l8 W                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
4 L+ l0 t" l0 ^; W                                @,root.eventcontroller.simTime);
, {* [* ~+ G+ g/ Z) `  m' Z                        @.HasOrder := false;
1 u3 a. c& r. F- h5 w3 H( T                        @.DrivingHome := true;- s$ G6 r5 o4 z" z7 s& s+ ]0 t% j
                        rgManager.tryToStartTransOrder;. I3 ~  m7 A: |! J' A
                        if @.Destination = void
$ k- k% `1 m1 g                        then -- no transport order for vehicle @: C9 l" [% C, E
                                @.Destination :=% i. u; w3 v3 U$ D% B, g$ u# U
                                rgManager.nearestFreeStation(@,track.~);2 r% b5 j! P$ y5 A
                                newDirection(@);   ( K3 q+ t- T, ?' j0 j9 t
                                if @.Destination /= void then
  I. `7 M3 b3 D/ k# J2 f" `; r# e                                        @.Destination.NumReservation :=# F" i% Y1 M" I) ]2 F! E
                                        @.Destination.NumReservation + 1;
2 b1 c" K8 ^2 q" C5 y9 \! d                                end;! ~2 f# u' x! a/ j% z
                                @.CurrIcon := "drivingHome";2 O# w, I$ a; x# u! F  b
                                @.DrivingHome := true;: _& y: T( N# |8 r
                        end;! O9 x$ F; ~( F# V: x. r- D2 M
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station- j+ t% u& f; t% [, g! z
                        part := @.transpOrder;
/ R% a. t' z4 n# h# O                        part.move(@);-- load part0 f7 c5 G* ?: z8 t: L
                        @.CurrIcon := "load";" C  z9 Y/ ~: G) P) a2 \. ?* c2 p
                        GlobalDistObj := part.globDestination;3 N1 s( r% N8 D: e
                        assignLObj := rgmanager.rgAssignL;
/ `/ W' E  h% M2 I, ^/ i6 {                        row := assignLObj.getRowNo(GlobalDistObj);
% z9 y; N& V( `0 H                        if Row = -1 then -- since 70* {6 ^0 G4 z3 q+ K1 I+ Q3 W) Z8 z
                                if lan=1 then) t2 i8 S& C/ P
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),3 T# |0 s0 T4 p& ?" V1 ?
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
: w& N' R* n2 l3 k7 ~                                else
. l4 N2 b6 S  }  ?                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
, |. N9 C5 h. y/ A0 ?2 S                                                to_str("in docking station: \"",?.~.name,"\""));                                ' I, F% b, I. ~& \
                                end;
5 l! G$ K: ~$ [1 m0 l, I0 z7 k! ]                        else
/ e# C  E; v0 y, I                                @.Destination := assignLObj[1,row];9 p3 V$ ]- w( b7 D# G
                        end;                       
( ~0 d+ }# \- f+ d8 ?                        newDirection(@);
/ W+ }7 l) @1 _9 r+ g( R. p( w/ r                        @.HasOrder := true;
7 b4 }* j. I4 p% m3 D  V- _2 L) e8 e                end;
. q, v- |0 ~. F; Z9 u        end;
  p3 W! x$ }6 vend;        -- of the method( }0 [1 r0 g/ n! I
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 7 E$ U# S+ O2 ^5 H0 D( [
1 ?; f) Y& Y% [' ~- k8 X! D
这是AGV_putin中arrive的method。
( J/ @% c  ]$ @/ q4 y9 h; S' I. ?% H. o" L* @- D! T
当到达物料速度越高时,这个报警更多,& n  q4 o+ n% i* x1 f
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
7 ]- n5 n+ \& f) A! \程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
1 ~' p/ ?' h9 [* W/ i, p  W4 ^3 e. O( ]* o" d2 p
另外一个小建议,就是move,所有的move都可以这样
8 Q8 c, F/ ^) i* ]if not move() then debug end1 W( t' ]# {. V% U: z7 C
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
3 B" X; A: Z# Q$ {$ r" V2 Hplant simulation中的free libraries有AGV模板,
9 h8 u. p3 R+ E" S里面也有案例。9 j7 n3 u. p2 S% ]5 i) j) M
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
6 Z, S' g, J4 h) j( G5 W* w. O6 q5 \% I+ t! y' K
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
9 U! m+ M8 `5 j0 A0 {- ]
/ A' E' E, M5 O" `! d' y那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
7 ^+ [; g8 G5 c" g这是AGV_putin中arrive的method。5 ~0 g, I! m4 H) J
8 c/ }! p' u* E' f) G6 x) f
当到达物料速度越高时,这个报警更多,
, Z% t3 w6 g% G/ f; K. _
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-12-9 10:37 , Processed in 0.016534 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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