设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7936|回复: 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'  [+ m/ j% ]4 V! k0 G# e
*/
8 h4 p! d7 U& b" O& ?" m( C" `is$ [5 D3 T; ]8 N' f. h
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
3 ?% O$ X/ Q7 W8 K) |4 i" c8 m" @do6 {1 E" N* W8 b  l; c
        Lan := rootfolder.Internal.Tools.AOLlanguage;; U. g; _; q& m  Z
        if current = @.Destination -- else return, o7 G$ z6 |) t: U
        then
3 Z/ \! n+ k% k                @.Destination := void;0 E2 I2 j! H, g/ y
                if @.occupied then
! ~3 E! b6 b! s/ p2 P2 V                        part := @.cont;5 Q$ \+ i& u# u
                        @.transpOrder := void;! }, d1 y4 @6 l3 \; g
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
+ u" _% O5 z$ |. c" \                                @,root.eventcontroller.simTime);, F0 E2 H/ H. k* r/ V
                        @.HasOrder := false;
$ K$ y4 x& s" C" q9 u) Z4 S                        @.DrivingHome := true;3 {. l" x7 ^! Q1 o
                        rgManager.tryToStartTransOrder;
# y! I6 Y; ]9 g2 q. U2 g+ x6 [                        if @.Destination = void. V* T6 f# b& b
                        then -- no transport order for vehicle @2 Q/ b  l2 X4 z& E% p% [/ A; q
                                @.Destination :=
  P* ]7 }9 f2 d6 G* ~( s8 ^6 m                                rgManager.nearestFreeStation(@,track.~);1 H! x: N% B3 m, I4 [, t
                                newDirection(@);   $ X- }4 B8 k' S
                                if @.Destination /= void then* m1 \8 Q/ h' U  H2 @6 _
                                        @.Destination.NumReservation :=) m$ ]( T  F) K3 L) x0 O
                                        @.Destination.NumReservation + 1;. {" L/ Y; D6 s4 q
                                end;1 N% ]! @, ~! C" I0 R
                                @.CurrIcon := "drivingHome";
* b$ Q2 ?0 u. z& K2 \! o( c                                @.DrivingHome := true;1 s/ S1 f1 w# Z$ D$ J
                        end;, l8 g% O) _( [, [  i) F+ ~7 T% O
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
; N$ ]8 a0 c$ ?- m- s* T8 @4 _                        part := @.transpOrder;
- h% y" r4 t2 {* u/ u                        part.move(@);-- load part
  x5 k' X$ o8 j                        @.CurrIcon := "load";
% v: e+ v, ^! W/ Z                        GlobalDistObj := part.globDestination;3 w. {3 E* W, N8 Z! O8 d% D4 S
                        assignLObj := rgmanager.rgAssignL;0 g9 U" r. d( M: d+ T4 I% c+ e7 _
                        row := assignLObj.getRowNo(GlobalDistObj);" ^5 F, V1 n' c8 p
                        if Row = -1 then -- since 701 O# L; s3 n; x' G; A6 V) K, j6 E
                                if lan=1 then
( G# g/ _8 x" V- C                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),$ L5 F3 H) b' D% r" Y
                                                to_str("in der Andockstation: \"",?.~.name,"\""));- j% g8 q: M0 N/ c4 Q0 G9 }9 `
                                else3 y) v' R5 R2 p' l" j" D% N# I' y
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
* r. \* y7 @9 y6 O                                                to_str("in docking station: \"",?.~.name,"\""));                               
& J0 r0 C$ y" r, Q$ O1 A                                end;
( c+ x1 M  Q- `' u; r9 a                        else& A# v" [4 n! o. ^1 F% x
                                @.Destination := assignLObj[1,row];
; j* H6 h5 ?/ u2 K& ?) l/ f                        end;                       
6 T. r4 L6 g+ _4 U! v: q6 T                        newDirection(@);( o( a* l9 Q/ O) K* o
                        @.HasOrder := true;
$ w' u8 d" f* q4 |, W                end;  f. P2 s( ~- y' _8 I' x
        end;
7 g8 D! D  \( x3 A( A8 C+ Send;        -- of the method
, Z0 D" ~5 q$ I/ u
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
  ?# E  m6 h7 f4 ^+ X$ t" m/ `& r% g% L/ l4 L1 I# V
这是AGV_putin中arrive的method。
8 C" ?. t4 s: S& J) |, ]' J7 v9 o3 F- `# }: M: S
当到达物料速度越高时,这个报警更多,
1 i$ n4 M0 b) H# Y+ [2 ^8 b可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。0 E$ f0 \6 |% T& w- O5 C
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?+ l8 `1 {2 H8 d# U$ U4 R9 ~

  @" S. f' ~  r  k4 X# o2 e: B另外一个小建议,就是move,所有的move都可以这样
+ t1 E  P. Z0 Q0 ?, f0 ^if not move() then debug end! c" R8 F9 C5 p* D7 U0 }
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
# Q, v7 n4 G( E! w9 Lplant simulation中的free libraries有AGV模板,$ F9 n5 w8 ^& o- `* Z0 Q% G& Z; ]
里面也有案例。
; o# S2 U  z+ c, O- @' h3 O7 A我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。; k  u/ y% M2 f8 X/ Y

7 p/ o; f* P2 ^4 r我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
# _) }- z& m0 Z  n3 Z
' O" t: v: @7 A! o2 _3 N那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
2 ~: |3 T, p& m. a* z这是AGV_putin中arrive的method。$ w4 t$ E8 I5 b9 t6 `
0 X2 q* m! |! m
当到达物料速度越高时,这个报警更多,

$ _  {* ^* ]" f# z* p1 l另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-6 09:30 , Processed in 0.019876 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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