设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7092|回复: 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'
& a0 E1 Y7 m) }2 c# W8 M*/
) q% W5 A+ k3 P- p  M" i4 j0 i& R* Vis
3 X0 Y9 j1 t  C8 i' c8 e2 K        part, GlobalDistObj, assignLObj:object;row,Lan:integer;- [2 b* N: B4 ^
do
9 l1 n/ W5 T1 s% g        Lan := rootfolder.Internal.Tools.AOLlanguage;
7 i$ M9 [# }9 N$ ]* y- I8 v; ^        if current = @.Destination -- else return
* Q3 x1 F' u: x! D- O! N        then
* L" @0 E$ L: @! a+ D; u                @.Destination := void;
! D6 k; v. ~& U4 C% N0 }& ~- F4 b" }                if @.occupied then
9 s7 ]. o" \; U                        part := @.cont;
- M: L" @& f3 I' ]! Q! M3 c                        @.transpOrder := void;+ m* `& S7 u9 r6 e9 D7 g
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
  ?" {( H! c) v, D' l2 |9 D8 U) a                                @,root.eventcontroller.simTime);& K0 c3 W% E% x% j' }8 n3 e
                        @.HasOrder := false;# m# W& {$ \0 I
                        @.DrivingHome := true;* g8 [+ x9 |, o& {$ j* C5 z- z
                        rgManager.tryToStartTransOrder;, b1 K0 b$ B8 H& x
                        if @.Destination = void
0 l# P5 \. T8 {- ^                        then -- no transport order for vehicle @
8 c. B5 T; r1 n# }1 l5 R                                @.Destination :=
! S* u$ `  t' e                                rgManager.nearestFreeStation(@,track.~);" a8 o+ n2 d# B# c0 s% n* @/ ^
                                newDirection(@);   
7 L. g& b9 t. Q# Y; f                                if @.Destination /= void then
1 y: A5 `7 A+ b* {: h) o8 N: ~; ?                                        @.Destination.NumReservation :=
' L8 ]9 K' V3 Y/ j4 o% F( h                                        @.Destination.NumReservation + 1;1 P4 q& Z% n* P# R. C0 i0 s7 x& d
                                end;
  D2 x6 f  s  \' n" T                                @.CurrIcon := "drivingHome";; d% s' v8 u) h
                                @.DrivingHome := true;; I6 V1 J# E( @# `6 n! R
                        end;
. _* g! I7 z& @* c$ g8 M# K                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
1 ~- Z) Q- C3 g. x( X2 t                        part := @.transpOrder;
# x5 p( [  d5 }6 O  N8 o                        part.move(@);-- load part
, X+ R  |, y4 W" E8 g                        @.CurrIcon := "load";
5 z+ [  Z/ U$ k5 L                        GlobalDistObj := part.globDestination;. Q, w" u" c% I* l
                        assignLObj := rgmanager.rgAssignL;
7 {& m( s4 b, k) z7 L7 L                        row := assignLObj.getRowNo(GlobalDistObj);
4 r* g3 |- L( L# s* Q+ [                        if Row = -1 then -- since 70
) p6 r- S1 `4 ^                                if lan=1 then4 r( t' P% Q# q2 h& m
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),' o9 t! B7 ?' N% @
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
4 ]$ `8 a" b3 R1 b6 [                                else" T5 e7 T$ |: @) Q- |
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
6 s2 s: b" x0 d                                                to_str("in docking station: \"",?.~.name,"\""));                                ' j. M6 w# G& B- s! N
                                end;
* ~4 N; w) P" N0 W0 l. F8 [                        else
# F; ~8 n0 X+ K8 z                                @.Destination := assignLObj[1,row];
# K# X$ t1 K2 L3 y% b                        end;                        # V9 f8 O- B* |$ V" A
                        newDirection(@);5 y* w" _9 p/ y# {( Z% Y& h0 V
                        @.HasOrder := true;5 U$ R9 j  I+ ^: @+ N
                end;
  J- E, M) ?! J4 c" `, ?. {        end;9 h3 ]+ {1 W( z5 }4 i4 a
end;        -- of the method
! D0 ^3 a  M/ V
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 3 Q* I4 h2 o0 _/ l7 V% F4 H1 Q, A
/ @! l0 _) |- Q/ ^  k% Q8 v6 X
这是AGV_putin中arrive的method。
. A) R. ^9 y9 M' D9 O, Q5 \! {3 i
: z6 T, a( O" ]. ^9 S: n当到达物料速度越高时,这个报警更多,/ H. J2 o1 G* Z& `0 O$ u0 f
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
* N, S3 T7 R2 k# v7 z1 g( I% g程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
2 L* {* n+ ^- f
- u4 A/ |0 o/ [/ c3 l3 T) Y另外一个小建议,就是move,所有的move都可以这样& [9 Z$ u  m& ?6 a/ C
if not move() then debug end
+ }8 y2 e6 a" T这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。6 p7 S3 ]5 B0 \, c. y0 \1 @
plant simulation中的free libraries有AGV模板,
2 g3 ]6 N( V7 P0 _, m里面也有案例。, L- F9 g5 x6 J' C- P# O6 g
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
* S: c8 T" h- e2 j9 Z5 T- M9 m
; J8 V3 D0 N( y' ]: |我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
) y& P$ t+ Y. A& r8 p! c( s8 T: X; H; G+ q7 K3 U
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
0 O1 q8 ]7 o0 j这是AGV_putin中arrive的method。2 ^' t7 D5 ~6 }
; N& X+ g5 P% s+ O5 `
当到达物料速度越高时,这个报警更多,
  C1 c0 D# E. W% |, b% T' ~: b7 F
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 01:37 , Processed in 0.021588 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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